diff --git a/lib/111tv[自动].js b/lib/111tv[自动].js new file mode 100644 index 0000000..5986046 --- /dev/null +++ b/lib/111tv[自动].js @@ -0,0 +1 @@ +dmFyIHJ1bGU9ewogIHRpdGxlOiAiMTExdHYiLAogIOaooeadvzogIuiHquWKqCIsCiAgaG9zdDogImh0dHBzOi8vd3d3LjExMXR2cy5jb20iLAogIHVybDogIi92b2RzaG93L2Z5ZmlsdGVyLmh0bWwiLAogIGZpbHRlcmFibGU6IDEsCiAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQSsyYmEwOGJSeFNHLzh0K2FpVXFlVzNNSmQ5Qzd2Zjd0Y3FIdEVJcWFwcEtUVnFwaXBBQVkyTk1zQUVCRHNHQk51RFlVSHlCRU5mWVhmZ3plL08vNk5wejVweXpyUlE1aGJUUXpJZEllWjkzZDNablptZk9xM0h5VEFzR3RHTmZQdE8rN2Y5Wk82WTVtM1ZyYVVMcjBCNC8vSzZmNjU4ZVB2cXh2M1hoWXc5YjBYd2prbTlpVDNnTkRIWUk3c3krYzNNeGF6ejNXZC9BbzRHdnZEK2Z3MFZkT2w1a0xScG1MZWRkSk84bnE3Rzh4bmlRMnQxTk1oNmlwbEpseGp1UjI5VVM0ejNFMDFuR3c4ak5hc2FhVEp1MWw4enRvcWRFSzJaOUh2c21MK2pXQmg4MEx4RWo1eGwySkVvamgvbzlJMGRQbU05UXd5Q3c3L0ZOYUlnRTltZDR5aDZhQnc4RXRwbkltMFpHdGlrRXRwbWJ0bmJxc2swaDhENThjUkw0dlBnTHN6WXVueWVFOU56Q0crdjVPbmdnOEhtSmttTklEd1RONGFxN2dzOFRBcitIVnpQMmk2dzFYTEVpS2JqQ2g3Q05Zc1dxRldRYlFxQ1hIYU8rZ2tBdkdiTlNXOUlUQXQrNW5yS2lWZm5PUXVEM3N2T3IvV29hUEJBNFJwR292VkNTWXlRRVBtOHU1bzJhZko0US9DTnlTd1UzUDBRZkVlcTJQcUpGdzd0ZU5pNEVUczdFSm5rZ3NLTmJxK1NCd0FsSUc5N0NJSnMwVzdMTUZvSXROL0pBc0VWbEZTUHliWVh3cmFlZGJiTnVzUFVrZFR0REVReDRtNEhjbmRpKzRJa1E4UkRuUWVKQnpuWGlPdWNCNGdIRzlWN2szbDhaN3lIZXczazM4VzdPdTRoM2NSNG1IdWFjK3F2ei91clVYNTMzVjZmKzZyeS9PdlZYNS8zVnFiODY3MitBK3V2OTFUZUJoYlJkbW1RVEtQVmZKaEF4bjhEakFJNGo2UVBTaCtRRWtCTklUZ0k1aWVRVWtGTklUZ001amVRTWtETkl6Z0k1aStRY2tITkl6Z001aitRQ2tBdElMZ0s1aU9RU2tFdElMZ081ak9RS2tDdElyZ0s1aXVRYWtHdElyZ081anVRR2tCdEliZ0s1aWVRV2tGdEliZ081amVRT2tEdEk3Z0s1aStRZWtIdEk3Z081anlUd2hmeFdBcjRQeFU3T1dMVVVmU2lvL1IrS25hNDAwdHRrZXVqcGdIY0Q3c20xbWwyZTlmbmZERHg5UWx0Z2FkU0t4M3orazYrLy82Ry8rUzRQT3JSZzczNWpFQzEzVVcyZDhUR3dRclJpUkhGbkZpMHlVZHVaeGZKUHEwUXppNWF5cVByTW90VXZpamV6YU1NUXRadFp0TWU0eGJKbHpER0x0aVV2QWxuRzV0K3pIWFhQamlUc2taZDBjeGZyUTZ2c000dkZ1TmhNWTJHTldTekpqV3c0ODlQTUNxdlVkU0NwSzVGM1p1djBuazNSVG1LeUMyL00zVi9rdXdqaG4wWjVueEI0MzlJNkpSOFE3WXlubUgvcENlSC8yREJwdFVRNzZVMUVTRitlcERibng5enhtbXhUQ096ZmJsR3NBTmxGMU8xazJmZGxUWGR2eXBzRE9ZdEMwS2htS0d1Q1FHOTB6L2xOOWdRRWpvQXg3ZFF6dmhmMm9VODBkOXB2NTVnbkJFM3c3NnduUXRCOVpYNWZXV1ZabFdWVmxsVlo5akJtMlZEUFByTnNpSmExdFpwckxNU2MraDlVRmtPMEdUUVAybEpsbjl2SjBtQTY2KzNNZnBjV29yMlJjM2FUZmpkNGNPbXVNVFR1NUlaa2dSQ0Nra1BVSGwzRzVOQVNsSC8zM0hKY2xpd2g4TDZaZ3AyUTlSWUVkVFpxVjJYaUFFSEY2cTI1TTRYRnFpV3dETzRtR3l2eVhVQ2dWMXUzaWt2U0V3S2Z0N2pGa29vUUZOU1g3VzFNbWtMUWxGWHRlTXFzelZEaThDRWNoKzNYWG02UzR5QUV0ckU1NGc0L2wzY0w4WW5tQ1ZYN05WWDdOVlg3VmUwL0hMVy9NN1RQMnQvSnpwYlNXVHV6NFRzcTZHUkhNNjM2N1hkcEtjT3ZmRDZYTmdDUkcvd3ViUnZpQnplL1M1dU5NN2RPeHpiaFhuVWVwTTZEWktwVDUwSHFQT2dEODVzNkQxS1pVR1ZDbFFuLzE1bVEvN2FwSXBLS1NDb2lxWWgweUNPU3FyQ3F3aDZkQ2h2V1ZZVlZGVlpWV0ZWaGowNkZWWWNRa3F0RENFMUZKQldSUG5KRUN1N3poNmt3TFNNck5la2FHMDdjWUQ4RThmOFYxcXh4Wm4yQlFrR1kvV3lWcmpock5XZHR6NjBrcEVzTDNSMmR0cmVYZkFVK1ROdURreXliOVpWR3hMQ3FJOUtsVGFVeDhzNHVwM3pGTGR4emtQK2dKZWEreHVJaUJIcVpxajBrMHhFSWZPbmhzdVhsdXJ3TU9xUnh3TW9wSzF0eEp0S3lXcURHTm1ZelZsRU9Kb2ovS3JIKzY2bjBZeVJQbFM3L1licjhrQVNwS3FTcWtOcFJxWkNEZndKNk9wVkRpejBBQUE9PSIsCiAgZmlsdGVyX3VybDogInt7Zmwu57G75Z6LfX0tLXt7Zmwu5o6S5bqPfX0te3tmbC7liafmg4V9fS17e2ZsLuivreiogH19LXt7Zmwu5a2X5q+NfX0tLS1meXBhZ2UtLS17e2ZsLuW5tOS7vX19IiwKICBmaWx0ZXJfZGVmOiB7CiAgICAyMDogewogICAgICDnsbvlnos6ICIyMCIKICAgIH0sCiAgICAyOTogewogICAgICDnsbvlnos6ICIyOSIKICAgIH0sCiAgICAzODogewogICAgICDnsbvlnos6ICIzOCIKICAgIH0sCiAgICA0MzogewogICAgICDnsbvlnos6ICI0MyIKICAgIH0sCiAgICA0OTogewogICAgICDnsbvlnos6ICI0OSIKICAgIH0sCiAgICA1MTogewogICAgICDnsbvlnos6ICI1MSIKICAgIH0sCiAgICA1MjogewogICAgICDnsbvlnos6ICI1MiIKICAgIH0KICB9LAogIGNsYXNzX3BhcnNlOiAiLm5hdmJhci1pdGVtcyYmbGk7YSYmVGV4dDthJiZocmVmOy4qLyhcXGQrKS5odG1sIiwKICAgIOaQnOe0ojogIi5tb2R1bGUtaXRlbXMmJi5tb2R1bGUtaXRlbTtzdHJvbmcmJlRleHQ7aW1nJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0O2EmJmhyZWY7Lm1vZHVsZS1jYXJkLWl0ZW0taW5mby0tc3Ryb25nJiZUZXh0IiwKfQ== \ No newline at end of file diff --git a/lib/360ys.js b/lib/360ys.js new file mode 100644 index 0000000..a8f063c --- /dev/null +++ b/lib/360ys.js @@ -0,0 +1,30 @@ +var rule = { + title:'360影视', + host:'https://www.360kan.com', + homeUrl:'https://api.web.360kan.com/v1/rank?cat=2&size=9', + detailUrl:'https://api.web.360kan.com/v1/detail?cat=fyclass&id=fyid', + searchUrl:'https://api.so.360kan.com/index?force_v=1&kw=**&from=&pageno=fypage&v_ap=1&tab=all', + url:'https://api.web.360kan.com/v1/filter/list?catid=fyclass&rank=rankhot&cat=&year=&area=&act=&size=35&pageno=fypage&callback=', + headers:{ + 'User-Agent':'MOBILE_UA' + }, + timeout:5000, + class_name:'电视剧&电影&综艺&动漫', + class_url:'2&1&3&4', + limit:5, + multi:1, + searchable:2, + play_parse:true, + lazy:'js:input=input.split("?")[0];log(input);', + // 疑似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: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=200;let vod_play={};let sites=data.playlink_sites;sites.forEach(function(site){let playList="";let vodItems=[];if(data.allupinfo){let total=parseInt(data.allupinfo[site]);for(let j=1;j0){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', + lazy:'js:if(/m3u8|mp4/.test(input)){input}else{let purl=request("https://www.8090g.cn/jiexi/?url="+input);input={jx:0,url:JSON.parse(purl).url,parse:0}}', + +} \ No newline at end of file diff --git a/lib/360影视[官].js b/lib/360影视[官].js new file mode 100644 index 0000000..fcd337f --- /dev/null +++ b/lib/360影视[官].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJzM2MOW9seinhlvlrphdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy4zNjBrYW4uY29tJywKICAgIGhvbWVVcmw6ICdodHRwczovL2FwaS53ZWIuMzYwa2FuLmNvbS92MS9yYW5rP2NhdD0yJnNpemU9OScsCiAgICBkZXRhaWxVcmw6ICdodHRwczovL2FwaS53ZWIuMzYwa2FuLmNvbS92MS9kZXRhaWw/Y2F0PWZ5Y2xhc3MmaWQ9ZnlpZCcsCiAgICBzZWFyY2hVcmw6ICdodHRwczovL2FwaS5zby4zNjBrYW4uY29tL2luZGV4P2ZvcmNlX3Y9MSZrdz0qKiZmcm9tPSZwYWdlbm89ZnlwYWdlJnZfYXA9MSZ0YWI9YWxsJywKICAgIHVybDogJ2h0dHBzOi8vYXBpLndlYi4zNjBrYW4uY29tL3YxL2Z5ZmlsdGVyJnNpemU9MzUmcGFnZW5vPWZ5cGFnZSZjYWxsYmFjaz0nLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcl91cmw6ICdmaWx0ZXIvbGlzdD9jYXRpZD1meWNsYXNzJnJhbms9e3tmbC7mjpLluo99fSZjYXQ9e3tmbC7nsbvlnot9fSZ5ZWFyPXt7Zmwu5bm05LujfX0mYXJlYT17e2ZsLuWcsOWMun19JywKICAgIGZpbHRlcjogIkg0c0lBQUFBQUFBQUErMllTMDhqUnhDQS80dlBIR2JNdnJLMy9JSmNvcjFFcTRnRFVxSWxiTFFoa1ZZckpJTnQxallQQTh2TGEyTWdZSnRsTWRoQWlEMWU0ejh6M1RQK0Z4bTdYdTBvR3MyQlFCUng4MWZWWFYzVjNWTlY3WGN4Ty9iOHUzZXhWNU52WTg5alhyT2p5b3V4c2RqMHhFK1RKdjgyTWZYcjVIRGdkQ0JXNmVOKzhuZ2dEaUEyTzRiU3JaTEsxbENLUURvdjA5VEpOT29RZUY3dTJPMldhQjRBNmZUY3FrNXNvUTZCYmRiV1ZMdEROZ0hZWnJZbTZ5SHd2Tnk1MXoyaGVRQThyL0plYkNLd0w1a2QxOG1TTHdDc216LzF0dFpJQjJERTUyMTBKTDRCOEx5dDkzN1dvWGtBN0tkem9ycWI1Q2NBNmR3disvNVpBM1VJYkxPKzVHZktaQk9BZmNrZitZZThMd0NzVzFsUStRdlNBYkROWkU3UGZ5U2JBT0pMMVZ0ZFlGK0d3RGJUMTI2SHpnOWg5dVZBQ3hkT2xScHF5WkVMeHh6cHdpMmtnL0ZrL0tqV0w4akNicXV1aXQxK3RhQmI1emdDWVhTRXlqZDArNFkzWkFnYzlHVWpHRUZCQS9EaDNLeUlEb0YwL2IxUG9rTmdtOXNWWFRvbG13Q3kzcWE1M3FZNXoxOXNpZzZCOStIbVQ5RWhzRzY1b1p3cTZRQWlIMDc3eXUwY0dvZERIT1Z3NGxiOEVjcUdQdzM1dU1qSFRYbGM1SEZUYm92Y051V1d5QzFEYm4vRjh1Q25JWDhtOG1lbS9LbkluNXJ5SnlKL1lzb2ZpL3l4S1pkNGJUTmVXK0sxelhodGlkYzI0N1VsTHR1TXk1SzRMRE11UytLeXpMZ3NpY3VTdUhUeFNtOS9RczNVelBkdkp5ZmVqSnk2WGxsWFRsNU9uWG4wMUhVcDRmZld2R1JkNyt5anRUY1QwNjkrZUQwalN3Mkh1SzNjNkpDcGlabkpYMFpHcWZ5MnFuVDk4NVF4NnVmWFAwN1BEQng3T1JhTDMxYUo4bzhUVWhZUW9wU00wQlFYVXZiQ3lrSS8yVld0ZWNvU0FHeHo3bG9sODJRVElGSUtYeWk2emlMcEFEajJlbFV0VWRsRGlKTDZWYTZwZXR0Y3ZvYkFXYkJTOXM5M0tRc0M4SHFONWFCSTBub0FIUHZ1dXQ2cFVPeERNTGROblYwcnAwNUxEbUZFSGRZd0pOTzZRQmtmUVFwajFiMmhtNGdRcVptNHV5SUdjRmRGTEt3WWhSV3hzT0lYVnFqMFZrUGw5dFh1QVRjOHhBOWw1NkhzL09mS3p2aXRsWjFVVStVUHZWcUNQZ3RtL3FKS2U2N2p5QWhoOW5lMTdKMXlLUUhnYnpXUmxha0lrcncrcTJWdUFBSFlyN09lMzhpUVV3Qm1JazN0R1lrMEFQWjJZMDlmY2JJRTRIbUZqKzRYZmlrQVNFNjVkTnVybkZPR3dMN01MYWtTdllRUWpIelRQeVJmRUNTSFhhc0dyd2ZBdWxaTFo2aU1JdkMrTk5aVXFrZjdBc0JadGZ2Qm42ZHlpR0MreXM3b2RZVmdGQkc5V1pBaU1nRDVBQzZNbHg1QWxCZWJmL1c3MTZFWUVIaGVzK3QzNld3UldMZGUxemtxc1FqL2oxZFoyQXZxdEJaY0Q5SUIzRXVTR2VhUFI3ZVZQd0pQL0FOT0RRQlJHcGRCYVE1dWR1WFNLTlhBL0VYV04yUTJBcy91NUZXNlJWTUJvalNGWVYrV1dsanZGNmdNSUVUSmNIcmxXQnB3Qk5iTkxYcVpKdWtBV0hmUjBTbktjQWpzUzd1ams3UTFDRHh2LzBBVnFRTkZNTnBQTDhzeEFNaTFjS1RwUmVDcjdWeW9PbVUvQkxhWjZnWGZQZGtFNEF6UVd3MVdvUXdBRU9XQm9STW40aWNDNjBMK3kvS0tPVjJnVElVUTByakx2TThWNHpFQUlMcXl6dkVOQm9qU3pudEhOMUpORU9RaHRHZzgyQUQrVmsremRQVENVc1ArVU4ybU1ZS1pSbnp6NG10Ukk1RHUyeGVpZ3Q5R2ordHRub3o4NXpjaWtqZk9rdGY1TVByZm9DbTZrM3djbGt2L3NjbC9hTlB2dlUyWGVHMHozbiszZlE5QTRyWE1lQzJKMXpManRTUmVTK0lkZVFZZzNGZUJudjBMZkw5ejdmd1lBQUE9IiwKICAgIGZpbHRlcl9kZWY6IHt9LAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfbmFtZTogJ+eUteinhuWJpybnlLXlvbEm57u86Im6JuWKqOa8qycsCiAgICBjbGFzc191cmw6ICcyJjEmMyY0JywKICAgIGxpbWl0OiA1LAogICAgbXVsdGk6IDEsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICdqczppbnB1dD1pbnB1dC5zcGxpdCgiPyIpWzBdO2xvZyhpbnB1dCk7JywKICAgIC8vIOeWkeS8vHQ05LiT55So55qECiAgICAvLyBsYXp5OidqczppbnB1dD17cGFyc2U6IDEsIHBsYXlVcmw6ICIiLCBqeDogMSwgdXJsOiBpbnB1dC5zcGxpdCgiPyIpWzBdfScsCiAgICAvLyDmiYvliqjosIPnlKjop6PmnpDor7fmsYJqc29u55qEdXJsLOatpGxhennkuI3mlrnkvr8KICAgIC8vIGxhenk6J2pzOmlucHV0PSJodHRwczovL2NhY2hlLmpzb24uaWN1L2hvbWUvYXBpP3R5cGU9eXMmdWlkPTI5Mjc5NiZrZXk9Zm5vcnlBQkRFRkpOUFFWMjY5JnVybD0iK2lucHV0LnNwbGl0KCI/IilbMF07bG9nKGlucHV0KTtsZXQgaHRtbD1KU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKTtsb2coaHRtbCk7aW5wdXQ9aHRtbC51cmx8fGlucHV0JywKICAgIOaOqOiNkDogJ2pzb246ZGF0YTt0aXRsZTtjb3Zlcjtjb21tZW50O2NhdCtlbnRfaWQ7ZGVzY3JpcHRpb24nLAogICAg5LiA57qnOiAnanNvbjpkYXRhLm1vdmllczt0aXRsZTtjb3ZlcjtwdWJkYXRlO2lkO2Rlc2NyaXB0aW9uJywKICAgIOS6jOe6pzogJycsCiAgICDkuoznuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKGlucHV0LCBmZXRjaF9wYXJhbXMpKTsKICAgICAgICBsZXQgZGF0YSA9IGh0bWwuZGF0YTsKICAgICAgICBsZXQgdGlsdGUgPSBkYXRhLnRpdGxlOwogICAgICAgIGxldCBpbWcgPSBkYXRhLmNkbmNvdmVyOwogICAgICAgIGxldCB2b2RfdHlwZSA9IGRhdGEubW92aWVjYXRlZ29yeS5qb2luKCIsIik7CiAgICAgICAgbGV0IGFyZWEgPSBkYXRhLmFyZWEuam9pbigiLCIpOwogICAgICAgIGxldCBkaXJlY3RvciA9IGRhdGEuZGlyZWN0b3Iuam9pbigiLCIpOwogICAgICAgIGxldCBhY3RvciA9IGRhdGEuYWN0b3Iuam9pbigiLCIpOwogICAgICAgIGxldCBjb250ZW50ID0gZGF0YS5kZXNjcmlwdGlvbjsKICAgICAgICBsZXQgYmFzZV92b2QgPSB7CiAgICAgICAgICAgIHZvZF9pZDogaW5wdXQsCiAgICAgICAgICAgIHZvZF9uYW1lOiB0aWx0ZSwKICAgICAgICAgICAgdHlwZV9uYW1lOiB2b2RfdHlwZSwKICAgICAgICAgICAgdm9kX2FjdG9yOiBhY3RvciwKICAgICAgICAgICAgdm9kX2RpcmVjdG9yOiBkaXJlY3RvciwKICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IGNvbnRlbnQsCiAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBhcmVhLAogICAgICAgICAgICB2b2RfcGljOiB1cmxqb2luMihpbnB1dCwgaW1nKQogICAgICAgIH07CiAgICAgICAgbGV0IGRlbHRhID0gNTA7CiAgICAgICAgbGV0IHZvZF9wbGF5ID0ge307CiAgICAgICAgbGV0IHNpdGVzID0gZGF0YS5wbGF5bGlua19zaXRlczsKICAgICAgICBzaXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzaXRlKSB7CiAgICAgICAgICAgIGxldCBwbGF5TGlzdCA9ICIiOwogICAgICAgICAgICBsZXQgdm9kSXRlbXMgPSBbXTsKICAgICAgICAgICAgcHJpbnQoZGF0YSkKICAgICAgICAgICAgaWYgKGRhdGEuYWxsdXBpbmZvKSB7CiAgICAgICAgICAgICAgICBsZXQgdG90YWwgPSBwYXJzZUludChkYXRhLmFsbHVwaW5mb1tzaXRlXSk7CiAgICAgICAgICAgICAgICBwcmludCh0b3RhbCkKICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDwgdG90YWw7IGogKz0gZGVsdGEpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgZW5kID0gTWF0aC5taW4odG90YWwsIGogKyBkZWx0YSAtIDEpOwogICAgICAgICAgICAgICAgICAgIHByaW50KGVuZCkKICAgICAgICAgICAgICAgICAgICBsZXQgdXJsMiA9IGJ1aWxkVXJsKGlucHV0LCB7IHN0YXJ0OiBqLCBlbmQ6IGVuZCwgc2l0ZTogc2l0ZSB9KTsKICAgICAgICAgICAgICAgICAgICBsZXQgdm9kX2RhdGEgPSBKU09OLnBhcnNlKGZldGNoKHVybDIpLCBmZXRjaF9wYXJhbXMpLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZvZF9kYXRhICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZvZF9kYXRhLmFsbGVwaWRldGFpbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9kX2RhdGEgPSB2b2RfZGF0YS5hbGxlcGlkZXRhaWxbc2l0ZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2RfZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvZEl0ZW1zLnB1c2goKGl0ZW0ucGxheWxpbmtfbnVtIHx8ICIiKSArICIkIiArIHVybERlYWwoaXRlbS51cmwgfHwgIiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9kYXRhID0gdm9kX2RhdGEuZGVmYXVsdGVwaXNvZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2RfZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvZEl0ZW1zLnB1c2goKGl0ZW0ucGVyaW9kIHx8ICIiKSArIChpdGVtLm5hbWUgfHwgIiIpICsgIiQiICsgdXJsRGVhbChpdGVtLnVybCkgfHwgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBkYXRhLnBsYXlsaW5rc2RldGFpbFtzaXRlXTsKICAgICAgICAgICAgICAgIHZvZEl0ZW1zLnB1c2goKGl0ZW0uc29ydCB8fCAiIikgKyAiJCIgKyB1cmxEZWFsKGl0ZW0uZGVmYXVsdF91cmwgfHwgIiIpKQogICAgICAgICAgICB9IGlmICh2b2RJdGVtcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBwbGF5TGlzdCA9IHZvZEl0ZW1zLmpvaW4oIiMiKQogICAgICAgICAgICB9IGlmIChwbGF5TGlzdC5sZW5ndGggPCAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgfSB2b2RfcGxheVtzaXRlXSA9IHBsYXlMaXN0CiAgICAgICAgfSk7CiAgICAgICAgbGV0IHRhYnMgPSBPYmplY3Qua2V5cyh2b2RfcGxheSk7CiAgICAgICAgbGV0IHBsYXlVcmxzID0gW107IGZvciAobGV0IGlkIGluIHRhYnMpIHsKICAgICAgICAgICAgcHJpbnQoImlkOiIgKyBpZCk7IHBsYXlVcmxzLnB1c2godm9kX3BsYXlbdGFic1tpZF1dKQogICAgICAgIH0gaWYgKHRhYnMubGVuZ3RoID4gMCkgewogICAgICAgICAgICBsZXQgdm9kX3BsYXlfZnJvbSA9IHRhYnMuam9pbigiJCQkIik7IGxldCB2b2RfcGxheV91cmwgPSBwbGF5VXJscy5qb2luKCIkJCQiKTsKICAgICAgICAgICAgYmFzZV92b2Qudm9kX3BsYXlfZnJvbSA9IHZvZF9wbGF5X2Zyb207CiAgICAgICAgICAgIGJhc2Vfdm9kLnZvZF9wbGF5X3VybCA9IHZvZF9wbGF5X3VybAogICAgICAgIH0KICAgICAgICBWT0QgPSBiYXNlX3ZvZDsKICAgIH0pLAogICAg5pCc57SiOiAnanNvbjpkYXRhLmxvbmdEYXRhLnJvd3M7dGl0bGVUeHR8fHRpdGxlYWxpYXM7Y292ZXI7Y2F0X25hbWU7Y2F0X2lkK2VuX2lkO2Rlc2NyaXB0aW9uJywKfQ== \ No newline at end of file diff --git a/lib/4khdr.js b/lib/4khdr.js new file mode 100644 index 0000000..ede438e --- /dev/null +++ b/lib/4khdr.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/4k剧院.js b/lib/4k剧院.js new file mode 100644 index 0000000..d3c6239 --- /dev/null +++ b/lib/4k剧院.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/539影视.js b/lib/539影视.js new file mode 100644 index 0000000..e67428e --- /dev/null +++ b/lib/539影视.js @@ -0,0 +1 @@ +IiwRBO9WBcJSCmBx2IHjSBAik11HK/dFUBpFGISIPU139b//C+X/3ZGXUTe9njGTotqWSMZ0mm7tnk4C1z+id0nEGZWus2LHwwJQEgfXxQktoU7S1sA+gc55LEkoVQa49zHdtm9mZBodqbx/1bvqmlFqw+F5ziXv6p+NsDNb0aBZXu85ebgYLWovQAh+xw9rDgnevBlGpKZAfHIZ7YBes7E/isKd/Z//0vdW+tX24USKQeuRF3gGM89OGWyqn6Mz2rumlzWOho6uhNVNhACdXZKD1FzIJQGw20C7OO2GpIQCDX+jsB1V4lPkw7dm0tWf4gyrNxpp/SQP/kYPMWl10uAarX+j5PJxVtpv77wIFXlPnBQ2+E5iqAQR+fjeVGt9iFT0vC9McLMgUE5JxjSSih7ghLO0FBGs+1ltjJ1C9QchgD2OIE2S5F7rkMa0NAhYBSL/tNK9jxx0RS/30LziJsYGuxOlTwdBjkQdmblNnz947a9Bp7NBSsnBH5eI24NMsTrHwlduVDhHGlPMNDHHasOT88x+E5J597SVmpoKJXn+X0lSgungXp9DalThP/oD5irodctxiVBuxSLmTVO0+MYAgDfWR5bRLbPQIt8Sfy669magwh7KbGzZ9VfOBec2y29GCC6BXXjA3uTZ2AnTwtPyE7REitD9m3QaqVKru3P/0pV9ckIcddqBIf8Kv+j8Y8WmOiP8YLihlIpG+bSrKLA2SB2gFcAi4o7/KFdolQ23/Gg10ZsS7Ygw7cxR2+pmE56CMn2/3/uj5g5DY80UFE48zXzueYDumUq+51XcpSXGzJoyGckC3UEWHWSAgq4nMqK+8pkBPzFwQc6W8klojX72RQRO5Dx9OKvlakphEGahfFjFTFk3xVtbuPM10G9QsbBW4+vvaWm1Y+4TAfQ1lkHxu4/6AlI/zSmM7SF1GLTrt40w1LFgr0+oMWgPF5jGlzzReIs2UmhY7auiNtZNZUEtAv8qIQaMFs0qW9S6RyIP5++N27xHYr5KH7FqoP0vOJgyR7IC4uA0LqyUreNZL82Sl+uZp79wATJEnTXOUgu7TvYVkShBXnwvENiP4nUixxyLrEYWY5Xy03K7Ht+0l9/oeh8jkNl+sNRohei8A8GjRwnjxldm3pVB+9SHRAvUsSsUgq78WAsXUnylR9c2zRMc93Sa35qc9e90l0sNkGimFwlEnhRTE/goZcQtsPKfQ273GwU5qssN318mzZ/TDbjNMCqfj2EWCzHUkoLOx+pC5u9GOTc17isgzGfjK9hblkD7r4CRUqmYD8/WaDAcrktSHAlNMffskWqqbUsKCsRYkEhJlta/Ng8nDxTkfvByKx6HVwNRP6PcESPiM7aaH3th5++UcQxGRkCI/NO0cu1lvnHG5KqbABdXqconqivF+F9gPWFBN/Y56lbg882cx4sdt7/hTGfhstPLxc1qzK2RhWpHhPKfDiHtMPdAkRAyZO/w58yV9q9W2TqGtDQmyQ== \ No newline at end of file diff --git a/lib/56动漫.js b/lib/56动漫.js new file mode 100644 index 0000000..7670f90 --- /dev/null +++ b/lib/56动漫.js @@ -0,0 +1,40 @@ +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/lib/58动漫.js b/lib/58动漫.js new file mode 100644 index 0000000..44f8602 --- /dev/null +++ b/lib/58动漫.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/41US4/jRBC+76+IFimPycRO4jiTB9Fq4kxm8n4/EYradjt24te020nsIRInBIjDHDggAQc4wEgIrZA4LUj8GWZG/Avadgayu4Doi6vq++qr7iqrNJsHOrWRoEj9/uqzx1ffU1jBKgyVQhE5FQ4P4Q4XKYImBENNaCJTgNfRZCwAIsVn2lvpIrQEL/vNJOaQVCwe62UTCcsE+rHqv8Cp/yqKAW/5RXWwSXhOOKwq/8hUFQsHVM2xFVJGx1DHi4UX98q8o4ixQ/IGoBCy/V7cPAuR43emEIqwuftP7x5+/SFy6ocf7r55+Po3EvfqHGKyQeRICzE2CzS93W5JW/Ulk6MEQztQbKQSBm1BgASZMmXzhQmWsCQ53icchLFjwhIbxopI4oIKLEtyJEXFEB1E/NjCBMjyLuZ3zjRMK0H6wAPkPaQIDm0lXxlBqUid0FHq5EWMkrGmHmRMFThPKhjZMIiqwHUKoecrq+C1wqOX6oNOm/KJUQSvbWjhqKKbNo5RGsCCHKWRrwXRgpQo+XXepWPvpd6PFT0N8uaSp0MRo6hIUd+GuoAcE5dKkVQkduNRbJ38RMCEUeLE9lC1YOhtcvpNMg8smM1UoGCIQWZsT7JojbFzH2hmhqawd10fuPEvXSK2rx64++eHZyuaQoaXDbyg3YD3Jp86pemHL17e3353f/vy8fO7+48/evzpl8cfv/zjw0+O2YtgtmEDiRCVbm4kleKd/T4MEASB61kk4JApBwHP2u8jxypE4Spj1c6fTjw9dEeo0isPqkx6OplMhoMpbV0n19PR+czS5DFXHTUbAxvXR/1zt7qU7dRFz7hstiYavogPV50Zdlv59dlyxJyZXVHv0K3NsM1UVi1N7fY6u/iglQb9K74x5/vcpcaj8mg3x2PcTqtxtUZv0hW2vepWLtw4m1t1BM6uGWVxPEKD6myz7gvnWVYeGtWhW50uG3Yz2evWk8p0OYVlya1szjusxix5Ycdvq/asnblgWjORbcyz0y3ajtjV5LIqt3JTF+VdToO0oFz245It9Xcd2t1m83lQx7tau2+0kyC/znDrFuyer3Sxwg3KupTX89bZrL/tVmadeT2v7aTZmPwEYOyc7frzVJZ165Yh5FNKxzJzV1aPyQxz7iqVmzhwB0ZctdFkND4Hct1Mby1ns7MyE3eb9rpZmzD2RmpmRrrMOSzdPqObPQR3cy6lJKcMYzOIsy/ylUzlutzmGG3irBDosuNkY8l3zE2yN94YQ5fbDa+G7GbLkRG+Nt+FCKXCYbV4J0UcAWBYE8nkU5H96V9I+hhJHyPMMcIcI5ljJBPZ+8ABD5bL6H8soC35hUsnJ8fr6Gnr3X71+PO3T0vHW58JBUPNWzP+nvQMEWCQMJCyVHSgFv8mIqgBtLZeX0xEd/8npr7KXo4GAAA= \ No newline at end of file diff --git a/lib/6V新版[磁].js b/lib/6V新版[磁].js new file mode 100644 index 0000000..8734394 --- /dev/null +++ b/lib/6V新版[磁].js @@ -0,0 +1 @@ +H4sIAEqSbWYC/9VVW2vcRhR+ln+FkIsu7kbyunQfpG7BgTwEUvpguy/GbGal0Woc3aIZ2bu4ApsSiNs0TdOLC3aT0lDsQltSKKU4tz+T3c0+5S/0zEh7S0PJa15snXO+88053zkzu4MyOctDLDflvQWJERZiW2t8Mvj+4fDw5ubwwcGWVluQgoQyWwsYS23L2t3dNbvtxo7pJhEPWpY8jdMK0GjQhhljVgHyLLRlzfJ7bogotUjs4W7L76Wog82AReHmfEj4xMnziX7PJyHD2f8QzEOmRKW3xfm0vT0/NAW6KKYxGwSQFI+gmAZkO1fszT3lGu4ptiKgSk2JUYTBHP75qH/vC7B3UJhjgYvB3b9xNvrsjLvBUIpa5T1+0j88rbxWJ0+AeRwbHP0yuv/rTDgjAYpnAb+dDp/engEkeYR5bcVWsbUgFVA7xShzg41SJmyVZtV8GqSLNEh2m2KuKsNRSrxmXWVt3kkTZYy44I+E00tSmGKzJFBp3o4Ia6ogQDtBmddcWnJ4XJscidqwKitgXs+Je21N+OzliZoiXOe7g5GHMyrU1TYozi6sdnDMNKj3o48vXr5yqbWxqpW9MBLhJGf2+8vLnEjI3kpRRmEnFyMc51RVQ2J3mF43HKSq67jL+P8gw75jLlm6uWRYvEIXMdzCXTfMPUidqPjp4OgU1rqxwzFpiHoVOctyDJ6QQMt2A74Gt89efHkHKlziyOf/7A/PT8Fa5Aq03CRmiMQ448U4wUpVB4k6qkoz1zFJ7CctD0qYr1BQnd8SVGLVxFQUW1YWOSVoArh6lVOS8D46SdYrnUqNZ8E5ImdSi0gcn15iPExdDnIc5xVcauPr+rJRnfK64Ioxe1oVe82JAlyfAzPUpoC8uk1tMKX11Ytr8K5sKqODb0bfPYPHpP/5sbLl8FiImczhEE89H+n8ntZA4akS79lxwnS7UpvqwydfD49/MAzNEAQ82fST7BJyA10nzJCbHwpZy3PNNKeBDtQBxGqy0k68sYqGmWEYvot1bXD398G3T/snD/s/7ms1rayzf3I2PH+mzcBePr45OPpp8NXd54/+lgf3Dkb798vMl48PIQ3247/o0cl+/4/DFw9ulGkV8vyWZhi8yEJ0cVXIFhLKZnULk47Oeygb5T00t2lq8g+HizW2EFjVt0Beuby2LgSfSkzArDvjYUz08vPYZSSJdVDRqFQjvqxbs5OyTIYpE5AxRtqBnwvvlZmZYmZdmBnzquFIEgd5ZoTS6Vl8RhWN4BHrX3KVQ9KqKz0hEbA2PNkCNcGIyzTBZJjlWVyxvStr72jwlyeV8WIMFOqUa+GJEUiFjEOK5ZnGy9HPNC6rKmj4QVMW8oU47rDgQv0N5TB3idfBjN8TPuIW8bpwXZA2WRVl7FZqMjHeJukkvlgE0OVyScX8TvPHfHDnZPjXz9UbWvwLXsQfeGgIAAA= \ No newline at end of file diff --git a/lib/6v.json b/lib/6v.json new file mode 100644 index 0000000..398132c --- /dev/null +++ b/lib/6v.json @@ -0,0 +1,57 @@ +{ + "title": "6v", + "author": "压脉带", + "Headers": "PC_UA", + "Coding_format": "UTF-8", + "PicNeedProxy": "0", + "homeContent":"1", + "firstpage": "1", + "class_url": "https://www.66s6.net/{cateId}/index_{catePg}.html[firstPage=https://www.66s6.net/{cateId}/index.html]", + "class_name": "国剧&日韩剧&欧美剧&喜剧片&动作片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&动画片&综艺", + "class_value": "dianshiju/guoju&dianshiju/rihanju&dianshiju/oumeiju&xijupian&dongzuopian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&donghuapian&ZongYi", + "filterdata": {}, + "cat_mode": "1", + "catjson_twice": "", + "cat_arr_rule": "body&&.post_hover", + "cat_is_jsoup": "1", + "cat_title": "a&&title", + "cat_url": "a&&href", + "cat_pic": "img&&src", + "cat_subtitle": ".pic-text&&Text", + "cat_prefix": "https://www.66s6.net", + "cat_suffix": "", + "SHeaders": "User-Agent$PC_UA", + "search_url": "https://www.66s6.net/e/search/index.php;post", + "sea_PtBody": "show=title&tempid=1&tbname=article&mid=1&dopost=search&submit=&keyboard={wd}", + "search_mode": "1", + "sea_arr_rule": "body&&.post_hover", + "sea_is_jsoup": "1", + "sea_pic": "img&&src", + "sea_title": "font&&Text", + "sea_url": "a&&href", + "sea_subtitle": "", + "search_prefix": "https://www.66s6.net", + "search_suffix": "", + "force_play": "0", + "play_prefix": "https://live.52sf.ga/huya/", + "play_suffix": "#isVideo=true#", + "play_header": "authority$ku.peizq.online#Referer$https://play.peizq.online", + "proj_is_jsoup": "0", + "proj_cate": "◎类  别 &&◎语  言", + "proj_year": "◎年  代 &&◎产  地", + "proj_area": "◎年  代 &&◎类  别", + "proj_actor": "◎演  员 &&

", + "proj_plot": "◎简  介&&

", + "list_arr_rule": "body&&[href*=magnet]", + "epi_arr_rule": "a", + "epi_is_jsoup": "1", + "epi_title": "a&&Text", + "epi_url": "a&&href", + "epi_reverse": "0", + "epiurl_prefix": "", + "epiurl_suffix": "", + "Anal_MacPlayer": "0", + "ManualSniffer": "0", + "VideoFormat": ".mp4#.m3u8#.flv", + "VideoFilter": ".html#=http" +} \ No newline at end of file diff --git a/lib/88tvs.js b/lib/88tvs.js new file mode 100644 index 0000000..dc373b9 --- /dev/null +++ b/lib/88tvs.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/8号影院.js b/lib/8号影院.js new file mode 100644 index 0000000..c8dbe77 --- /dev/null +++ b/lib/8号影院.js @@ -0,0 +1 @@ +qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOSw++yJ8kLPZGH7bSG3+EXPt4QIAb8pNoprEt1UZ1T/V4W/sp4A5sfUtLeuACMYWQe1KwhJN9KGVLad9F06m3DJf4UKGy2nF6D8SlobdUjU7awvOXfnlEin40lOgDwd9ssQ0VrK5HUhE9iilOtjlWo7w4zmkgcsdBKfISXgDpeh3SOB/2WKjn/SAjsVaiuc/y5KZdL+EZGfo0nqi6h+WpkTdb/Mbji3C9hr9wbfNthVNTEwHRyAyozbGGJ6cIZjMYgaZsvhpuQLHbj/wvQVzLI9WOXv42uv5a+WVZOQtjcIoPOSib8TVbqLRu8FUa8h7ioAi1pKI60yVrHs4a5YLlKeK5FF2trFNJYJZQij0gTeO/R9JWKfECfpt+82ZmwziyoYICYnQe6XngVqxJy6KsTRcANEhtggxELsl9N1vhYwgd7m/gIZBP22Wt1CRXtwKEr7KN+Z/2G6JTtDunqVS48XS5BWQQY+LMzOihij3ZiyTZZOcxu8QTHQXddS62Opnpu8eZJQT5ZzErAPhYOiUEzakpmI4Kea71KJArFDbsAbFcn8dk+oFGKVlKgPD1/LBQhSAJ2FORK+jPk24CB4Pr2VTdp/ria2rfRJ2BEM3GYTbCWGbjv7Oq5NkzHeDZTZfByCX4m23qjYv5bHLTg55eZ5eG/jF6+5L+Wxbuq/jP0G0Qoi/N2IGY+OEj0W2aWPgr1W8te0YbgPvGyH32/AQXmru8OVOUqgzjRLo1FUoquDMVlTBTV8MhYV5UtKH45FmlLG4qJao+cGSAqrpwx3abhVsgZu5rJ285AofAEPRnaNW0/cWl+3GJEyLs8XChg5SxWycj5e7rMGS0TKh6eQlpEXfb5TgD+IfuCDLmse88KDS/tj+5MptDGf3o3YV2JPqcgn9QZ/xfn62gxD2+0ZrR/f \ No newline at end of file diff --git a/lib/APPV2[模板].js b/lib/APPV2[模板].js new file mode 100644 index 0000000..cc550b4 --- /dev/null +++ b/lib/APPV2[模板].js @@ -0,0 +1 @@ +LyoqCiAqIOS8oOWPgiA/dHlwZT11cmwmcGFyYW1zPWh0dHA6Ly8xMjIuMjI4Ljg1LjIwMzoxMDAwQOazveWwkTEKICog5Lyg5Y+CID90eXBlPXVybCZwYXJhbXM9aHR0cDovLzEyMi4yMjguODUuMjAzOjEwMDBA5rO95bCRMgogKi8KCnZhciBydWxlID0gewogICAgdGl0bGU6ICdBUFBWMlvmqKHmnb9dJywKICAgIGF1dGhvcjogJ+mBk+mVvycsCiAgICB2ZXJzaW9uOiAnMjAyNDEwMTIgYmV0YTEnLAogICAgdXBkYXRlX2luZm86IGAKMjAyNDEwMTI6CjEu5qC55o2u576k5Y+L5Ze35ZGc55qEYXBwdjLmqKHmnb/kv67mlLnmiJDlj6/kvKDlj4LmupDvvIznsbvkvLzph4fpm4bkuYvnjovnlKjms5XkvKDlj4IKYC50cmltKCksCiAgICBob3N0OiAnJywKICAgIHVybDogJy9hcGkucGhwL2FwcC92aWRlbz90aWQ9ZnljbGFzc2Z5ZmlsdGVyJmxpbWl0PTIwJnBnPWZ5cGFnZScsCiAgICBmaWx0ZXJfdXJsOiAnJywKICAgIGZpbHRlcjoge30sCiAgICBob21lVXJsOiAnL2FwaS5waHAvYXBwL2luZGV4X3ZpZGVvJywKICAgIGRldGFpbFVybDogJy9hcGkucGhwL2FwcC92aWRlb19kZXRhaWw/aWQ9ZnlpZCcsCiAgICBzZWFyY2hVcmw6ICcvYXBpLnBocC9hcHAvc2VhcmNoP3RleHQ9KiomcGc9ZnlwYWdlJywKICAgIHBhcnNlVXJsOiAnJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMSwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2todHRwLzQuMS4wJwogICAgfSwKICAgIHBhcmFtczogJ2h0dHA6Ly8xMjIuMjI4Ljg1LjIwMzoxMDAwJGh0dHA6Ly8xMjIuMjI4Ljg1LjIwMzoxMDAwL3BsYXk/dXJsPScsCiAgICBob3N0SnM6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgSE9TVCA9IHJ1bGUucGFyYW1zLnNwbGl0KCckJylbMF07CiAgICB9KSwKICAgIOmihOWkhOeQhjogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsb2coYOS8oOWFpeWPguaVsDoke3J1bGUucGFyYW1zfWApOwogICAgICAgIGxldCBfaG9zdCA9IHJ1bGUucGFyYW1zLnNwbGl0KCckJylbMF07CiAgICAgICAgcnVsZS5wYXJzZVVybCA9IHJ1bGUucGFyYW1zLnNwbGl0KCckJylbMV0gfHwgJyc7CiAgICAgICAgbGV0IF91cmwgPSBfaG9zdC5yc3RyaXAoJy8nKSArICcvYXBpLnBocC9hcHAvbmF2P3Rva2VuJzsKICAgICAgICBsZXQgX2hlYWRlcnMgPSB7J1VzZXItQWdlbnQnOiAnRGFydC8yLjE0IChkYXJ0OmlvKSd9OwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChfdXJsLCB7aGVhZGVyczogX2hlYWRlcnN9KTsKICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgbGV0IF9jbGFzc2VzID0gW107CiAgICAgICAgbGV0IF9maWx0ZXIgPSB7fTsKICAgICAgICBsZXQgX2ZpbHRlcl91cmwgPSAnJzsKICAgICAgICBsZXQgZHkgPSB7ImNsYXNzIjogIuexu+WeiyIsICJhcmVhIjogIuWcsOWMuiIsICJsYW5nIjogIuivreiogCIsICJ5ZWFyIjogIuW5tOS7vSIsICJsZXR0ZXIiOiAi5a2X5q+NIiwgImJ5IjogIuaOkuW6jyJ9OwogICAgICAgIGxldCBqc29uRGF0YSA9IGRhdGEubGlzdDsKICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGpzb25EYXRhLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIGxldCBoYXNOb25FbXB0eUZpZWxkID0gZmFsc2U7CiAgICAgICAgICAgIGxldCBfb2JqID0gewogICAgICAgICAgICAgICAgdHlwZV9uYW1lOiBqc29uRGF0YVtrXS50eXBlX25hbWUsCiAgICAgICAgICAgICAgICB0eXBlX2lkOiBqc29uRGF0YVtrXS50eXBlX2lkLAogICAgICAgICAgICB9OwogICAgICAgICAgICBfY2xhc3Nlcy5wdXNoKF9vYmopOwogICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gZHkpIHsKICAgICAgICAgICAgICAgIGlmIChrZXkgaW4ganNvbkRhdGFba10udHlwZV9leHRlbmQgJiYganNvbkRhdGFba10udHlwZV9leHRlbmRba2V5XS50cmltKCkgIT09ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgaGFzTm9uRW1wdHlGaWVsZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaGFzTm9uRW1wdHlGaWVsZCkgewogICAgICAgICAgICAgICAgX2ZpbHRlcltTdHJpbmcoanNvbkRhdGFba10udHlwZV9pZCldID0gW107CiAgICAgICAgICAgICAgICBmb3IgKGxldCBka2V5IGluIGpzb25EYXRhW2tdLnR5cGVfZXh0ZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRrZXkgaW4gZHkgJiYganNvbkRhdGFba10udHlwZV9leHRlbmRbZGtleV0udHJpbSgpICE9PSAiIikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZpbHRlcl91cmwgKz0gYCYke2RrZXl9PXt7ZmwuJHtka2V5fX19YAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBqc29uRGF0YVtrXS50eXBlX2V4dGVuZFtka2V5XS5zcGxpdCgnLCcpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWVBcnJheSA9IHZhbHVlcy5tYXAodmFsdWUgPT4gKHsibiI6IHZhbHVlLnRyaW0oKSwgInYiOiB2YWx1ZS50cmltKCl9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIF9maWx0ZXJbU3RyaW5nKGpzb25EYXRhW2tdLnR5cGVfaWQpXS5wdXNoKHsia2V5IjogZGtleSwgIm5hbWUiOiBkeVtka2V5XSwgInZhbHVlIjogdmFsdWVBcnJheX0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJ1bGUuY2xhc3NlcyA9IF9jbGFzc2VzOwogICAgICAgIHJ1bGUuZmlsdGVyID0gX2ZpbHRlcjsKICAgICAgICBydWxlLmZpbHRlcl91cmwgPSBfZmlsdGVyX3VybDsKICAgIH0pLAogICAgY2xhc3NfcGFyc2U6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgaW5wdXQgPSBydWxlLmNsYXNzZXM7CiAgICB9KSwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlmICghL15odHRwLy50ZXN0KGlucHV0KSAmJiBydWxlLnBhcnNlVXJsKSB7CiAgICAgICAgICAgIGlucHV0ID0gcnVsZS5wYXJzZVVybCArIGlucHV0CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICB1cmw6IGlucHV0LAogICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICBoZWFkZXI6ICcnCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfSksCiAgICDmjqjojZA6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKS5saXN0OwogICAgICAgIGxldCBjb20gPSBbXTsKICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0udmxpc3QpICYmIGl0ZW0udmxpc3QubGVuZ3RoICE9PSAwKSB7CiAgICAgICAgICAgICAgICBjb20gPSBjb20uY29uY2F0KGl0ZW0udmxpc3QpCiAgICAgICAgICAgIH0KICAgICAgICB9KQogICAgICAgIFZPRFMgPSBjb20KICAgIH0pLAogICAg5LiA57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIFZPRFMgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKS5saXN0CiAgICB9KSwKICAgIOS6jOe6pzogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBWT0QgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKS5kYXRhCiAgICB9KSwKICAgIOaQnOe0ojogJyonLAp9 \ No newline at end of file diff --git a/lib/Anime1.js b/lib/Anime1.js new file mode 100644 index 0000000..c6f7ea5 --- /dev/null +++ b/lib/Anime1.js @@ -0,0 +1,169 @@ +// 注意事项:此源仅支持 影视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:'連載中&2024&2023&2022&2021&2020&2019&2018&更早', + class_url:'連載中&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 diff --git a/lib/Auete影视.js b/lib/Auete影视.js new file mode 100644 index 0000000..cf9a024 --- /dev/null +++ b/lib/Auete影视.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/B站影视.js b/lib/B站影视.js new file mode 100644 index 0000000..b3d5f04 --- /dev/null +++ b/lib/B站影视.js @@ -0,0 +1 @@ +Ly8g5pCc57Si6aqM6K+BCnZhciBydWxlID0gewogICAgdGl0bGU6J0Lnq5nlvbHop4YnLAogICAgLy8gaG9zdDonaHR0cHM6Ly9iemhhbnlzLmNvbScsCiAgICBob3N0OidodHRwczovL2J6aGFueXkuY29tJywKICAgIHVybDonL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAoKICAgIHNlYXJjaGFibGU6MiwvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHF1aWNrU2VhcmNoOjAsLy/mmK/lkKblkK/nlKjlv6vpgJ/mkJzntKIsCiAgICBoZWFkZXJzOnsKICAgICAgICAnVXNlci1BZ2VudCc6J1BDX1VBJwogICAgfSwKICAgIGNsYXNzX3BhcnNlOiAnLmZpeGVkLW5hdiYmLmZsZXg6bHQoNCk7bGkmJlRleHQ7bGkmJmRhdGEtaWQ7KFxcZCspJywKICAgIHBsYXlfcGFyc2U6dHJ1ZSwKCSAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlucHV0ID0gewogICAgICAgICAgICBwYXJzZTogMSwKICAgICAgICAgICAgdXJsOiBpbnB1dCwKICAgICAgICAgICAganM6ICdkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGxheWxlZnQgaWZyYW1lIikuY29udGVudFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGxheWVyIikuY2xpY2soKScsCiAgICAgICAgfQogICAgfSksCgogICAgbGltaXQ6NiwKICAgIOaOqOiNkDonKicsCiAgICAvLyDmjqjojZA6Jy5tb3ZpZS1saXN0LWJvZHkmJi5tb3ZpZS1saXN0LWl0ZW07Lm1vdmllLXRpdGxlJiZUZXh0Oy5MYXp5JiZkYXRhLW9yaWdpbmFsOy5tb3ZpZS1yYXRpbmcmJlRleHQ7YSYmaHJlZicsCiAgICDkuIDnuqc6Jy5tb3ZpZS1saXN0LWJvZHkmJi5tb3ZpZS1saXN0LWl0ZW07Lm1vdmllLXRpdGxlJiZUZXh0Oy5MYXp5JiZkYXRhLW9yaWdpbmFsOy5tb3ZpZS1yYXRpbmcmJlRleHQ7YSYmaHJlZicsCiAgICAvLyDkuIDnuqc6J2pzb246bGlzdDt2b2RfbmFtZTt2b2RfcGljO3ZvZF9zY29yZTt2b2RfaWQnLAogICAg5LqM57qn6K6/6Zeu5YmNOidsb2coTVlfVVJMKTtNWV9VUkw9TVlfVVJMLnJlcGxhY2UoIi9wbGF5LyIsIi9kZXRhaWwvIikucmVwbGFjZSgiL3NpZC8xL25pZC8xIiwiIik7bG9nKE1ZX1VSTCknLAogICAg5LqM57qnOnsKICAgICAgICAidGl0bGUiOiJoMSYmdGl0bGU7LnNjcm9sbC1jb250ZW50IGE6ZXEoMCkmJlRleHQiLAogICAgICAgICJpbWciOiIucG9zdGVyJiZpbWcmJnNyYyIsCiAgICAgICAgImRlc2MiOiI7LnNjcm9sbC1jb250ZW50IGE6ZXEoMSkmJlRleHQ7LnNjcm9sbC1jb250ZW50IGE6ZXEoMikmJlRleHQ7LnN0YXJMaW5rJiZUZXh0Oy5jcjM6ZXEoMCkmJlRleHQiLAogICAgICAgICJjb250ZW50IjoiLmRldGFpbHNUeHQtLWRpdiYmVGV4dCIsCiAgICAgICAgInRhYnMiOiIuc3dpcGVyLXdyYXBwZXImJmEiLAogICAgICAgICJsaXN0cyI6Ii5jb250ZW50X3BsYXlsaXN0OmVxKCNpZCkmJmxpIgogICAgfSwKCiAgICAgc2VhcmNoVXJsOicvaW5kZXgucGhwL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCcsCgkvL3NlYXJjaFVybDonL2luZGV4LnBocC9hamF4L3N1Z2dlc3Q/bWlkPTEmd2Q9KiombGltaXQ9NTAnLAoJZGV0YWlsVXJsOicvaW5kZXgucGhwL3ZvZC9kZXRhaWwvaWQvZnlpZC5odG1sJywKICAgIOaQnOe0ojonLm1vdmllLWxpc3QtYm9keSYmLnZvZC1zZWFyY2gtbGlzdDsqOyo7LmdldG9wJiZUZXh0OyonLAoJLy/mkJzntKI6J2pzb246bGlzdDtuYW1lO3BpYzs7aWQnLAp9 \ No newline at end of file diff --git a/lib/Free影视.json b/lib/Free影视.json new file mode 100644 index 0000000..f58bc31 --- /dev/null +++ b/lib/Free影视.json @@ -0,0 +1,396 @@ + { + + "作者":"cc", + + "站名":"Free影视", + + "主页url":"https://www.freeok.vip", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗!+module-info-introduction-content\">&&

", + + "导演":"导演:&&", + + "主演":"主演:&&", + + "影片类型":"module-info-tag\">&&立即播放", + + "影片状态":"集数:&&", + + "数组":"", + + "标题":"title=\"&&\"", + + "副标题":"note\">&&", + + "图片":"data-original=\"&&\"", + + "链接":"href=\"&&\"", + + "搜索模式":"1", + + "搜索url":"/vod-so/-------------.html?wd={wd}", + + "线路数组":"data-dropdown-value=&&[不包含:夸克]", + + "线路标题":"cc+&&[替换:高清频道>>高清#备用频道>>备用#OK频道>>OK#>>>共]+集", + + "播放数组":"
", + + "播放标题":"&&", + + "播放列表":"", + + "分类url":"https://www.freeok.vip/vod-show/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;ak", + + "分类":"电影$1#电视剧$2#动漫$3#综艺$4", + + "筛选":{ + "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":"其他"} + ] + }, + { + "key":"area","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":"lang","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":"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"} + ] + }, + { + "key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "2":[ + { + "key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":"2"}, + {"n":"国产剧","v":"6"}, + {"n":"港台剧","v":"7"}, + {"n":"日韩剧","v":"8"}, + {"n":"欧美剧","v":"9"}, + {"n":"海外剧","v":"10"}, + {"n":"其他剧","v":"11"} + ] + }, + { + "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":"其他"} + ] + }, + { + "key":"area","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":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"粤语","v":"粤语"}, + {"n":"闽南语","v":"闽南语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"}, + {"n":"其它","v":"其它"} + ] + }, + { + "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","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"} + ] + }, + { + "key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "3":[ + { + "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":"少年"} + ] + }, + { + "key":"area","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":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"粤语","v":"粤语"}, + {"n":"闽南语","v":"闽南语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"}, + {"n":"其它","v":"其它"} + ] + }, + { + "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","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"} + ] + }, + { + "key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "4":[ + { + "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":"其他"} + ] + }, + { + "key":"area","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":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"粤语","v":"粤语"}, + {"n":"闽南语","v":"闽南语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"}, + {"n":"其它","v":"其它"} + ] + }, + { + "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","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"} + ] + }, + { + "key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ] + } + } + diff --git a/lib/HBOTV[优].js b/lib/HBOTV[优].js new file mode 100644 index 0000000..829e3d5 --- /dev/null +++ b/lib/HBOTV[优].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICdIQk9UVlvkvJhdJywKICBob3N0OiAnaHR0cHM6Ly93d3cuaGJvdHYxLmNvbS8nLAogIHVybDogJy9meWNsYXNzL2luZGV4X2Z5cGFnZS5odG1sWy9meWNsYXNzL2luZGV4Lmh0bWxdJywKICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLWZ5cGFnZS8nLAogIHNlYXJjaGFibGU6IDIsCiAgcXVpY2tTZWFyY2g6IDAsCiAgZmlsdGVyYWJsZTogMCwKICBoZWFkZXJzOiB7CiAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgfSwKICBjbGFzc19wYXJzZTogJy5zdHVpLWhlYWRlcl9fbWVudSBsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykvJywKICBwbGF5X3BhcnNlOiB0cnVlLAogIGxhenk6ICJqczpcbiAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcbiAgbGV0IGhjb25mID0gaHRtbC5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdO1xuICBsZXQganNvbiA9IEpTT041LnBhcnNlKGhjb25mKTtcbiAgbGV0IHVybCA9IGpzb24udXJsO1xuICBpZiAoanNvbi5lbmNyeXB0ID09ICcxJykge1xuICAgIHVybCA9IHVuZXNjYXBlKHVybCk7XG4gIH0gZWxzZSBpZiAoanNvbi5lbmNyeXB0ID09ICcyJykge1xuICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKTtcbiAgfVxuICBpZiAoL1xcLihtM3U4fG1wNHxtNGF8bXAzKS8udGVzdCh1cmwpKSB7XG4gICAgaW5wdXQgPSB7XG4gICAgICBwYXJzZTogMCxcbiAgICAgIGp4OiAwLFxuICAgICAgdXJsOiB1cmwsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpbnB1dDtcbiAgfSIsCiAgbGltaXQ6IDYsCiAgZG91YmxlOiB0cnVlLAogIOaOqOiNkDogJ3VsLnN0dWktdm9kbGlzdC5jbGVhcmZpeDtsaTthJiZ0aXRsZTsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7LnBpYy10ZXh0JiZUZXh0O2EmJmhyZWYnLAogIOS4gOe6pzogJ3VsLnN0dWktdm9kbGlzdC5jbGVhcmZpeCBsaTthJiZ0aXRsZTsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7LnBpYy10ZXh0JiZUZXh0O2EmJmhyZWYnLAogIOS6jOe6pzogewogICAgdGl0bGU6ICcuc3R1aS1jb250ZW50X19kZXRhaWwgLnRpdGxlJiZUZXh0Oy5zdHVpLWNvbnRlbnRfX2RldGFpbCYmcDplcSgzKSYmYSYmVGV4dCcsCiAgICBpbWc6ICcuc3R1aS1jb250ZW50X190aHVtYiAubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWwnLAogICAgZGVzYzogJy5waWMtdGV4dCYmVGV4dDsuc3R1aS1jb250ZW50X19kZXRhaWwmJnA6ZXEoMykmJmE6ZXEoMikmJlRleHQ7LnN0dWktY29udGVudF9fZGV0YWlsJiZwOmVxKDMpJiZhOmVxKDEpJiZUZXh0Oy5zdHVpLWNvbnRlbnRfX2RldGFpbCBwLS1zcGFuJiZUZXh0Oy5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDEpLS1zcGFuJiZUZXh0JywKICAgIGNvbnRlbnQ6ICcuZGV0YWlsLXNrZXRjaCYmVGV4dCcsCiAgICB0YWJzOiAnLnN0dWktcGFubmVsX19oZWFkIGgzJywKICAgIGxpc3RzOiAnLnN0dWktY29udGVudF9fcGxheWxpc3Q6ZXEoI2lkKSBsaScsCiAgfSwKICDmkJzntKI6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgdmFyIGQgPSBbXTsKICAgICAgICB2YXIgYm9keSA9ICdrZXlib2FyZD0nICsgS0VZICsgJyZzaG93PXRpdGxlJnRlbXBpZD0xJnRibmFtZT1uZXdzJm1pZD0xJmRvcG9zdD1zZWFyY2gnOyAvL2xvZyhib2R5KQogICAgICAgIHZhciBoZWFkZXJzID0gYHsKICAgICAgICAgICAgJ0hvc3QnOiAnd3d3Lmhib3R2MS5jb20nLAogICAgICAgICAgICAnY29udGVudC1sZW5ndGgnOiAnNzknLAogICAgICAgICAgICAnY2FjaGUtY29udHJvbCc6ICdtYXgtYWdlPTAnLAogICAgICAgICAgICAndXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cyc6ICcxJywKICAgICAgICAgICAgJ29yaWdpbic6ICdodHRwczovL3d3dy5oYm90djEuY29tJywKICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLAogICAgICAgICAgICAndXNlci1hZ2VudCc6ICdNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTI7IDIyMDIxMjExUkMgQnVpbGQvU0tRMS4yMTEwMDYuMDAxOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzk5LjAuNDg0NC44OCBNb2JpbGUgU2FmYXJpLzUzNy4zNicsCiAgICAgICAgICAgICdhY2NlcHQnOiAndGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC45JywKICAgICAgICAgICAgJ3gtcmVxdWVzdGVkLXdpdGgnOiAnY29tLmV4YW1wbGUuaGlrZXJ2aWV3JywKICAgICAgICAgICAgJ3NlYy1mZXRjaC1zaXRlJzogJ3NhbWUtb3JpZ2luJywKICAgICAgICAgICAgJ3NlYy1mZXRjaC1tb2RlJzogJ25hdmlnYXRlJywKICAgICAgICAgICAgJ3NlYy1mZXRjaC11c2VyJzogJz8xJywKICAgICAgICAgICAgJ3NlYy1mZXRjaC1kZXN0JzogJ2RvY3VtZW50JywKICAgICAgICAgICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly93d3cuaGJvdHYxLmNvbS92b2RzZWFyY2gvMjAzMDcwLTAvJywKICAgICAgICAgICAgJ2FjY2VwdC1sYW5ndWFnZSc6ICd6aC1DTix6aDtxPTAuOSxlbi1VUztxPTAuOCxlbjtxPTAuNycKICAgICAgICB9YDsKICAgICAgICB2YXIgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy5oYm90djEuY29tL2Uvc2VhcmNoL2luZGV4LnBocCcsIHsKICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycywKICAgICAgICAgICAgYm9keTogYm9keSwKICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcKICAgICAgICB9KTsgLy9sb2coaHRtbCkKICAgICAgICAKICAgICAgICB2YXIgbGlzdCA9IHBkZmEoaHRtbCwgJy5zdHVpLXZvZGxpc3RfX21lZGlhJiZsaScpOwogICAgICAgIGZvciAodmFyIGogaW4gbGlzdCkgewogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgobGlzdFtqXSwgJy5sYXp5bG9hZCYmdGl0bGUnKSwKICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5waWMtdGV4dCYmVGV4dCcpLAogICAgICAgICAgICAgICAgaW1nOiBwZChsaXN0W2pdLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJykgKyAnQFJlZmVyZXI9JywKICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vd3d3Lmhib3R2MS5jb20nK3BkZmgobGlzdFtqXSwgJy5sYXp5bG9hZCYmaHJlZicpICsgJyNpbW1lcnNpdmVUaGVtZSMnCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICB9KSwKfQ== \ No newline at end of file diff --git a/lib/HDmoli.js b/lib/HDmoli.js new file mode 100644 index 0000000..c34b44f --- /dev/null +++ b/lib/HDmoli.js @@ -0,0 +1 @@ +LyoqCiAqIOW+heihpeWFhWxhennlhY3ll4XmjqLvvIzkuI3nhLbll4XmjqLov4fnqIvkuK3pgYfliLDnmoTov5nnp43lnLDlnYDkuI3lr7kgaHR0cHM6Ly93d3cuaGRtb2xpLnByby9qcy9wbGF5ZXIvdmlkZW9qcy92aWRlb2pzLmh0bWw/dj0xLjYxJnZpZGVvdXJsPS9wbGF5LzIyMDMtMC0wLmh0bWwsaHR0cHM6Ly92LmRhbW9saS5wcm8vdi9tb3ZpZS9SZWJlbC5Nb29uLlBhcnQuVHdvLm1wNCwsMjIwMywwLDAKICovCnZhciBydWxlID0gewogICAg5qih5p2/OiAn6aaW5Zu+JywKICAgIHRpdGxlOiAnSERtb2xpJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5oZG1vbGkucHJvJywKICAgIHVybDogJy9tbGlzdC9pbmRleGZ5Y2xhc3MtZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC5waHA/cGFnZT1meXBhZ2Umc2VhcmNod29yZD0qKiZzZWFyY2h0eXBlPScsCiAgICBjbGFzc19wYXJzZTogJy5teXVpLWhlYWRlcl9fbWVudSBsaTthJiZUZXh0O2EmJmhyZWY7aW5kZXgoXFxkKylcLmh0bWwnLAogICAgbGF6eTogYGAsCn0= \ No newline at end of file diff --git a/lib/HDmoli.json b/lib/HDmoli.json new file mode 100644 index 0000000..30cbfb2 --- /dev/null +++ b/lib/HDmoli.json @@ -0,0 +1,210 @@ + { + + "作者":"cc", + + "站名":"HD魔力", + + "主页url":"https://www.hdmoli.com/", + + "简介":"简介:&&

", + + "导演":"导演:&&

", + + "主演":"演员:&&

", + + "影片类型":"分类:&&", + + "影片地区":"地区:&&", + + "影片年代":"年份:&&", + + "影片状态":"15px;\">&&", + + "数组":"myui-vodlist__thumb&&", + + "图片":"data-original=\"&&\"", + + "标题":"title=\"&&\"", + + "副标题":"pic-text text-right\">&&", + + "链接":"href=\"&&\"", + + "搜索url":"/search.php?searchword={wd}", + + "搜索数组":"vodlist__thumb&&", + + "搜索标题":"title=\"&&\"", + + "搜索副标题":"pic-text text-right\">&&", + + "搜索图片":"data-original=\"&&\"", + + "搜索链接":"href=\"&&\"", + + "线路数组":"data-toggle=&&[替换:线路1>>🚛在线播放🚛①#线路2>>🚛在线播放🚛②#线路3>>🚛在线播放🚛③]", + + "线路标题":">&&", + + "播放数组":"-content__list sort-list&&", + + "播放标题":">&&<", + + "播放列表":"", + + "分类url":"https://www.hdmoli.com/search.php?page={catePg}&searchtype=5&order={by}&tid={cateId}&area={area}&year={year}&letter=&yuyan=&state=&money=&ver=&jq={class};;ak", + + "分类":"电影$1#电视剧$2#动漫$41", + + "筛选":{ + "1":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"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":"30"}, + {"n":"动画","v":"32"} + ] + }, + {"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":"喜剧"} + ] + }, + {"key":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"中国","v":"中国"}, + {"n":"美国","v":"美国"}, + {"n":"韩国","v":"韩国"}, + {"n":"英国","v":"英国"}, + {"n":"日本","v":"日本"}, + {"n":"泰国","v":"泰国"}, + {"n":"其他","v":"其他"} + ] + }, + {"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","v":"2016"}, + {"n":"2015","v":"2015"}, + {"n":"2014","v":"2014"}, + {"n":"2013","v":"2013"}, + {"n":"2012","v":"2012"}, + {"n":"more","v":"more"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"评分排序","v":"douban"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"中国","v":"14"}, + {"n":"美剧","v":"15"}, + {"n":"韩剧","v":"16"}, + {"n":"日剧","v":"13"}, + {"n":"英剧","v":"34"}, + {"n":"泰剧","v":"29"}, + {"n":"综艺","v":"39"}, + {"n":"其他","v":"38"} + ] + }, + {"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":"喜剧"} + ] + }, + {"key":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"中国","v":"中国"}, + {"n":"美国","v":"美国"}, + {"n":"韩国","v":"韩国"}, + {"n":"英国","v":"英国"}, + {"n":"日本","v":"日本"}, + {"n":"泰国","v":"泰国"}, + {"n":"其他","v":"其他"} + ] + }, + {"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","v":"2016"}, + {"n":"2015","v":"2015"}, + {"n":"2014","v":"2014"}, + {"n":"2013","v":"2013"}, + {"n":"2012","v":"2012"}, + {"n":"more","v":"more"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"评分排序","v":"douban"} + ] + } + ], + "41":[ + {"key":"cateId","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"日本","v":"42"}, + {"n":"其他","v":"43"} + ] + } + ] + } + } + diff --git a/lib/LIBVIO[优].js b/lib/LIBVIO[优].js new file mode 100644 index 0000000..8099276 --- /dev/null +++ b/lib/LIBVIO[优].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/NT动漫.js b/lib/NT动漫.js new file mode 100644 index 0000000..ef42b58 --- /dev/null +++ b/lib/NT动漫.js @@ -0,0 +1,37 @@ +// 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":"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":"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":"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/lib/NT动漫[漫].js b/lib/NT动漫[漫].js new file mode 100644 index 0000000..41926c6 --- /dev/null +++ b/lib/NT动漫[漫].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/4VTy27TQBTd8xWWipyHEjuJ6AJbBRWJBRKPRdsVIGtij+1px4/OjJumTSVWLHiULpBYULFAglaiCCp1UVrK1zRJP4MZz6SxVR6Wotj33HvOvWfurAGikQxDbU7bvKbxZ3x4Ovzw0tIqw7PDi73nlYZpyrfBcOfg/Mfnwejnl/Hb08Hw+5uLb0d5CUMMQ17xcHH4Yp/Dj/nvaaWRY2FCGYdCxlLLNHu9nhEzL7ppuElkqpSMYJ5hsn4KTb/vYkBp0++nIIBGyCKssvK4E4NIKI3efRrtHujnx1+H78/00cHe+Nd2KU9yEtSFsb4RJnEQZImeRBCpLAoBccMlqSw/zHq9eflIff5SbEHmga4YtiNDqxlyVxbyuKW1ZMxHmEEi09rFENeqFL9Vl+WYB31L29xS7kHgQUItdTbiqSxRSJrzAYxZhRc/eHTn3v27ztK8YlGFDEUwybjzs61Wq2hMCggVDs5Q5MFmBONMw8gGur4I15n4Dwn0bbNq1G/XnpT8Bww6cN3FmQenTacY9CecjGRQRjHY6Fva9WVqsGSBERQH1WpNm7tVGAPFacbE0qnidkPuQR5vaMtUaGzZcqaapPWSLDd1KjTa3r94vcNTjS5O3BU3iRn3xc6wkWEHIwfM6jofzwAx98NBHG/nK6TGrV9F2hNIDXh+/Gx8snep4CG/YxsuxNhBkZ+QqEiHokDXKXFtI4a9QnziaqnOg9SV+ETp5FWuNPVocq/CG4rI6AIK8z46Yi4Lrlab7VqJJfc2CnjVpJsCIDTzUUo0/yDv1P4OXmJ2QUGdgBDxIAOoNK6TEm5JeqVfBrriuPmp5RMLgQKKEWUCNqJkTawIl55BHhcHZQqHcVae1028/hUJQfL/BHkf1XH9ARQD+Gh9uv7qto12dsdHH3lYbM3Wb/HUAatTBQAA \ No newline at end of file diff --git a/lib/OmoFun[漫].js b/lib/OmoFun[漫].js new file mode 100644 index 0000000..0f764b4 --- /dev/null +++ b/lib/OmoFun[漫].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/71XW4/jyHV+968QOkZP92q6KVIUJfVkYpCiLqR4ES+iKHmNcZEs3kTxTkrUpAEDiR8c2xsjeciLYyABEi9gOJsADpCsb3/GMzv+F6Gk7rFmdjYL5CH1QKrO+b7vFFmnxHNKkDbSIoCN542X32jUI/fyAN41noibaFSE3379m19858nTo8eNsrx2uHke3yFItInsIkRvd9X+zM9md41v+tltHil56oXO1dV14/lfPEgfRlxb86uJqKjXz94aA5g33HwT1ItIYVLA7IR42njpQmDBtBZ9eTHPYHpDOjDML+4as8GLOXl//55Glpq1hJ/Ft7Flu1cHyaeNi1szCvOadpNH8eVlEVxegstLN4X2xRn9tK5a4Mx2WEOtVxtPtvvr04MWaXDXuEDKyEIyN9rale0FOUyRGDgQsavD7fYQ++IER5BGBkFquvMz3tFwzkC2FvLRR+e8EwYYh+3ATqak8My1crTfNVon2yn4CYaem+pYEzxjyMfRxAA2x315p4zbPV2Xx8SeDvl2s9sthz1sxHeHymjIrBl2Ig3I9VbwgUGqI3wwNjiSBIOtsnWXvL3lk07SrNpK10vsJBT5OGo5UX+85pCya2NRR7f0ZtIM2pMYCfHULmd0b1T4W30GV1iQtQS4iHqGTdgkkqIG0l3oWxHLzPaA42RAT4lFNtHdXlvVFbrCN1kv2IseqVGJxsea0wKyslmTO6af9cYjbkqB+XrXD1zNC4VoRkPewvexrNiRmkzZYLSf+XNiUm6kfUtCE8tQEbBce8mGK1FZdZv5TGXbvNqftlObEOmkP4Rsl2HkMRzpLOOKBQd3Qwbd7tuMSxbDcYdmRttwRhJUFXUGIJoLaSVOZHogbpXW3t21FKDzO7YrtDhvPvSLOSW6kF1OlTiw9zLpErEkUGM4ZfByaRhD0gebUdFeRbYxnPpEs8d1hayKTbiVBtSekqxuW2wvGYrSuV3gR+TI4iNu6ot0Sc2qre+2VKnqyySzSqlScoZ91QfCwEaWaZDr1NTBmSwfqYSiKYwkDg2a4wA9kThq6q9h1sQj3ZsPEqNQcW7md8Tuso7Z3zWBDXlckSy0wrElZprT9ZohMehxguvPgOz1ba2ry0GHGxHGYK2H/e5W7GmVUFalEavT/qy3JIsVJbACxxobtwVxVi5jthSigG+v18O10zbldhsVVYlLYp6TBVWaukHBcTNuTC26jLzJ273xBmUZWulG3WasKGSvN1GDrSC24tWwVRF7J9hUw0WRzBYGpGRrtV1ii+kgHfUMfqWsQgmgBMvPLUgP2vsIG0eDPkpsKioFewyGGd8f5+vAsJeLXBuPUZloNYtpJ+mb7TU3aXYCdIVg2z70DNVQqZayXXFgARjRg+R41xYydtgRvE3ERSazXnMAJkPeMyC6EElV0QJuFJK6ArIe5vQddyikmNsuO8awa/QLPQVObAPEKQK6jAalb5SqIaEDkAhFkDDo3LCMBZU4GLFYIxoMsDzCEivNV0qurXRbU1ECxJQmiXWW6eGiEoBolnrMVmRfZ6ETZxohbvl8kpWOPl1NWYsq5tP5lKBM1oy1+RSXO3IUoXhQTVaSIXNrqlpjXptUg1EwKmqOMeUOHHEuEvSBY83FAweP+gdOR5rIkzVZrUVvVnOG2hA69nQ5ZfoUrOOwBNmrOeqcPXDW0R4Pqwkr6TWnjlN45SGONjpwwHTap3ijE7NBwhKjgvRbxFYd7nLS8McLnJ708XI3UxaLRVkVVb9cLesDWxhCj81m6nq3gBM0I8S+4tugsGWT0cKIaJddaaIUAjFvivEMCrLqt2DKNjV7AOK9rwKzp095bSW1FBWVOAZ2k3kUDVSUFXmj0thqrnG+uCKaE0FMep1gLI/DRdFrDngo01KphzMDdPZ7Ju5SdKSNzbWLiLC3C9mmsQ9DUbH2ldHZthagM9CU+l1I9dEYWC3SGfN2l6cxVgFyYGsx6s0JfmkwgmN2S4oixYVOmP3xrkVEu56dwWESst1gAdmpx3as+p4YdVoJYcZsiEwV2lt7Zmy7pGHvd1pPUhfAW0QtokryAEz0KqE1fiYnY04CboALDmrQ5AY3raaIj3sQwWkXxj19x291c7lG5urMcBaDRJokCNGpSi9Yak7JlhNXl4aiogwEb6XY1AAxWI1BFGXUJIei407jsKtbiDhcTpKAXDjb2M4kP5Acc6MvMHFpWmQ2xFfhMtHD+g9njPL7ku/3op7kWNKuE1GTZRny1ARlfUmJ2jlua4U6QmWewfKymCKSiHeWw2a6l+e7/cwUvWoobXgtTxzHGg2qsWRjBs3KGzwzsdlK26kcmLb4UlsVYCLQm10JZrOm3RqtED2pd3PFdGwCdalAHMnyvscyLKx3QshUupAVauvz2GrcVFOKGc3TkCaUhNkKQbbcwf6MXbJw5BoretK1p/KkhZcOtq7MamT1vQGp+uas2mxngcC1coO1ujS+oxir2pea72TUzAoIxUdohIBSxUbLtgLlxWo73k7jvpHSc99JlK3S35P7Csi7ff2K0fbCmJgaq46xwO3QfYTBUiTd0pO5W1hNVw/i3SxUVKFq7wCRWYoQL/DMWojxuFUgROCDiLcUCxeJcV+1ohGiUEW7OdrFpLF3GV4iyYvz+uDFqY55+dIObl/99N9f/ejz+/vj5PUnf/fq8799mLz6wc9f/9X37+8Rz0KOhi/+49evfvbDB++bz3755tPvPUJ/+Q+vP/vx4+S/f/WHX//2/v7dkBa0786qQfR8chgn8XpV6MVb+/3Ttz+xr8RjH8S3vxLf/iAe/0o8/kF85yvxnTP8N85Yfypo3/rfrWwveJFiuGFd3l6c83JvA6Oirr87rdZD4WcGIMtexCDN6srvoghuQ1AaIL3xcrjJ6iL3WV3mqnCXP3sod59dffyx1fzW9cOOmCCHL+DODArrwH/1N5/Wtf6b//zrN//22QMiDkD1qJ+nBTxZA7Cv7hrf9etneBhl3UM8lO+sIgq3R8rVYyXvhXGRX99uQG66V0h6VK0z4fajbz2/qi/Xf45cfxv9zvWzc7U6M2uxg+Zt/fOty7Mbx6L+FoZmWsV54/nzxhP0yXXj5fkenMhFCDMTxPCqnl6/3YoGDDL4YR3sa3QMkEECp6EZWSfRM9Wz9SEff3y7aRe9vzzcYxy5zQ8v4YR/R/74Xg5tV+O94e8Otf371uNhrS9fcjxsUOvcdv/eA38g8Dnyu6edtaLi2EXYoOacTK8/+fTNj39Sd31GZFWXl7ebyKqbxZu4bvXgKdMO2XXsGZ/dHjIjiIB1eWmBHNxEqed4IQiePbIO8JswyuG7efnQPv7hv773xec///8J9fmPjqHOzuBR93D8XPREufjTKb/wNs7B9Y547JmXl7XjvRWc06w6c97hhXZ0JN/B5Aq/fljaB73Y/+pFH72BVze3wc0uu0Gxm5ssBuHB3Xp0PztfzUMXfFzQoW29OSzvy8+aAyM7YN7dhdp6jH6ODLwsP0L/rI4Lg/q9gTN3zXiR19pvpd4LdGB/PeD0iXrs18//EM9a6idf31I/eWzFLZgDLzjQTqzT/PBxsyvPesDWuD/+489e/f77r/7pF09PyfLms3+tP4Ovf/ib15/8yx///nf19XQ+fvLTL371z19KWhOk1illv2S5OWba4+7+3/P4/n8A80UmQroRAAA= \ No newline at end of file diff --git a/lib/PPXDM动漫.js b/lib/PPXDM动漫.js new file mode 100644 index 0000000..5968d8e --- /dev/null +++ b/lib/PPXDM动漫.js @@ -0,0 +1,11 @@ +Object.assign(muban.mxpro.二级,{ + tab_text:'div--small&&Text', +}); +var rule = { + 模板:'mxpro', + title: 'PPXDM动漫', + host: 'https://ppxdm.com/', + url: 'v-show/fyclass--------fypage---.html', + searchUrl: '/search/**----------fypage---.html', + class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html', +} \ No newline at end of file diff --git a/lib/PTT[优].js b/lib/PTT[优].js new file mode 100644 index 0000000..dfd7326 --- /dev/null +++ b/lib/PTT[优].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflvbHop4YnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ1BUVFvkvJhdJywKICAgIGhvc3Q6ICdodHRwczovL3B0dC5yZWQnLAogICAgaG9tZVVybDogJy96aC1jbicsCiAgICB1cmw6ICcvemgtY24vcC9meWNsYXNzZnlmaWx0ZXInLAogICAgc2VhcmNoVXJsOiAnL3poLWNuL3EvKio/cGFnZT1meXBhZ2UnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUFPMlgzMnNhUVJESC81ZDc2Sk1RNzRkM1o4Qy9wSVJ5dEQ2VXBpbVl0QkNDWUNJR1k5cW9JYldWU2x0SXFpYTFVVWtRZitUU2Y4YmRQZitMdW1sMFp0Y3NCRnFmOUhIM00rdk96bnhudk5uUmRHMzE2WTcyS3I2dHJXcWswaUx2KzFwSTIvQmV4L0g2bmJmK05uNW51TUczTS9WUnVzNjN4d3N0R2JyZlBhdU55dnYzdTArOFJOeDc5dkpGekpqeVViVk11MDJaUitCOHZrVjd0ekszNFB5M2MvTEZsN251VEEzb3B4KzAwcGd4Y01HZ1VXTzNSN0tCRGZ5cTlkQU5ZWER4UTR2MHF6TUc0Q1BKZElhRGtteGdhc2sxYnZFM3lLdzlJRjhQSWNqVDlXT0NQTHlwc3NJa3lDdlBWMHdUN3M3VmgzNEZFSXBzcVVJT2FrRGd4U3picHVrTUVBZ21xeFZKYndBRVJYRzNRRk1sSUZFNGsyc3kvd0lJaWh6TmZoNzJEeERTc2QvMDVpZENJSm14MTRKN09yeVc5UytJL3hFRkF0MjExMkNsSWtJV3ZvdWRvRmVaa1lkVE4wWVd2RGlvblFiTmEzVEtFQkpLZXRmRGdZK3FackorVEVLTnNHRk45TElkOXhLeHV3MUVUWm1hbUJveU5URFZaYXBqR3BacEdGRTlLbEU5aXFrclV4ZFRSNllPcHJaTWJVd2pNbzFnS3NlSzF4NUtCVDA2SnYwOHBHSzZGbFBCOXR2MCtKZWNDbHBKMFZKcmNzSG1tOFJXYk4zYjNPSVhySVUwWXk1OWtvdGEwUUo1MFVITWhlN0pFU3BJM1BkNFFVSWVoWjdKRVFoQWFJYmNEVmRaQ2p4QlM3MHZtTjdOdWVsZExXcVVrWmxTMEpWNmQwMmwzbDFEcVhla0hPRi9uMWVKb1N3RncxeVd3c0tWZ2pXdlVqQnN0YWh0dGFnZHRhZ2R0WExkcFhJWFRya1IzTVgvYWZBSU9sZXNrRWJUQmVTYk5TOUZCSStuM1M3TjVoR0NmSXdidkhES1J0LzJmbEZFaWdHTHQrcGxQMTQ4VmR2Mi8xSTF5L3JpWkF6UkNlb3BZZmEwSWF6cy9IZlF5UUZ5MUxPbmcrYmMvRmx3aW1kdDlObVM5a2wzRDNWNCtFRjJVaUdYM3hFQ1JRYmxBdDA5UkVnOXpEcldza3dXckV5U2Z3QW5lU1p1MnhNQUFBPT0nLAogICAgZmlsdGVyX3VybDogJ3slIGlmIGZ5Y2xhc3MgIT0iMSIgJX17e2ZsLuWcsOWMun19P3BhZ2U9ZnlwYWdleyUgZWxzZSAlfXt7Zmwu57G75Z6LfX0/cGFnZT1meXBhZ2V7e2ZsLuWcsOWMunxzYWZlfX17JSBlbmRpZiAlfXt7Zmwu5bm05Lu9fHNhZmV9fXt7Zmwu5o6S5bqPfHNhZmV9fScsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19wYXJzZTogJy5uYXYtdGFicyYmYTthJiZUZXh0O2EmJmhyZWY7KFxcZCspJywKICAgIGNhdGVfZXhjbHVkZTogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBzZGF0YSA9IHBkZmgoaHRtbCwgJy5jb250YWluZXItZmx1aWQmJnNjcmlwdCYmSHRtbCcpOwogICAgICAgIC8vIGxvZyhzZGF0YSk7CiAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKHNkYXRhKTsKICAgICAgICBpZiAoanNvbi5jb250ZW50VXJsKSB7CiAgICAgICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6IGpzb24uY29udGVudFVybCwganM6ICcnfTsKICAgICAgICB9CiAgICB9KSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICDmjqjojZA6ICcqJywKICAgIC8vzrHlpKfkvazmlrnmoYjljrvpmaTmjqjojZDpobXlub/lkYoKICAgIOS4gOe6pzogJyN2aWRlb3MmJi5jYXJkOm5vdCg6aGFzKC5iYWRnZS1zdWNjZXNzOmNvbnRhaW5zKOW5v+WRiikpKTthOmVxKC0xKSYmVGV4dDtpbWcmJnNyYzsuYmFkZ2Utc3VjY2VzcyYmVGV4dDthOmVxKC0xKSYmaHJlZicsCiAgICDkuoznuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQgZGF0YSA9IGh0bWwuc3BsaXQoJ25vZGU6JylbMV0uc3BsaXQoJ30sJylbMF0gKyAnfSc7CiAgICAgICAgZGF0YSA9IGRhdGEudHJpbSgpOwogICAgICAgIC8vICAgbG9nKGRhdGEpOwogICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShkYXRhKTsKICAgICAgICAvLyAgIGxvZyhqc29uKTsKICAgICAgICBWT0QgPSB7fTsKCiAgICAgICAgVk9ELnZvZF9uYW1lID0ganNvbi50aXRsZTsKICAgICAgICBWT0QudHlwZV9uYW1lID0ganNvbi50eXBlOwogICAgICAgIFZPRC52b2RfaWQgPSBpbnB1dDsKICAgICAgICBWT0Qudm9kX3BpYyA9IHVybGpvaW4oaW5wdXQsIGpzb24udGh1bWJuYWlsKTsKICAgICAgICBWT0Qudm9kX3llYXIgPSBqc29uLnllYXI7CiAgICAgICAgVk9ELnZvZF9hcmVhID0ganNvbi5fYXJlYTsKICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSBqc29uLm5vdGU7CiAgICAgICAgVk9ELnZvZF9jb250ZW50ID0ganNvbi5kZXNjcmlwdGlvbjsKICAgICAgICBWT0Qudm9kX2RpcmVjdG9yID0ganNvbi5kaXJlY3RvcjsKICAgICAgICBWT0Qudm9kX2FjdG9yID0ganNvbi5hY3RvcnM7CiAgICAgICAgbGV0IHZfdGFicyA9IHBkZmEoaHRtbCwgJy5uYXYtdGFicyYmbGknKTsKICAgICAgICBsZXQgdl90YWJfdXJscyA9IHZfdGFicy5tYXAoaXQgPT4gcGQoaXQsICdhJiZocmVmJywgaW5wdXQpKTsKICAgICAgICB2X3RhYnMgPSB2X3RhYnMubWFwKGl0ID0+IHBkZmgoaXQsICdhJiZ0aXRsZScpKTsKICAgICAgICAvLyBsb2codl90YWJfdXJscyk7CiAgICAgICAgVk9ELnZvZF9wbGF5X2Zyb20gPSB2X3RhYnMuam9pbignJCQkJyk7CiAgICAgICAgbGV0IGxpc3RzID0gW107CiAgICAgICAgbGV0IGxpc3QxID0gcGRmYShodG1sLCAnLm1iLTIuZnVsbHdpZHRoJiZhJykubWFwKGl0ID0+IHBkZmgoaXQsICdhJiZUZXh0JykgKyAnJCcgKyBwZChpdCwgJ2EmJmhyZWYnLCBpbnB1dCkpOwogICAgICAgIC8vIGxvZyhsaXN0MSk7CiAgICAgICAgbGlzdHMucHVzaChsaXN0MSk7CiAgICAgICAgaWYgKHZfdGFiX3VybHMubGVuZ3RoID4gMSkgewogICAgICAgICAgICBsZXQgcmVxVXJscyA9IHZfdGFiX3VybHMuc2xpY2UoMSkubWFwKGl0ID0+IHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgdXJsOiBpdCwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDUwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJ1bGUuaGVhZGVycwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGxldCBodG1scyA9IGJhdGNoRmV0Y2gocmVxVXJscyk7CiAgICAgICAgICAgIGh0bWxzLmZvckVhY2goKGh0KSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoaHQpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdDAgPSBwZGZhKGh0LCAnLm1iLTIuZnVsbHdpZHRoJiZhJykubWFwKGl0ID0+IHBkZmgoaXQsICdhJiZUZXh0JykgKyAnJCcgKyBwZChpdCwgJ2EmJmhyZWYnLCBpbnB1dCkpOwogICAgICAgICAgICAgICAgICAgIGxpc3RzLnB1c2gobGlzdDApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBsaXN0cy5wdXNoKFtdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGxldCBwbGF5VXJscyA9IGxpc3RzLm1hcChpdCA9PiBpdC5qb2luKCcjJykpOwogICAgICAgIFZPRC52b2RfcGxheV91cmwgPSBwbGF5VXJscy5qb2luKCckJCQnKTsKICAgIH0pLAogICAg5pCc57SiOiAnKicsCn0K \ No newline at end of file diff --git a/lib/PTT追剧大师.js b/lib/PTT追剧大师.js new file mode 100644 index 0000000..f06e060 --- /dev/null +++ b/lib/PTT追剧大师.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/TVB云播.js b/lib/TVB云播.js new file mode 100644 index 0000000..936fad9 --- /dev/null +++ b/lib/TVB云播.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/alishare.txt b/lib/alishare.txt new file mode 100644 index 0000000..4bee36b --- /dev/null +++ b/lib/alishare.txt @@ -0,0 +1,46 @@ +[ + { + "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" + } +] \ No newline at end of file diff --git a/lib/auete.js b/lib/auete.js new file mode 100644 index 0000000..97d9f2a --- /dev/null +++ b/lib/auete.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/bilfun(自动).js b/lib/bilfun(自动).js new file mode 100644 index 0000000..593117f --- /dev/null +++ b/lib/bilfun(自动).js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/bttwo.json b/lib/bttwo.json new file mode 100644 index 0000000..5c75f11 --- /dev/null +++ b/lib/bttwo.json @@ -0,0 +1,261 @@ + { + + "作者":"cc", + + "站名":"两个BT", + + "主页url":"https://www.bttwo.net/", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗。+
", + + "导演":"导演:&&", + + "主演":"主演:&&", + + "影片状态":"上映:&&", + + "影片类型":"类型:&&", + + "影片地区":"地区:&&", + + "影片年代":"年份:&&", + + "数组":"[不包含:两个BT]", + + "标题":"alt=\"&&\"", + + "副标题":"&&<", + + "图片":"data-original=\"&&\"", + + "链接":"href=\"&&\"", + + "搜索url":"/xssearch?q={wd}", + + "搜索数组":"thumb lazy\"&&", + + "搜索标题":"alt=\"&&\"", + + "搜索副标题":"&&<", + + "搜索图片":"data-original=\"&&\"", + + "搜索链接":"href=\"&&\"", + + "线路数组":"zaixianbf\"&&
", + + "线路标题":"+&&+", + + "播放数组":"paly_list_btn\">&&
", + + "播放标题":">&&<", + + "播放列表":"", + + "分类url":"https://www.bttwo.net/{cateId}/{area}/year/{year}/{class}/page/{catePg};;ak", + + "分类":"影视筛选$movie_bt#最新电影$new-movie#热门下载$hot#本月热门$hot-month#国产剧$zgjun#美剧$meiju#日韩剧$jpsrtv", + + "筛选":{ + "movie_bt":[ + {"key":"area","name":"地区","value":[ + {"v":"","n":"全部地区①"}, + {"v":"movie_bt_cat/不丹","n":"不丹"}, + {"v":"movie_bt_cat/ny","n":"东南亚"}, + {"v":"movie_bt_cat/zhonji","n":"中国"}, + {"v":"movie_bt_cat/zhogngtw","n":"中国台湾"}, + {"v":"movie_bt_cat/dl","n":"中国大陆"}, + {"v":"movie_bt_cat/zhongguoxg","n":"中国香港"}, + {"v":"movie_bt_cat/dm","n":"丹麦"}, + {"v":"movie_bt_cat/wuklan","n":"乌克兰"}, + {"v":"movie_bt_cat/yisl","n":"以色列"}, + {"v":"movie_bt_cat/yl","n":"伊朗"}, + {"v":"movie_bt_cat/els","n":"俄罗斯"}, + {"v":"movie_bt_cat/baojialiya","n":"保加利亚"}, + {"v":"movie_bt_cat/克罗地亚","n":"克罗地亚"}, + {"v":"movie_bt_cat/bingda","n":"冰岛"} + ] + }, + {"key":"area","name":"地区","value":[ + {"v":"","n":"全部地区②"}, + {"v":"movie_bt_cat/jnd","n":"加拿大"}, + {"v":"movie_bt_cat/匈牙利","n":"匈牙利"}, + {"v":"movie_bt_cat/nasilafu","n":"南斯拉夫"}, + {"v":"movie_bt_cat/nanfei","n":"南非"}, + {"v":"movie_bt_cat/kaer","n":"卡塔尔"}, + {"v":"movie_bt_cat/luob","n":"卢森堡"}, + {"v":"movie_bt_cat/yindu","n":"印度"}, + {"v":"movie_bt_cat/印度尼西亚","n":"印度尼西亚"}, + {"v":"movie_bt_cat/taiwan","n":"台湾"}, + {"v":"movie_bt_cat/gelunbiya","n":"哥伦比亚"}, + {"v":"movie_bt_cat/tuerqi","n":"土耳其"}, + {"v":"movie_bt_cat/saierweiya","n":"塞尔维亚"}, + {"v":"movie_bt_cat/moxige","n":"墨西哥"}, + {"v":"movie_bt_cat/aodili","n":"奥地利"} + ] + }, + {"key":"area","name":"地区","value":[ + {"v":"","n":"全部地区③"}, + {"v":"movie_bt_cat/nirily","n":"尼日利亚"}, + {"v":"movie_bt_cat/bx","n":"巴西"}, + {"v":"movie_bt_cat/xl","n":"希腊"}, + {"v":"movie_bt_cat/德国","n":"德国"}, + {"v":"movie_bt_cat/ydl","n":"意大利"}, + {"v":"movie_bt_cat/nw","n":"挪威"}, + {"v":"movie_bt_cat/jirker","n":"捷克"}, + {"v":"movie_bt_cat/摩洛哥","n":"摩洛哥"}, + {"v":"movie_bt_cat/siluofake","n":"斯洛伐克"}, + {"v":"movie_bt_cat/xinjip","n":"新加坡"}, + {"v":"movie_bt_cat/xinxilan","n":"新西兰"}, + {"v":"movie_bt_cat/rb","n":"日本"}, + {"v":"movie_bt_cat/rihan","n":"日韩"}, + {"v":"movie_bt_cat/omei","n":"欧美"}, + {"v":"movie_bt_cat/bilishi","n":"比利时"}, + {"v":"movie_bt_cat/fg","n":"法国"} + ] + }, + {"key":"area","name":"地区","value":[ + {"v":"","n":"全部地区④"}, + {"v":"movie_bt_cat/bolan","n":"波兰"}, + {"v":"movie_bt_cat/波多黎各","n":"波多黎各"}, + {"v":"movie_bt_cat/taigyo","n":"泰国"}, + {"v":"movie_bt_cat/gangtai","n":"港台"}, + {"v":"movie_bt_cat/adly","n":"澳大利亚"}, + {"v":"movie_bt_cat/arl","n":"爱尔兰"}, + {"v":"movie_bt_cat/asny","n":"爱沙尼亚"}, + {"v":"movie_bt_cat/瑞典","n":"瑞典"}, + {"v":"movie_bt_cat/ruishi","n":"瑞士"}, + {"v":"movie_bt_cat/baierls","n":"白俄罗斯"}, + {"v":"movie_bt_cat/秘鲁","n":"秘鲁"}, + {"v":"movie_bt_cat/tunisi","n":"突尼斯"}, + {"v":"movie_bt_cat/ltwan","n":"立陶宛"}, + {"v":"movie_bt_cat/lmny","n":"罗马尼亚"}, + {"v":"movie_bt_cat/mg","n":"美国"} + ] + }, + {"key":"area","name":"地区","value":[ + {"v":"","n":"全部地区⑤"}, + {"v":"movie_bt_cat/芬兰","n":"芬兰"}, + {"v":"movie_bt_cat/yg","n":"英国"}, + {"v":"movie_bt_cat/hl","n":"荷兰"}, + {"v":"movie_bt_cat/lsadlsi","n":"荷属安的列斯"}, + {"v":"movie_bt_cat/feilb","n":"菲律宾"}, + {"v":"movie_bt_cat/pty","n":"葡萄牙"}, + {"v":"movie_bt_cat/dide","n":"西德"}, + {"v":"movie_bt_cat/xby","n":"西班牙"}, + {"v":"movie_bt_cat/yeun","n":"越南"}, + {"v":"movie_bt_cat/ageiting","n":"阿根廷"}, + {"v":"movie_bt_cat/alq","n":"阿联酋"}, + {"v":"movie_bt_cat/hg","n":"韩国"}, + {"v":"movie_bt_cat/xiangg","n":"香港"}, + {"v":"movie_bt_cat/malaxy","n":"马来西亚"}, + {"v":"movie_bt_cat/马耳他","n":"马耳他"} + ] + }, + {"key":"class","name":"类型","value":[ + {"v":"","n":"全部类型①"}, + {"v":"movie_bt_tags/zj","n":"传记"}, + {"v":"movie_bt_tags/ertong","n":"儿童"}, + {"v":"movie_bt_tags/adt","n":"冒险"}, + {"v":"movie_bt_tags/juqing","n":"剧情"}, + {"v":"movie_bt_tags/at","n":"动作"}, + {"v":"movie_bt_tags/donghua","n":"动画"}, + {"v":"movie_bt_tags/lishi","n":"历史"}, + {"v":"movie_bt_tags/guzhuang","n":"古装"}, + {"v":"movie_bt_tags/tongxing","n":"同性"}, + {"v":"movie_bt_tags/xiju","n":"喜剧"}, + {"v":"movie_bt_tags/qihuan","n":"奇幻"}, + {"v":"movie_bt_tags/jiating","n":"家庭"}, + {"v":"movie_bt_tags/kongbu","n":"恐怖"}, + {"v":"movie_bt_tags/xuanni","n":"悬疑"}, + {"v":"movie_bt_tags/qingse","n":"情色"}, + {"v":"movie_bt_tags/jingsong","n":"惊悚"}, + {"v":"movie_bt_tags/戏曲","n":"戏曲"}, + {"v":"movie_bt_tags/zhanzheng","n":"战争"}, + {"v":"movie_bt_tags/gw","n":"歌舞"} + ] + }, + {"key":"class","name":"类型","value":[ + {"v":"","n":"全部类型②"}, + {"v":"movie_bt_tags/wuxia","n":"武侠"}, + {"v":"movie_bt_tags/zhannan","n":"灾难"}, + {"v":"movie_bt_tags/aiqing","n":"爱情"}, + {"v":"movie_bt_tags/fanzui","n":"犯罪"}, + {"v":"movie_bt_tags/短片","n":"短片"}, + {"v":"movie_bt_tags/kehuan","n":"科幻"}, + {"v":"movie_bt_tags/jilu","n":"纪录片"}, + {"v":"movie_bt_tags/xibu","n":"西部"}, + {"v":"movie_bt_tags/yd","n":"运动"}, + {"v":"movie_bt_tags/yinyue","n":"音乐"}, + {"v":"movie_bt_tags/黑色电影","n":"黑色电影"} + ] + }, + {"key":"year","name":"年份","value":[ + {"n":"全部年份","v":""}, + {"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":"1980","v":"1980"}, + {"n":"1978","v":"1978"}, + {"n":"1977","v":"1977"}, + {"n":"1976","v":"1976"}, + {"n":"1975","v":"1975"}, + {"n":"1974","v":"1974"}, + {"n":"1973","v":"1973"}, + {"n":"1972","v":"1972"}, + {"n":"1970","v":"1970"}, + {"n":"1969","v":"1969"}, + {"n":"1963","v":"1963"}, + {"n":"1962","v":"1962"}, + {"v":"1959","n":"1959"}, + {"v":"1954","n":"1954"}, + {"v":"1952","n":"1952"}, + {"v":"1949","n":"1949"}, + {"v":"1938","n":"1938"}, + {"v":"1931","n":"1931"}, + {"v":"1925","n":"1925"}, + {"v":"1921","n":"1921"} + ] + } + ] + } + } + diff --git a/lib/cally66.js b/lib/cally66.js new file mode 100644 index 0000000..048a97a --- /dev/null +++ b/lib/cally66.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/cally66影视.js b/lib/cally66影视.js new file mode 100644 index 0000000..67c5397 --- /dev/null +++ b/lib/cally66影视.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgICJkZXNjIjogIi5tb2R1bGUtaW5mby1pdGVtOmVxKDEpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtOmVxKDIpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtOmVxKDMpJiZUZXh0OzsiLAogICAgInRhYl90ZXh0IjogInNwYW4mJlRleHQiCn0pCnZhciBydWxlID0gewogICAg5qih5p2/OiAibXhwcm8iLAogICAgdGl0bGU6ICJjYWxseTY2IiwKICAgIGhvc3Q6ICJodHRwczovL2NhbGx5NjYuaWN1IiwKICAgIHVybDogIi92b2QvbGlzdC5odG1sP2Z5ZmlsdGVyIiwKICAgIHNlYXJjaFVybDogImh0dHBzOi8vY2FsbHk2Ni5pY3UvcHVibGljL2F1dG8vc2VhcmNoMS5odG1sP2tleXdvcmQ9KiomcGFnZT1meXBhZ2UiLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcjogIkg0c0lBQUFBQUFBQUFPMlliMC9hVUJUR3YwdGY3SlhNbGhZRWsyVWZaQ0ZMTThtMkROM2ltSWt4SmlvREFlZWNpOElVRXBjTkJ6aWRzUG1YV3Z3eXZiMzBXNndnY0M2SGsra0wzS3UrdlBkNWJtOTdubk4vYmJvZ0tkTGtrd1hwVlhSZW1wUllPc1hyaGpRbXplalRVWEU4cDhmZVJUdkdtZlowc3VJa0t1MXBkeUF0am5WbnN4WExMUExNYWxkNHBzZWpUMTlPUFFxREkxZGttZkt3UTVIN0ZwNnUyNGtrWVZINkZudjVrNzJVSXl4KzJDaFRwcStpd2tibFRYWnBFQllOTmtwazdaVmR3aEtBamZaWDZhc0V4Ykx3TGNveUFSdXRIUExjSm1FSndWVlNuNTJkS21HQjZ2TEdBVE8zaHkxK3FLNmQvbUkxTW9RRnFzdU5EWmE4R0xab3drYlpZMjRlREZzQ1FvekxUV2UzU1ZpRWpjeE5iaFQ1MWlrejY5amxKaGxwKzdwZGVYbGlHYWJRbGIzeFA3cHlmTzcxMUhqczVkdjR3eGZ4NmRqajNwWGxCL0g1TnplRjY5K0lYL1pyM1ZYelVYMjJVdzlSVkpHb2lxSWZpUUZSVkpBWUZFVVppZEFPU3NEbnhqcW9RaWNvc2svQjl3dlp5QUdmak5jS3gwdVdmVEplTEI2dHdvbWRyMklkcFZHc3NROE5JWTNlK0U2TUtKV2RuVlIzVnArTjZwMXFRN250aTJPMlVjTTZWTnpPNzl2RlE2ekRrWFgycXF4Z1loMUM0YzJQaEE2NTJIOXFoQTdSdE5icWhCNFMxbThUdWtEQTV2bXdya0krYkwzR0dqK3dEZ0ZaMSsrSjlVTDlEc3Z1STJJZDZzZVNaK3hYQXV2YVFNQ3Q0Nk5XWlFrQzdvL3ZGSERCZFAzZDJaZys4eHd4MVMwZ29Rc0IvUzRSZWxCc0FFS2ZFQnVBMENFZ0oyK3k5VHpXdzNTQmVucWJvSkhGeUpqa0g5bTdzbUJhamJMN21zSWd4a2VCc0tnb2JjSVNFT3ZWUGhQREZ0enpoQ1VrVnNVeWNvUWxmUCtnSG1DeEIyb1AxQjZvUFZEZkJtcDFaS0R1bkFOdVhMVXlEUVEvb1J0dVRnUHRVc1NTdUU5TnUzQm4wQzdoZkoyZXMxS09kbW4zRCtVQnRIcFE5cURzUWRtRDhtMVExa2I4OVp5dDJGYy9NZnlHUG4xSlZ4QmxUcnNtMElQUnJ0RDk0MVlUMGVmaDFzT3RoMXNQdDdkK0E0ZEh4VnRldlc2ZFpSSDNOR2dFWjNXZGIrMWhIUnFCYlpSYTM1TlloMGF3akIycitSWHIwQWhPd21RWEsxaUhuSGlhK0gyaENXK0M1VFdleGorWk5jakpXVXExdmgxaEhkTWY2LytCK3lwazdZSC9MdUNQTFA0RnVMc1daOUVhQUFBPSIsCiAgICBmaWx0ZXJfdXJsOiAiJnBhZ2U9ZnlwYWdlJnt7Zmwu5YiG57G7fX0me3tmbC7lubTku719fSZ7e2ZsLuWcsOWMun19Jnt7Zmwu6K+t6KiAfX0mdHlwZV9pZD1meWNsYXNzIiwKICAgIGhlYWRlcnM6IHsKICAgICAgICAiVXNlci1BZ2VudCI6ICIqbW9iaWxlIgogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19wYXJzZTogIi50ZW1faGVhZF9tZXVuIGxpO2EmJlRleHQ7YSYmaHJlZjtpZD0oXFxkKykiLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKCiAgICAgICBsZXQgZmlsZSA9IG51bGw7CiAgICAgICBsZXQgcXVlcnkgPSBnZXRRdWVyeShpbnB1dCk7IAogICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KCdodHRwczovL2NhbGx5NjYuaWN1L29wZW5hcGkvcGxheWxpbmUvJytxdWVyeS5saW5lX2lkKTsKICAgICAgICAgIC8vaHR0cHM6Ly9jYWxseTY2LmljdS9vcGVuYXBpL3BsYXlsaW5lLzMxMDE4CiAgIGxldCB1cmwgPSBKU09ONS5wYXJzZShodG1sKS5pbmZvLmZpbGU7CgoKICAvL2xldCBoY29uZiA9IGh0bWwubWF0Y2goL3RlbUxpbmVMaXN0ID0gKC4qPyk7XHMvKVsxXTsKICAvL2xldCBqc29uID0gSlNPTjUucGFyc2UoaGNvbmYpOwogIC8vanNvbi5mb3JFYWNoKGl0ID0+IHsKICAgLy8gaWYgKGl0LmlkID09IHF1ZXJ5LmxpbmVfaWQpIHsKICAvLyAgICBmaWxlID0gaXQuZmlsZTsgLy8g5pu05pawIGZpbGUg55qE5YC8CiAgLy8gIH0KICAgLy8gICAgIH0pCgogIC8vbGV0IHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZShmaWxlLnN1YnN0cmluZygzKSkpOwoKCiAgLy9sb2codXJsKQogIGlmICgvXC4obTN1OHxtcDR8bTRhfG1wMykvLnRlc3QodXJsKSkgewogICAgaW5wdXQgPSB7CiAgICAgIHBhcnNlOiAwLAogICAgICBqeDogMCwKICAgICAgdXJsOiB1cmwsCiAgICB9OwogIH0gZWxzZSB7CiAgICBpbnB1dCA9IHVybCAmJiB1cmwuc3RhcnRzV2l0aCgnaHR0cCcpICYmIHRlbGxJc0p4KHVybCkgPyB7cGFyc2U6MCxqeDoxLHVybDp1cmx9OmlucHV0OwogIH0KICAgIH0pLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogIioiLAogICAg5LiA57qnOiAiYm9keSBhLm1vZHVsZS1wb3N0ZXItaXRlbS5tb2R1bGUtaXRlbTsubW9kdWxlLXBvc3Rlci1pdGVtLXRpdGxlJiZUZXh0Oy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmIiwKICAgIOaQnOe0ojogIi5tb2R1bGUtY2FyZC1pdGVtOy5tb2R1bGUtY2FyZC1pdGVtLXRpdGxlJiZUZXh0Oyo7KjsqIgp9 \ No newline at end of file diff --git a/lib/changzhang.json b/lib/changzhang.json new file mode 100644 index 0000000..dd15fb1 --- /dev/null +++ b/lib/changzhang.json @@ -0,0 +1,124 @@ + { + + "作者":"cc", + + "站名":"厂长资源", + + "主页url":"https://cz01.me/", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗!+
&&
", + + "导演":"导演:&&", + + "主演":"主演:&&", + + "影片年代":"年份:&&", + + "影片地区":"地区:&&", + + "影片类型":"类型:&&", + + "数组":"
  • &&
  • ", + + "图片":"data-original=\"&&\"", + + "标题":"alt=\"&&\"", + + "链接":"href=\"&&\"", + + "副标题":"jidi\">&&+furk\">&&+rating\">&&", + + "搜索模式":"1", + + "搜索url":"https://search.ymck.me/index.php?q={wd}", + + "搜索数组":"&&[包含:厂长资源]", + + "搜索副标题":"&&", + + "搜索标题":"class='movie_name'>&&", + + "搜索链接":"href=\"&&\"", + + "搜索图片":"http://img.vopox.net/wp-content/uploads/2023/03/y2fga2jzwq2.jpg", + + "线路数组":"
    &&
    ", + + "线路标题":"&&[替换:在线观看>>厂长资源]", + + "播放数组":"
    &&
    ", + + "播放列表":"", + + "播放标题":">&&<[替换:立即播放>>空]", + + "播放链接":"href=\"&&\"", + + "分类url":"https://cz01.me/{cateId}/{class}/{area}/page/{catePg};;m0", + + "分类":"全部&豆瓣电影Top250&高分影视&最新电影&热映中&站长推荐&电影&国产剧&电视剧&动画&日剧&韩剧&美剧&海外剧&俄罗斯电影&加拿大电影&华语电影&印度电影&日本电影&欧美电影&法国电影&英国电影&韩国电影&纪录片", + + "分类值":"movie_bt&dbtop250&gaofenyingshi&zuixindianying&reyingzhong&movie_bt_series/zhanchangtuijian&movie_bt_series/dyy&movie_bt_series/guochanju&movie_bt_series/dianshiju&movie_bt_series/dohua&movie_bt_series/rj&movie_bt_series/hj&movie_bt_series/mj&movie_bt_series/hwj&movie_bt_series/eluosidianying&movie_bt_series/jianadadianying&movie_bt_series/huayudianying&movie_bt_series/yindudianying&movie_bt_series/ribendianying&movie_bt_series/meiguodianying&movie_bt_series/faguodianying&movie_bt_series/yingguodianying&movie_bt_series/hanguodianying&movie_bt/movie_bt_tags/jlpp", + + "筛选":{ + "movie_bt":[ + {"key":"area","name":"分类","value":[ + {"v":"","n":"全部分类"}, + {"v":"movie_bt_series/zhanchangtuijian","n":"站长推荐"}, + {"v":"movie_bt_series/dyy","n":"电影"}, + {"v":"movie_bt_series/dianshiju","n":"电视剧"}, + {"v":"movie_bt_series/dohua","n":"动画"}, + {"v":"movie_bt_series/guochanju","n":"国产剧"}, + {"v":"movie_bt_series/mj","n":"美剧"}, + {"v":"movie_bt_series/rj","n":"日剧"}, + {"v":"movie_bt_series/hj","n":"韩剧"}, + {"v":"movie_bt_series/hwj","n":"海外剧(其他)"}, + {"v":"movie_bt_series/huayudianying","n":"华语电影"}, + {"v":"movie_bt_series/meiguodianying","n":"欧美电影"}, + {"v":"movie_bt_series/ribendianying","n":"日本电影"}, + {"v":"movie_bt_series/hanguodianying","n":"韩国电影"}, + {"v":"movie_bt_series/yingguodianying","n":"英国电影"}, + {"v":"movie_bt_series/faguodianying","n":"法国电影"}, + {"v":"movie_bt_series/yindudianying","n":"印度电影"}, + {"v":"movie_bt_series/eluosidianying","n":"俄罗斯电影"}, + {"v":"movie_bt_series/jianadadianying","n":"加拿大电影"}, + {"v":"movie_bt_series/huiyuanzhuanqu","n":"会员专区"} + ] + }, + {"key":"class","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"传记","v":"movie_bt_tags/chuanji"}, + {"n":"儿童","v":"movie_bt_tags/etet"}, + {"n":"冒险","v":"movie_bt_tags/maoxian"}, + {"n":"剧情","v":"movie_bt_tags/juqing"}, + {"n":"动作","v":"movie_bt_tags/dozuo"}, + {"n":"动漫","v":"movie_bt_tags/doman"}, + {"n":"动画","v":"movie_bt_tags/dhh"}, + {"n":"历史","v":"movie_bt_tags/lishi"}, + {"n":"古装","v":"movie_bt_tags/guzhuang"}, + {"n":"同性","v":"movie_bt_tags/tongxing"}, + {"n":"喜剧","v":"movie_bt_tags/xiju"}, + {"n":"奇幻","v":"movie_bt_tags/qihuan"}, + {"n":"家庭","v":"movie_bt_tags/jiating"}, + {"n":"恐怖","v":"movie_bt_tags/kubu"}, + {"n":"悬疑","v":"movie_bt_tags/xuanyi"}, + {"n":"情色","v":"movie_bt_tags/qingse"}, + {"n":"惊悚","v":"movie_bt_tags/kingsong"}, + {"n":"战争","v":"movie_bt_tags/zhanzhen"}, + {"n":"歌舞","v":"movie_bt_tags/gw"}, + {"n":"武侠","v":"movie_bt_tags/wuxia"}, + {"n":"灾难","v":"movie_bt_tags/zainan"}, + {"n":"爱情","v":"movie_bt_tags/aiqing"}, + {"n":"犯罪","v":"movie_bt_tags/fanzui"}, + {"n":"短片","v":"movie_bt_tags/dp"}, + {"n":"科幻","v":"movie_bt_tags/kh"}, + {"n":"纪录片","v":"movie_bt_tags/jlpp"}, + {"n":"西部","v":"movie_bt_tags/xb"}, + {"n":"运动","v":"movie_bt_tags/yd"}, + {"n":"音乐","v":"movie_bt_tags/yy"} + ] + } + ] + } + } + diff --git a/lib/cheerio.min.js b/lib/cheerio.min.js new file mode 100644 index 0000000..8250ff5 --- /dev/null +++ b/lib/cheerio.min.js @@ -0,0 +1 @@ +var e,t=function(){return t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0?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$\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`;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;i0&&(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(;ac.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;n1&&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{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{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":">"},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;r1)for(var n=1;n0&&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;s0;)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;r0?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(;Bt1024){for(var t=0,n=xt.length-Bt;t=!".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;t2?i-2:0),a=2;a0||!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;t0;){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;re.length)a=i.slice(0,e.length),i.slice(a.length,o).forEach((function(e,n){n":">","<=":"<=",">=":">="},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;r0&&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;r0&&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=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=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()),oc?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=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=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=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;it;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;le.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;a1?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-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=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=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(n0&&n0&&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=0&&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=r&&e.charCodeAt(t)<=i;)s=10*s+(e.charCodeAt(t)-r),t++;return t===n?null:s}function h(){for(;t=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=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=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=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;re.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;ee.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;eI(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%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;i1&&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;ipa(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;t0})},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=e.length?null:e[t+n],h=0;h-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;i0&&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=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=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=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>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(ur))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;t0&&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;e1114111)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=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[e.name,e.value])));let i=0;for(let e=0;er.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;re.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;t0&&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(;n0&&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)}`}`}(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<>>(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); +}()); diff --git a/lib/crypto-js.js b/lib/crypto-js.js new file mode 100644 index 0000000..4e02040 --- /dev/null +++ b/lib/crypto-js.js @@ -0,0 +1,6191 @@ +;(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<>>(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/lib/damifan.wiki b/lib/damifan.wiki new file mode 100644 index 0000000..ea7a1eb --- /dev/null +++ b/lib/damifan.wiki @@ -0,0 +1,109 @@ +/** + * 传参 ?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/lib/douban.json b/lib/douban.json new file mode 100644 index 0000000..514a4a2 --- /dev/null +++ b/lib/douban.json @@ -0,0 +1,794 @@ +{ + "hot_gaia": [ + { + "key": "sort", + "name": "排序", + "value": [ + { + "n": "热度", + "v": "recommend" + }, + { + "n": "最新", + "v": "time" + }, + { + "n": "评分", + "v": "rank" + } + ] + }, + { + "key": "area", + "name": "地区", + "value": [ + { + "n": "全部", + "v": "全部" + }, + { + "n": "华语", + "v": "华语" + }, + { + "n": "欧美", + "v": "欧美" + }, + { + "n": "韩国", + "v": "韩国" + }, + { + "n": "日本", + "v": "日本" + } + ] + } + ], + "tv_hot": [ + { + "key": "type", + "name": "分类", + "value": [ + { + "n": "综合", + "v": "tv_hot" + }, + { + "n": "国产剧", + "v": "tv_domestic" + }, + { + "n": "欧美剧", + "v": "tv_american" + }, + { + "n": "日剧", + "v": "tv_japanese" + }, + { + "n": "韩剧", + "v": "tv_korean" + }, + { + "n": "动画", + "v": "tv_animation" + } + ] + } + ], + "show_hot": [ + { + "key": "type", + "name": "分类", + "value": [ + { + "n": "综合", + "v": "show_hot" + }, + { + "n": "国内", + "v": "show_domestic" + }, + { + "n": "国外", + "v": "show_foreign" + } + ] + } + ], + "movie": [ + { + "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": "中国香港" + }, + { + "n": "中国台湾", + "v": "中国台湾" + }, + { + "n": "英国", + "v": "英国" + }, + { + "n": "法国", + "v": "法国" + }, + { + "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": "T" + }, + { + "n": "首映时间", + "v": "R" + }, + { + "n": "高分优先", + "v": "S" + } + ] + }, + { + "key": "年代", + "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": "2010年代", + "v": "2010年代" + }, + { + "n": "2000年代", + "v": "2000年代" + }, + { + "n": "90年代", + "v": "90年代" + }, + { + "n": "80年代", + "v": "80年代" + }, + { + "n": "70年代", + "v": "70年代" + }, + { + "n": "60年代", + "v": "60年代" + }, + { + "n": "更早", + "v": "更早" + } + ] + } + ], + "tv": [ + { + "key": "类型", + "name": "类型", + "value": [ + { + "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": "音乐" + } + ] + }, + { + "key": "综艺形式", + "name": "综艺形式", + "value": [ + { + "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": "爱尔兰" + }, + { + "n": "澳大利亚", + "v": "澳大利亚" + } + ] + }, + { + "key": "sort", + "name": "排序", + "value": [ + { + "n": "近期热度", + "v": "T" + }, + { + "n": "首播时间", + "v": "R" + }, + { + "n": "高分优先", + "v": "S" + } + ] + }, + { + "key": "年代", + "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": "2010年代", + "v": "2010年代" + }, + { + "n": "2000年代", + "v": "2000年代" + }, + { + "n": "90年代", + "v": "90年代" + }, + { + "n": "80年代", + "v": "80年代" + }, + { + "n": "70年代", + "v": "70年代" + }, + { + "n": "60年代", + "v": "60年代" + }, + { + "n": "更早", + "v": "更早" + } + ] + }, + { + "key": "平台", + "name": "平台", + "value": [ + { + "n": "全部", + "v": "" + }, + { + "n": "腾讯视频", + "v": "腾讯视频" + }, + { + "n": "爱奇艺", + "v": "爱奇艺" + }, + { + "n": "优酷", + "v": "优酷" + }, + { + "n": "湖南卫视", + "v": "湖南卫视" + }, + { + "n": "Netflix", + "v": "Netflix" + }, + { + "n": "HBO", + "v": "HBO" + }, + { + "n": "BBC", + "v": "BBC" + }, + { + "n": "NHK", + "v": "NHK" + }, + { + "n": "CBS", + "v": "CBS" + }, + { + "n": "NBC", + "v": "NBC" + }, + { + "n": "tvN", + "v": "tvN" + } + ] + } + ], + "rank_list_movie": [ + { + "key": "榜单", + "name": "榜单", + "value": [ + { + "n": "实时热门电影", + "v": "movie_real_time_hotest" + }, + { + "n": "一周口碑电影榜", + "v": "movie_weekly_best" + }, + { + "n": "豆瓣电影Top250", + "v": "movie_top250" + } + ] + } + ], + "rank_list_tv": [ + { + "key": "榜单", + "name": "榜单", + "value": [ + { + "n": "实时热门电视", + "v": "tv_real_time_hotest" + }, + { + "n": "华语口碑剧集榜", + "v": "tv_chinese_best_weekly" + }, + { + "n": "全球口碑剧集榜", + "v": "tv_global_best_weekly" + }, + { + "n": "国内口碑综艺榜", + "v": "show_chinese_best_weekly" + }, + { + "n": "国外口碑综艺榜", + "v": "show_global_best_weekly" + } + ] + } + ] +} diff --git a/lib/drpy2.js b/lib/drpy2.js new file mode 100644 index 0000000..e6635be --- /dev/null +++ b/lib/drpy2.js @@ -0,0 +1,3541 @@ +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 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' + +function init_test() { + // 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 = {}; +let vercode = typeof (pdfl) === 'function' ? 'drpy2.1' : 'drpy2'; +const VERSION = vercode + ' 3.9.50beta29 20240613'; +/** 已知问题记录 + * 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(''); + } + + //log('播放的地址:' + m3u8_url); + let m3u8 = request(m3u8_url, option); + //log('m3u8处理前:' + m3u8); + m3u8 = m3u8.trim().split('\n').map(it => it.startsWith('#') ? it : urljoin(m3u8_url, it)).join('\n'); + //log('m3u8处理后:============:' + m3u8); + // 获取嵌套m3u8地址 + m3u8 = m3u8.replace(/\n\n/ig, '\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); + } + //log('----处理有广告的地址----'); + 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; + //log('字符串长度:' + firststrlen); + let ml = Math.round(ss.length / 2).toString().length;//取数据的长度的位数 + //log('数据条数的长度:' + ml); + //找出最后一条播放地址 + 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); + //log('最小相同字符长度:' + maxl); + 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('处理完成'); + log('处理耗时:' + (new Date().getTime() - ts).toString()); + 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; + }, {}); +} + +/** + * 海阔网页请求函数完整封装 + * @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; + } + 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}); + // 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 '{}' + } + 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) { + if (/系统安全验证|输入验证码/.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') { + if (ext.startsWith('http') || ext.startsWith('file://')) { + let query = getQuery(ext); // 获取链接传参 + 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 + 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); + } + } + // print(rule.headers); + 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; + +/** + * 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 +} + +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/lib/drpy2.min.js b/lib/drpy2.min.js new file mode 100644 index 0000000..e1942cd --- /dev/null +++ b/lib/drpy2.min.js @@ -0,0 +1,73 @@ +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 模板 from"./模板.js";import{gbkTool}from"./gbk.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log("本地代理地址:"+getProxyUrl());console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function ocr_demo_test(){let img_base64=`iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`;OcrApi.api=OCR_API;let code=OcrApi.classification(img_base64);log("测试验证码图片的ocr识别结果为:"+code)}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,{outputEncoding:"base64",options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("公钥加密");console.log(encryptedWithPublic);let decryptedWithPrivate=NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic,pkcs1_private,{options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("私钥解密");console.log(decryptedWithPrivate);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"}}});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-----`,{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{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.50beta29 20240613";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";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|榜|评论";const OCR_RETRY=3;const OCR_API="https://api.nn.ci/ocr/b64/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)$|^(data-|url-|src-)/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;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>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(ithis.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>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&31)<<6|char2&63);break;case 14:char2=array[i++];char3=array[i++];out+=String.fromCharCode((c&15)<<12|(char2&63)<<6|(char3&63)<<0);break}}return out}function gzip(str){let arr=pako.gzip(str,{to:"string"});return uint8ArrayToBase64(arr)}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)}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{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,headers){let ts=(new Date).getTime();let option=headers?{headers:headers}:{};function b(s1,s2){let i=0;while(iit.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");let firststr=ss.find(x=>!x.startsWith("#"));let maxl=0;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=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=[];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{}}}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="";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}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.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},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 keysToLowerCase(obj){return Object.keys(obj).reduce((result,key)=>{const newKey=key.toLowerCase();result[newKey]=obj[key];return result},{})}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(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"){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=obj||{};obj.method="POST";return request(url,obj)}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:cookie,html: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(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;i0){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=_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)}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.一级?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.图片替换){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})}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)}url=url.replaceAll("fyclass",cateObj.tid);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.图片替换){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))}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.一级?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.图片替换){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.图片来源}})}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 list_url_prefix=p.list_url_prefix||"";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i1&&!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);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){}for(let i=0;i0){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}毫秒`);try{vod=vodDeal(vod)}catch(e){console.log(`vodDeal发生错误:${e.message}`)}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:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0: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.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}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 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""}}];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}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""}}function init(ext){console.log("init");rule={};rule_fetch_params={};fetch_params=null;try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")||ext.startsWith("file://")){let query=getQuery(ext);let js=request(ext,{method:"GET"});if(js){js=getOriginalJs(js);eval("(function(){"+js.replace("var rule","rule")+"})()")}if(query.type==="url"&&query.params){rule.params=urljoin(ext,query.params)}else if(query.params){rule.params=query.params}}else{ext=getOriginalJs(ext);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){console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`)}}if(match_muban){muban["自动"]=muban[match_muban];if(rule["模板修改"]&&rule["模板修改"].startsWith("js:")){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)}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||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:"";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)}}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,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)}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 getRule(key){return key?rule[key]||"":rule}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{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,DRPY:DRPY}; \ No newline at end of file diff --git a/lib/ffzy.json b/lib/ffzy.json new file mode 100644 index 0000000..f6ab922 --- /dev/null +++ b/lib/ffzy.json @@ -0,0 +1,156 @@ + { + "主页url":"http://ffzy1.tv/", + + "站名":"非凡资源网", + + "首页":"电视剧", + + "请求头":"User-Agent$Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1", + + "二次截取":"\"list\"*[&&]", + + "数组":"{&&\"vod_content\"", + + "图片":"vod_pic\"*\"&&\"", + + "标题":"vod_name\"*\"&&\"", + + "链接":"http://ffzy1.tv/index.php/vod/detail/id/+\"vod_id\":&&,+.html", + + "副标题":"vod_remarks\":\"&&\"", + + "搜索模式":"1", + + "搜索url":"http://ffzy5.tv/index.php/ajax/suggest.html?mid=1&wd={wd}", + + "搜索数组二次截取":"\"list\"*[&&]", + + "搜索数组":"{&&}", + + "搜索图片":"\"pic\"*\"&&\"", + + "搜索标题":"\"name\"*\"&&\"", + + "搜索链接":"http://ffzy5.tv/index.php/vod/detail/id/+\"id\":&&,+.html", + + "线路数组":"

    &&

    [替换:ffm3u8>>🚛非凡🚛①#feifan>>🚛非凡🚛②][排序:🚛非凡🚛①>>🚛非凡🚛②]", + + "线路标题":"非凡&&地址", + + "影片类型":"类型:&&

    ", + + "影片年代":"年代:&&

    ", + + "影片地区":"地区:&&

    ", + + "导演":"导演:&&

    ", + + "主演":"主演:&&

    ", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗。+
    ", + + "播放数组":"
    &&
    ", + + "播放列表":"", + + "播放标题":"title=\"&&\"[不包含:复制]", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4", + + "分类url":"http://ffzy1.tv/index.php/ajax/data?mid=1&tid={cateId}&page={catePg}&limit=20", + + "筛选":{ + + "34":[{"key":"cateId","name":"类型","value":[ + {"n":"电影","v":"1"}, + {"n":"动作片","v":"6"}, + {"n":"喜剧片","v":"7"}, + {"n":"爱情片","v":"8"}, + {"n":"科幻片","v":"9"}, + {"n":"恐怖片","v":"10"}, + {"n":"剧情片","v":"11"}, + {"n":"战争片","v":"12"}, + {"n":"纪录片","v":"20"} + ] + }, + {"key":"cateId","name":"类型","value":[ + {"n":"剧集","v":"2"}, + {"n":"国产剧","v":"13"}, + {"n":"港台剧","v":"14"}, + {"n":"韩国剧","v":"15"}, + {"n":"欧美剧","v":"16"}, + {"n":"台湾剧","v":"21"}, + {"n":"日本剧","v":"22"}, + {"n":"海外剧","v":"23"}, + {"n":"泰国剧","v":"24"} + ] + }, + {"key":"cateId","name":"类型","value":[ + {"n":"综艺","v":"3"}, + {"n":"大陆综艺","v":"25"}, + {"n":"港台综艺","v":"26"}, + {"n":"日韩综艺","v":"27"}, + {"n":"欧美综艺","v":"28"} + ] + }, + {"key":"cateId","name":"类型","value":[ + {"n":"动漫","v":"4"}, + {"n":"国产动漫","v":"29"}, + {"n":"日本动漫","v":"30"}, + {"n":"欧美动漫","v":"31"}, + {"n":"港台动漫","v":"32"}, + {"n":"海外动漫","v":"33"} + ] + } + ], + "1":[ + {"key":"cateId","name":"类型","value":[ + {"n":"电影","v":"1"}, + {"n":"动作片","v":"6"}, + {"n":"喜剧片","v":"7"}, + {"n":"爱情片","v":"8"}, + {"n":"科幻片","v":"9"}, + {"n":"恐怖片","v":"10"}, + {"n":"剧情片","v":"11"}, + {"n":"战争片","v":"12"}, + {"n":"纪录片","v":"20"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"剧集","v":"2"}, + {"n":"国产剧","v":"13"}, + {"n":"港台剧","v":"14"}, + {"n":"韩国剧","v":"15"}, + {"n":"欧美剧","v":"16"}, + {"n":"台湾剧","v":"21"}, + {"n":"日本剧","v":"22"}, + {"n":"海外剧","v":"23"}, + {"n":"泰国剧","v":"24"} + ] + } + ], + "3":[ + {"key":"cateId","name":"类型","value":[ + {"n":"综艺","v":"3"}, + {"n":"大陆综艺","v":"25"}, + {"n":"港台综艺","v":"26"}, + {"n":"日韩综艺","v":"27"}, + {"n":"欧美综艺","v":"28"} + ] + } + ], + "4":[ + {"key":"cateId","name":"类型","value":[ + {"n":"动漫","v":"4"}, + {"n":"国产动漫","v":"29"}, + {"n":"日本动漫","v":"30"}, + {"n":"欧美动漫","v":"31"}, + {"n":"港台动漫","v":"32"}, + {"n":"海外动漫","v":"33"} + ] + } + ] + } + } diff --git a/lib/freeok.js b/lib/freeok.js new file mode 100644 index 0000000..6cf9c1e --- /dev/null +++ b/lib/freeok.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/51STW7UMBTec4ooSEmn1EmnCBYZseAArKC7SugldiZWPXFqOzOTMpV6AEDtAgSCDSygBwAJVeI2VdPeAsf20Blm+BHe2P7e9973/sYgPFEz8uDZLU8fRRUjiRfmghC+H24ZsOBSaaxQqpJJHE8mk8jao0pwx6kF05R4zDGSBZ/EeZMxkBK5kzcVDIl+RIUaMecjCYis2LWekvcljzc3EfoHH0i7LHcsdFDTbP+xwRNv22I5ZYoIS3NQQQATIRPPVhruSiLQwyEpVaj1H/FDyhjE96Jtp3RkL1PG0wqE7PoSlTBOQQRBzYKA0QEEwRMyVd1dCJIP4o29PXynt5ixDUCmGasxScL21durs+PZ9afX1x++ztrvp+27NzNHrRg0cyklamJRBoeNlnYcRkdUT+O+/V2+PLt6caKtKcdNEEQyE5wxlPLpIBpxrAeLKj09XSlVZDSHuvc6OzLjdyXR0TAIMChAXNAhLYENFv1RyRVZrt5liHlt+n5TwcW34/b8802Wi2loX6P6/3oX589NdDtX30TzE88v+o7+M0yZc6RgaGHfevtat2NHXZsZB/xLEnMaJjIzvMVgXWIJOdjo99ZJza07f7Te7S3nk/FS6aVc1SqV0N9MUV4ueyhI5SJd/030uZ1RqZYI3Z6hDu30b1Pc88B363558r798tGNylu7MBkIvLouv+vf34a42hTkOmB54dbRD+4bSiykBAAA \ No newline at end of file diff --git a/lib/gbk.js b/lib/gbk.js new file mode 100644 index 0000000..796d53a --- /dev/null +++ b/lib/gbk.js @@ -0,0 +1,68 @@ +/*** + * 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/lib/guangun.json b/lib/guangun.json new file mode 100644 index 0000000..ab2d750 --- /dev/null +++ b/lib/guangun.json @@ -0,0 +1,372 @@ + { + + "作者":"cc", + + "站名":"光棍影视", + + "主页url":"https://www.ggdy.net/", + + "简介":"该站点无完整的剧情介绍,暂时无法提供简介…", + + "导演":"导演:&&

    ", + + "主演":"主演:&&

    ", + + "影片状态":"状态:&&

    ", + + "影片类型":"类型:&&

    ", + + "影片地区":"地区:&&

    ", + + "影片年代":"#a29999\">(&&)", + + "数组":"stui-vodlist__thumb&&", + + "标题":"title=\"&&\"", + + "副标题":"text-right\">&&", + + "图片":"data-original=\"&&\"", + + "链接":"href=\"&&\"", + + "搜索url":"/so/-------------.html;post;wd={wd}", + + "搜索数组":"stui-vodlist__thumb&&", + + "搜索标题":"title=\"&&\"", + + "搜索副标题":"text-right\">&&", + + "搜索图片":"data-original=\"&&\"", + + "搜索链接":"href=\"&&\"", + + "线路数组":"

    [不包含:ikun资源#卧龙资源#闪电资源#红牛资源]", + + "线路标题":">&&<", + + "播放数组":"stui-content__playlist clearfix&&", + + "播放标题":">&&<", + + "播放列表":"", + + "分类url":"https://www.ggdy.net/show/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;ak", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4", + + "筛选":{ + "1":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":"1"}, + {"n":"动作片","v":"6"}, + {"n":"喜剧片","v":"7"}, + {"n":"爱情片","v":"8"}, + {"n":"科幻片","v":"9"}, + {"n":"恐怖片","v":"10"}, + {"n":"剧情片","v":"11"}, + {"n":"战争片","v":"12"}, + {"n":"动画片","v":"21"}, + {"n":"纪录片","v":"20"} + ] + }, + {"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":"传记"} + ] + }, + {"key":"area","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":"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":"更早","v":"更早"} + ] + }, + {"key":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"粤语","v":"粤语"}, + {"n":"闽南语","v":"闽南语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"}, + {"n":"法语","v":"法语"}, + {"n":"德语","v":"德语"}, + {"n":"其它","v":"其它"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":"2"}, + {"n":"国产剧","v":"13"}, + {"n":"港台剧","v":"14"}, + {"n":"日韩剧","v":"15"}, + {"n":"欧美剧","v":"16"}, + {"n":"海外剧","v":"22"} + ] + }, + {"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":"情景"} + ] + }, + {"key":"area","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":"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":"更早","v":"更早"} + ] + }, + {"key":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"粤语","v":"粤语"}, + {"n":"闽南语","v":"闽南语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"}, + {"n":"其它","v":"其它"} + ] + }, + {"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":"访谈"}, + {"n":"播报","v":"播报"}, + {"n":"旅游","v":"旅游"}, + {"n":"音乐","v":"音乐"}, + {"n":"美食","v":"美食"}, + {"n":"纪实","v":"纪实"}, + {"n":"曲艺","v":"曲艺"}, + {"n":"生活","v":"生活"}, + {"n":"游戏互动","v":"游戏互动"}, + {"n":"财经","v":"财经"}, + {"n":"求职","v":"求职"} + ] + }, + {"key":"area","name":"地区","value":[ + {"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":"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":"更早","v":"更早"} + ] + }, + {"key":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"粤语","v":"粤语"}, + {"n":"闽南语","v":"闽南语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"}, + {"n":"其它","v":"其它"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "4":[ + {"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":"少年"} + ] + }, + {"key":"area","name":"地区","value":[ + {"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":"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":"更早","v":"更早"} + ] + }, + {"key":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"粤语","v":"粤语"}, + {"n":"闽南语","v":"闽南语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"}, + {"n":"其它","v":"其它"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ] + } + } diff --git a/lib/hezi.json b/lib/hezi.json new file mode 100644 index 0000000..a8defcc --- /dev/null +++ b/lib/hezi.json @@ -0,0 +1,251 @@ + { + + "作者":"cc", + + "站名":"电影盒子", + + "主页url":"http://m.dyhz3.com/", + + "简介":"video-info-item video-info-content vod_content\"&&

    ", + + + "影片状态":"text-nowrap\">*&&", + + "影片类型":"类型:&&", + + "搜索url":"/index.php?s=vod-search-name;post;wd={wd}", + + "线路数组":"glyphicon glyphicon-facetime-video ff-text\">&&/h2>", + + "线路标题":"&&<", + + "播放数组":"list-unstyled row text-center ff-playurl-line ff-playurl\"&&", + + "分类url":"http://m.dyhz3.com/list-select-id-{cateId}-type-{class}-area-{area}-year-{year}-star--state--order-{by}-p-{catePg}.html;;akd0", + + "分类":"电影$1#电视剧$2#综艺$4#动漫$3", + + "筛选":{ + "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":"枪战"} + ] + }, + {"key":"area","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":"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":"2010-2000","v":"2010-2000"}, + {"n":"90年代","v":"90年代"}, + {"n":"更早","v":"更早"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"最近热播","v":"hits"}, + {"n":"最新上映","v":"addtime"}, + {"n":"点赞最多","v":"up"} + ] + } + ], + "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":"警匪"} + ] + }, + {"key":"area","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":"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":"2010-2000","v":"2010-2000"}, + {"n":"90年代","v":"90年代"}, + {"n":"更早","v":"更早"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"最近热播","v":"hits"}, + {"n":"最新上映","v":"addtime"}, + {"n":"点赞最多","v":"up"} + ] + } + ], + "3":[ + {"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":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"内地","v":"内地"}, + {"n":"日本","v":"日本"}, + {"n":"美国","v":"美国"}, + {"n":"韩国","v":"韩国"}, + {"n":"台湾","v":"台湾"}, + {"n":"香港","v":"香港"} + ] + }, + {"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":"2010-2000","v":"2010-2000"}, + {"n":"90年代","v":"90年代"}, + {"n":"更早","v":"更早"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"最近热播","v":"hits"}, + {"n":"最新上映","v":"addtime"}, + {"n":"点赞最多","v":"up"} + ] + } + ], + "4":[ + {"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":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"香港","v":"香港"}, + {"n":"美国","v":"美国"}, + {"n":"大陆","v":"大陆"}, + {"n":"韩国","v":"韩国"}, + {"n":"台湾","v":"台湾"}, + {"n":"日本","v":"日本"}, + {"n":"其他","v":"其他"} + ] + }, + {"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":"2010-2000","v":"2010-2000"}, + {"n":"90年代","v":"90年代"}, + {"n":"更早","v":"更早"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"最近热播","v":"hits"}, + {"n":"最新上映","v":"addtime"}, + {"n":"点赞最多","v":"up"} + ] + } + ] + } + } diff --git a/lib/iFun.js b/lib/iFun.js new file mode 100644 index 0000000..f289b8a --- /dev/null +++ b/lib/iFun.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/4VTu47TQBTt+QoXaJxEiZ0g0dgKUVYCCQlEkU2FkDXxXCezO7G984hiVpH4AEArRElFAw0dBdqCr0FZPoMZz4TYSrHjYjTnnvs693qDuccVA2/sXT/w9JFUMog8nz5Tud+voVUhpEZWUpYiCkOaqTxI09BZFWfaGDIqZJhVKcNChJMSL2GcVeZyNAGYp6u5JdvH5BKqca/XIuCFyf7IQleKppezGo+8ocUyyiRwSxs1IR3Xb74TW1gbI5BF3vXO9QWYABeR69wcfy6AD6ZLyKWvnV++Onv+4mkyn7oozlHSNRRKa/J4OHRl1X0nJebCiKdYkGI5WEOuEGI0xgidw1aae8Uhi2uxOkFv0j2oqOmQwDZlisCx6pLh6hBUcgUWZfhtFXkPL0Qgi5nkNF92Ol1v/KTRB81LJc1MnfOob+dU433vQpgcu9g21bVhSaFqVY+J9h+///1wo6nBhhIoREzoJqAS1nHPfq7MP7/e3d1+O/IQwpYW1NvkmqfrJUKCp3HAZVuPQ5jb93WYYxuHZVyNrIMj1h2ul2ZLXcyGgYBITSmqJFpTcuKYFrnU4zUUmkteIKTvHDhCZQRXncGoe+Ii8ULcI7g559Ozmdb8tb//9GP/+bf/Jv5vPmhcj08P3+gfQElFQWBgALMm7YyJ1EVo2qIg1UlFxuV+gv0D2iI3jUmpcbo97pvb7/3Nl7ufX5vzbA3ePDbCjdDswO4ff9Bir0YEAAA= \ No newline at end of file diff --git a/lib/ipv6.m3u b/lib/ipv6.m3u new file mode 100644 index 0000000..26fa644 --- /dev/null +++ b/lib/ipv6.m3u @@ -0,0 +1,317 @@ +#EXTM3U x-tvg-url="https://live.fanmingming.com/e.xml" +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://live.fanmingming.com/tv/CCTV1.png" group-title="央视频道",CCTV-1 综合 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000311/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://live.fanmingming.com/tv/CCTV2.png" group-title="央视频道",CCTV-2 财经 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000317/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://live.fanmingming.com/tv/CCTV3.png" group-title="央视频道",CCTV-3 综艺 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000359/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://live.fanmingming.com/tv/CCTV4.png" group-title="央视频道",CCTV-4 中文国际 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000320/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://live.fanmingming.com/tv/CCTV5.png" group-title="央视频道",CCTV-5 体育 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000360/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://live.fanmingming.com/tv/CCTV5+.png" group-title="央视频道",CCTV-5+ 体育赛事 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000316/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://live.fanmingming.com/tv/CCTV6.png" group-title="央视频道",CCTV-6 电影 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000361/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://live.fanmingming.com/tv/CCTV7.png" group-title="央视频道",CCTV-7 国防军事 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000318/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://live.fanmingming.com/tv/CCTV8.png" group-title="央视频道",CCTV-8 电视剧 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000362/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://live.fanmingming.com/tv/CCTV9.png" group-title="央视频道",CCTV-9 纪录 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000319/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://live.fanmingming.com/tv/CCTV10.png" group-title="央视频道",CCTV-10 科教 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000321/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://live.fanmingming.com/tv/CCTV11.png" group-title="央视频道",CCTV-11 戏曲 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000344/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://live.fanmingming.com/tv/CCTV12.png" group-title="央视频道",CCTV-12 社会与法 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000322/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://live.fanmingming.com/tv/CCTV13.png" group-title="央视频道",CCTV-13 新闻 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000345/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://live.fanmingming.com/tv/CCTV14.png" group-title="央视频道",CCTV-14 少儿 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000323/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://live.fanmingming.com/tv/CCTV15.png" group-title="央视频道",CCTV-15 音乐 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000346/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://live.fanmingming.com/tv/CCTV16.png" group-title="央视频道",CCTV-16 奥林匹克 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000016/index.m3u8 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://live.fanmingming.com/tv/CCTV17.png" group-title="央视频道",CCTV-17 农业农村 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000303/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV4K" tvg-logo="https://live.fanmingming.com/tv/CCTV4K.png" group-title="央视频道",CCTV-4K 超高清 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000382/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV4欧洲" tvg-logo="https://live.fanmingming.com/tv/CCTV4欧洲.png" group-title="央视频道",CCTV-4 欧洲 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000350/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CCTV4美洲" tvg-logo="https://live.fanmingming.com/tv/CCTV4美洲.png" group-title="央视频道",CCTV-4 美洲 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000351/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://live.fanmingming.com/tv/CHC动作电影.png" group-title="央视频道",CHC动作电影 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002030/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://live.fanmingming.com/tv/CHC家庭影院.png" group-title="央视频道",CHC家庭影院 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002028/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="CHC影迷电影" tvg-logo="https://live.fanmingming.com/tv/CHC影迷电影.png" group-title="央视频道",CHC影迷电影 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002029/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://live.fanmingming.com/tv/北京卫视.png" group-title="卫视频道",北京卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000302/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://live.fanmingming.com/tv/湖南卫视.png" group-title="卫视频道",湖南卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000324/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://live.fanmingming.com/tv/东方卫视.png" group-title="卫视频道",东方卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000309/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://live.fanmingming.com/tv/四川卫视.png" group-title="卫视频道",四川卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000348/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://live.fanmingming.com/tv/天津卫视.png" group-title="卫视频道",天津卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000327/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://live.fanmingming.com/tv/安徽卫视.png" group-title="卫视频道",安徽卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000328/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://live.fanmingming.com/tv/山东卫视.png" group-title="卫视频道",山东卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000301/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://live.fanmingming.com/tv/深圳卫视.png" group-title="卫视频道",深圳卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000308/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://live.fanmingming.com/tv/广东卫视.png" group-title="卫视频道",广东卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000307/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://live.fanmingming.com/tv/广西卫视.png" group-title="卫视频道",广西卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000368/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://live.fanmingming.com/tv/江苏卫视.png" group-title="卫视频道",江苏卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000304/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://live.fanmingming.com/tv/江西卫视.png" group-title="卫视频道",江西卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000335/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://live.fanmingming.com/tv/河北卫视.png" group-title="卫视频道",河北卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000330/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://live.fanmingming.com/tv/河南卫视.png" group-title="卫视频道",河南卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000358/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://live.fanmingming.com/tv/浙江卫视.png" group-title="卫视频道",浙江卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000305/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://live.fanmingming.com/tv/海南卫视.png" group-title="卫视频道",海南卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000347/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://live.fanmingming.com/tv/湖北卫视.png" group-title="卫视频道",湖北卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000325/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://live.fanmingming.com/tv/山西卫视.png" group-title="卫视频道",山西卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000032/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://live.fanmingming.com/tv/东南卫视.png" group-title="卫视频道",东南卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000310/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://live.fanmingming.com/tv/贵州卫视.png" group-title="卫视频道",贵州卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000329/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://live.fanmingming.com/tv/辽宁卫视.png" group-title="卫视频道",辽宁卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000326/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://live.fanmingming.com/tv/重庆卫视.png" group-title="卫视频道",重庆卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000341/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://live.fanmingming.com/tv/黑龙江卫视.png" group-title="卫视频道",黑龙江卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000306/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://live.fanmingming.com/tv/内蒙古卫视.png" group-title="卫视频道",内蒙古卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000040/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://live.fanmingming.com/tv/宁夏卫视.png" group-title="卫视频道",宁夏卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000043/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://live.fanmingming.com/tv/陕西卫视.png" group-title="卫视频道",陕西卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000029/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://live.fanmingming.com/tv/吉林卫视.png" group-title="卫视频道",吉林卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000363/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://live.fanmingming.com/tv/甘肃卫视.png" group-title="卫视频道",甘肃卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000349/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://live.fanmingming.com/tv/云南卫视.png" group-title="卫视频道",云南卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000367/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://live.fanmingming.com/tv/三沙卫视.png" group-title="卫视频道",三沙卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000078/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://live.fanmingming.com/tv/青海卫视.png" group-title="卫视频道",青海卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000366/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://live.fanmingming.com/tv/新疆卫视.png" group-title="卫视频道",新疆卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000044/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://live.fanmingming.com/tv/西藏卫视.png" group-title="卫视频道",西藏卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000045/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="陕西农林卫视" tvg-logo="https://live.fanmingming.com/tv/农林卫视.png" group-title="卫视频道",农林卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000072/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="兵团卫视" tvg-logo="https://live.fanmingming.com/tv/兵团卫视.png" group-title="卫视频道",兵团卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000071/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://live.fanmingming.com/tv/延边卫视.png" group-title="卫视频道",延边卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000668/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="安多卫视" tvg-logo="https://live.fanmingming.com/tv/安多卫视.png" group-title="卫视频道",安多卫视 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000064/index.m3u8 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://live.fanmingming.com/tv/厦门卫视.png" group-title="卫视频道",厦门卫视 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000075/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://live.fanmingming.com/tv/康巴卫视.png" group-title="卫视频道",康巴卫视 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000066/index.m3u8 +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://live.fanmingming.com/tv/大湾区卫视.png" group-title="卫视频道",大湾区卫视 +http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000002000011619/index.m3u8 +#EXTINF:-1 tvg-name="中国教育1台" tvg-logo="https://live.fanmingming.com/tv/CETV1.png" group-title="卫视频道",CETV-1 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000076/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="中国教育2台" tvg-logo="https://live.fanmingming.com/tv/CETV2.png" group-title="卫视频道",CETV-2 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000077/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="中国教育4台" tvg-logo="https://live.fanmingming.com/tv/CETV4.png" group-title="卫视频道",CETV-4 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000666/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="山东教育" tvg-logo="https://live.fanmingming.com/tv/山东教育.png" group-title="数字频道",山东教育 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000331/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="上海纪实人文" tvg-logo="https://live.fanmingming.com/tv/纪实人文.png" group-title="数字频道",纪实人文 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000333/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="纪实科教" tvg-logo="https://live.fanmingming.com/tv/北京纪实科教.png" group-title="数字频道",纪实科教 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000332/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="劲爆体育" tvg-logo="https://live.fanmingming.com/tv/劲爆体育.png" group-title="数字频道",劲爆体育 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002026/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="全纪实" tvg-logo="https://live.fanmingming.com/tv/乐游.png" group-title="数字频道",乐游频道 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002016/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="欢笑剧场" tvg-logo="https://live.fanmingming.com/tv/欢笑剧场.png" group-title="数字频道",欢笑剧场 +http://[2409:8087:74d9:21::6]:80/000000001000PLTV/88888888/224/3221226203/index.m3u8 +#EXTINF:-1 tvg-name="都市剧场" tvg-logo="https://live.fanmingming.com/tv/都市剧场.png" group-title="数字频道",都市剧场 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002022/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="生活时尚" tvg-logo="https://live.fanmingming.com/tv/生活时尚.png" group-title="数字频道",生活时尚 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002019/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="金色学堂" tvg-logo="https://live.fanmingming.com/tv/金色学堂.png" group-title="数字频道",金色学堂 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002018/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="魅力足球" tvg-logo="https://live.fanmingming.com/tv/魅力足球.png" group-title="数字频道",魅力足球 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002021/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="卡酷动画" tvg-logo="https://live.fanmingming.com/tv/卡酷少儿.png" group-title="数字频道",卡酷少儿 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000661/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://live.fanmingming.com/tv/金鹰卡通.png" group-title="数字频道",金鹰卡通 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002027/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="金鹰纪实" tvg-logo="https://live.fanmingming.com/tv/金鹰纪实.png" group-title="数字频道",金鹰纪实 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000334/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="快乐垂钓" tvg-logo="https://live.fanmingming.com/tv/快乐垂钓.png" group-title="数字频道",快乐垂钓 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000648/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="茶" tvg-logo="https://live.fanmingming.com/tv/茶.png" group-title="数字频道",茶友频道 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000649/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="先锋乒羽" tvg-logo="https://live.fanmingming.com/tv/先锋乒羽.png" group-title="数字频道",先锋乒羽 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000650/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="文物宝库" tvg-logo="https://live.fanmingming.com/tv/文物宝库.png" group-title="数字频道",文物宝库 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000658/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="梨园" tvg-logo="https://live.fanmingming.com/tv/河南梨园.png" group-title="数字频道",梨园频道 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000656/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="武术世界" tvg-logo="https://live.fanmingming.com/tv/武术世界.png" group-title="数字频道",武术世界 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000657/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="中国交通" tvg-logo="https://live.fanmingming.com/tv/中国交通.png" group-title="数字频道",中国交通 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000073/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="中华特产" tvg-logo="https://live.fanmingming.com/tv/中华特产.png" group-title="数字频道",中华特产 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000642/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="书画" tvg-logo="https://live.fanmingming.com/tv/书画.png" group-title="数字频道",书画频道 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000651/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="四海钓鱼" tvg-logo="https://live.fanmingming.com/tv/四海钓鱼.png" group-title="数字频道",四海钓鱼 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000640/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="财富天下" tvg-logo="https://live.fanmingming.com/tv/财富天下.png" group-title="数字频道",财富天下 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000607/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="环球旅游" tvg-logo="https://live.fanmingming.com/tv/环球旅游.png" group-title="数字频道",环球旅游 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000643/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="车迷" tvg-logo="https://live.fanmingming.com/tv/车迷.png" group-title="数字频道",车迷频道 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000645/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="游戏风云" tvg-logo="https://live.fanmingming.com/tv/游戏风云.png" group-title="数字频道",游戏风云 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002024/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://live.fanmingming.com/tv/动漫秀场.png" group-title="数字频道",动漫秀场 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002000/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="嘉佳卡通" tvg-logo="https://live.fanmingming.com/tv/嘉佳卡通.png" group-title="数字频道",嘉佳卡通 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000074/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="优优宝贝" tvg-logo="https://live.fanmingming.com/tv/优优宝贝.png" group-title="数字频道",优优宝贝 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000641/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="哒啵赛事" tvg-logo="https://live.fanmingming.com/tv/哒啵赛事.png" group-title="数字频道",哒啵赛事 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000097/index.m3u8 +#EXTINF:-1 tvg-name="哒啵电竞" tvg-logo="https://live.fanmingming.com/tv/哒啵电竞.png" group-title="数字频道",哒啵电竞 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000003000000066/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000003000000066&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://live.fanmingming.com/tv/优漫卡通.png" group-title="数字频道",优漫卡通 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000049/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://live.fanmingming.com/tv/哈哈炫动.png" group-title="数字频道",哈哈炫动 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000050/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://live.fanmingming.com/tv/黑莓动画.png" group-title="数字频道",黑莓动画 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000096/index.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://live.fanmingming.com/tv/黑莓电影.png" group-title="数字频道",黑莓电影 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000095/index.m3u8 +#EXTINF:-1 tvg-name="求索纪录" tvg-logo="https://live.fanmingming.com/tv/求索纪录.png" group-title="数字频道",求索纪录 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000004000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000010&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="求索生活" tvg-logo="https://live.fanmingming.com/tv/求索生活.png" group-title="数字频道",求索生活 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000004000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000008&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="求索动物" tvg-logo="https://live.fanmingming.com/tv/求索动物.png" group-title="数字频道",求索动物 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000004000000009/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000009&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="求索科学" tvg-logo="https://live.fanmingming.com/tv/求索科学.png" group-title="数字频道",求索科学 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000004000000011/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000011&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="睛彩竞技" tvg-logo="https://live.fanmingming.com/tv/睛彩竞技.png" group-title="数字频道",睛彩竞技 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000119/index.m3u8 +#EXTINF:-1 tvg-name="睛彩篮球" tvg-logo="https://live.fanmingming.com/tv/睛彩篮球.png" group-title="数字频道",睛彩篮球 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000118/index.m3u8 +#EXTINF:-1 tvg-name="睛彩青少" tvg-logo="https://live.fanmingming.com/tv/睛彩青少.png" group-title="数字频道",睛彩青少 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000120/index.m3u8 +#EXTINF:-1 tvg-name="newtv超级体育" tvg-logo="https://live.fanmingming.com/tv/NEWTV超级体育.png" group-title="数字频道",超级体育 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000020/index.m3u8 +#EXTINF:-1 tvg-name="newtv超级电影" tvg-logo="https://live.fanmingming.com/tv/NEWTV超级电影.png" group-title="数字频道",超级电影 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000021/index.m3u8 +#EXTINF:-1 tvg-name="newtv超级电视剧" tvg-logo="https://live.fanmingming.com/tv/NEWTV超级电视剧.png" group-title="数字频道",超级视剧 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000022/index.m3u8 +#EXTINF:-1 tvg-name="newtv东北热剧" tvg-logo="https://live.fanmingming.com/tv/NEWTV东北热剧.png" group-title="数字频道",东北热剧 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000092/index.m3u8 +#EXTINF:-1 tvg-name="newtv海外剧场" tvg-logo="https://live.fanmingming.com/tv/NEWTV海外剧场.png" group-title="数字频道",海外剧场 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000115/index.m3u8 +#EXTINF:-1 tvg-name="newtv中国功夫" tvg-logo="https://live.fanmingming.com/tv/NEWTV中国功夫.png" group-title="数字频道",中国功夫 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000101/index.m3u8 +#EXTINF:-1 tvg-name="newtv军旅剧场" tvg-logo="https://live.fanmingming.com/tv/NEWTV军旅剧场.png" group-title="数字频道",军旅剧场 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000107/index.m3u8 +#EXTINF:-1 tvg-name="newtv惊悚悬疑" tvg-logo="https://live.fanmingming.com/tv/NEWTV惊悚悬疑.png" group-title="数字频道",惊悚悬疑 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000113/index.m3u8 +#EXTINF:-1 tvg-name="newtv潮妈辣婆" tvg-logo="https://live.fanmingming.com/tv/NEWTV潮妈辣婆.png" group-title="数字频道",潮妈辣婆 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000099/index.m3u8 +#EXTINF:-1 tvg-name="newtv精品体育" tvg-logo="https://live.fanmingming.com/tv/NEWTV精品体育.png" group-title="数字频道",精品体育 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000102/index.m3u8 +#EXTINF:-1 tvg-name="newtv精品纪录" tvg-logo="https://live.fanmingming.com/tv/NEWTV精品纪录.png" group-title="数字频道",精品纪录 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000109/index.m3u8 +#EXTINF:-1 tvg-name="newtv家庭剧场" tvg-logo="https://live.fanmingming.com/tv/NEWTV家庭剧场.png" group-title="数字频道",家庭剧场 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000108/index.m3u8 +#EXTINF:-1 tvg-name="newtv精品大剧" tvg-logo="https://live.fanmingming.com/tv/NEWTV精品大剧.png" group-title="数字频道",精品大剧 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000100/index.m3u8 +#EXTINF:-1 tvg-name="newtv军事评论" tvg-logo="https://live.fanmingming.com/tv/NEWTV军事评论.png" group-title="数字频道",军事评论 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000110/index.m3u8 +#EXTINF:-1 tvg-name="newtv明星大片" tvg-logo="https://live.fanmingming.com/tv/NEWTV明星大片.png" group-title="数字频道",明星大片 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000116/index.m3u8 +#EXTINF:-1 tvg-name="newtv欢乐剧场" tvg-logo="https://live.fanmingming.com/tv/NEWTV欢乐剧场.png" group-title="数字频道",欢乐剧场 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000091/index.m3u8 +#EXTINF:-1 tvg-name="newtv精品萌宠" tvg-logo="https://live.fanmingming.com/tv/NEWTV精品萌宠.png" group-title="数字频道",精品萌宠 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000122/index.m3u8 +#EXTINF:-1 tvg-name="newtv超级综艺" tvg-logo="https://live.fanmingming.com/tv/NEWTV超级综艺.png" group-title="数字频道",超级综艺 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000019/index.m3u8 +#EXTINF:-1 tvg-name="newtv金牌综艺" tvg-logo="https://live.fanmingming.com/tv/NEWTV金牌综艺.png" group-title="数字频道",金牌综艺 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000112/index.m3u8 +#EXTINF:-1 tvg-name="newtv炫舞未来" tvg-logo="https://live.fanmingming.com/tv/NEWTV炫舞未来.png" group-title="数字频道",炫舞未来 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000098/index.m3u8 +#EXTINF:-1 tvg-name="上海新闻综合" tvg-logo="https://live.fanmingming.com/tv/上视新闻.png" group-title="上海频道",上海新闻 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000005/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000005&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="上海都市" tvg-logo="https://live.fanmingming.com/tv/上海都市.png" group-title="上海频道",上海都市 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000012/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000012&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="上海外语" tvg-logo="https://live.fanmingming.com/tv/上海外语.png" group-title="上海频道",上海外语 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="七彩戏剧" tvg-logo="https://live.fanmingming.com/tv/七彩戏剧.png" group-title="上海频道",七彩戏剧 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000010&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="五星体育" tvg-logo="https://live.fanmingming.com/tv/五星体育.png" group-title="上海频道",五星体育 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000007&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="东方影视" tvg-logo="https://live.fanmingming.com/tv/东方影视.png" group-title="上海频道",东方影视 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000013&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="东方财经" tvg-logo="https://live.fanmingming.com/tv/东方财经.png" group-title="上海频道",东方财经 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002025/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="法治天地" tvg-logo="https://live.fanmingming.com/tv/法治天地.png" group-title="上海频道",法治天地 +http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002010/index.m3u8?IASHttpSessionId= +#EXTINF:-1 tvg-name="第一财经" tvg-logo="https://live.fanmingming.com/tv/上海第一财经.png" group-title="上海频道",第一财经 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000004&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="内蒙古综合" tvg-logo="https://live.fanmingming.com/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.com/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.com/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.com/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.com/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.com/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.com/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.com/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.com/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.com/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.com/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.com/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.com/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.com/tv/CGTN.png" group-title="央视频道",CGTN英语 +https://0472.org/hls/cgtn.m3u8 +#EXTINF:-1 tvg-name="CGTN纪录" tvg-logo="https://live.fanmingming.com/tv/CGTN纪录.png" group-title="央视频道",CGTN记录 +https://0472.org/hls/cgtnd.m3u8 +#EXTINF:-1 tvg-name="CGTN俄语" tvg-logo="https://live.fanmingming.com/tv/CGTN俄语.png" group-title="央视频道",CGTN俄语 +https://0472.org/hls/cgtne.m3u8 +#EXTINF:-1 tvg-name="CGTN法语" tvg-logo="https://live.fanmingming.com/tv/CGTN法语.png" group-title="央视频道",CGTN法语 +https://0472.org/hls/cgtnf.m3u8 +#EXTINF:-1 tvg-name="CGTN西语" tvg-logo="https://live.fanmingming.com/tv/CGTN西语.png" group-title="央视频道",CGTN西语 +https://0472.org/hls/cgtnx.m3u8 +#EXTINF:-1 tvg-name="CGTN阿语" tvg-logo="https://live.fanmingming.com/tv/CGTN阿语.png" group-title="央视频道",CGTN阿语 +https://0472.org/hls/cgtna.m3u8 diff --git a/lib/jinja.js b/lib/jinja.js new file mode 100644 index 0000000..80737af --- /dev/null +++ b/lib/jinja.js @@ -0,0 +1,577 @@ +/*! + * Jinja Templating for JavaScript v0.1.8 + * https://github.com/sstur/jinja-js + * + * This is a slimmed-down Jinja2 implementation [http://jinja.pocoo.org/] + * + * In the interest of simplicity, it deviates from Jinja2 as follows: + * - Line statements, cycle, super, macro tags and block nesting are not implemented + * - auto escapes html by default (the filter is "html" not "e") + * - Only "html" and "safe" filters are built in + * - Filters are not valid in expressions; `foo|length > 1` is not valid + * - Expression Tests (`if num is odd`) not implemented (`is` translates to `==` and `isnot` to `!=`) + * + * Notes: + * - if property is not found, but method '_get' exists, it will be called with the property name (and cached) + * - `{% for n in obj %}` iterates the object's keys; get the value with `{% for n in obj %}{{ obj[n] }}{% endfor %}` + * - subscript notation `a[0]` takes literals or simple variables but not `a[item.key]` + * - `.2` is not a valid number literal; use `0.2` + * + */ +/*global require, exports, module, define */ + +(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+)?$/; + //non-primitive literals (array and object literals) + var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g; + //bare identifiers such as variables and in object literals: {foo: 'value'} + var IDENTIFIERS = /[$_a-z][$\w]*/ig; + var VARIABLES = /i(\.i|\[[@#i]\])*/g; + var ACCESSOR = /(\.i|\[[@#i]\])/g; + var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g; + //extended (english) operators + 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) { + //here we match the rest of the src against a regex for this tag + var match = src.slice(index + open.length).match(TAGS[open]); + match = (match ? match[0] : ''); + //here we sub out strings so we don't get false matches + var simplified = match.replace(STRINGS, '@'); + //if we don't have a close tag or there is a nested open tag + if (!match || ~simplified.indexOf(open)) { + return index + 1; + } + var inner = match.slice(0, 0 - open.length); + //check for white-space collapse syntax + if (inner.charAt(0) === '-') var wsCollapseLeft = true; + if (inner.slice(-1) === '-') var wsCollapseRight = true; + inner = inner.replace(/^-|-$/g, '').trim(); + //if we're in raw mode and we are not looking at an "endraw" tag, move along + 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 === '{{{') { + //liquid-style: make {{{x}}} => {{x|safe}} + 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, '@'); + //replace || operators with ~ + extracted.src = extracted.src.replace(/\|\|/g, '~').split('|'); + //put back || operators + 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]; + }; + + //replace complex literals without mistaking subscript notation with array literals + 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'); + }; + + //parse expression containing literals (including objects/arrays) and variables (including dot and subscript notation) + //valid expressions: `a + 1 > b.c or c == null`, `a and b[1] != c`, `(a < b) or (c < d and e)`, 'a || [1]` + Parser.prototype.parseExpr = function (src, opts) { + opts = opts || {}; + //extract string literals -> @ + var parsed1 = this.extractEnt(src, STRINGS, '@'); + //note: this will catch {not: 1} and a.is; could we replace temporarily and then check adjacent chars? + parsed1.src = parsed1.src.replace(EOPS, function (s, before, op, after) { + return (op in operators) ? before + operators[op] + after : s; + }); + //sub out non-string literals (numbers/true/false/null) -> # + // the distinction is necessary because @ can be object identifiers, # cannot + var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function (s) { + return (s in constants || NUMBER.test(s)) ? '#' : null; + }); + //sub out object/variable identifiers -> i + var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, 'i'); + //remove white-space + parsed3.src = parsed3.src.replace(/\s+/g, ''); + + //the rest of this is simply to boil the expression down and check validity + var simplified = parsed3.src; + //sub out complex literals (objects/arrays) -> ~ + // the distinction is necessary because @ and # can be subscripts but ~ cannot + while (simplified !== (simplified = this.replaceComplex(simplified))) ; + //now @ represents strings, # represents other primitives and ~ represents non-primitives + //replace complex variables (those with dot/subscript accessors) -> v + while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v'))) ; + //empty subscript or complex variables in subscript, are not permitted + simplified = simplified.replace(/[iv]\[v?\]/g, 'x'); + //sub in "i" for @ and # and ~ and v (now "i" represents all literals, variables and identifiers) + simplified = simplified.replace(/[@#~v]/g, 'i'); + //sub out operators + simplified = simplified.replace(OPERATORS, '%'); + //allow 'not' unary operator + simplified = simplified.replace(/!+[i]/g, 'i'); + var terms = opts.terms ? simplified.split(',') : [simplified]; + terms.forEach(function (term) { + //simplify logical grouping + 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(); + //quote bare object identifiers (might be a reserved word like {while: 1}) + 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(',') + ')'; + }; + + //escapes a name to be used as a javascript identifier + 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 + '"'; + } + //todo: try/catch or deal with invalid characters (linebreaks, control characters) + return JSON.parse(str); + }; + + + //the context 'this' inside tagHandlers is the parser instance + 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; + //silence output until we enter a child block + this.isSilent = true; + }, + 'include': function (name) { + name = this.parseQuoted(name); + var incSrc = this.readTemplateFile(name); + this.isInclude = true; + this.tokenize(incSrc); + this.isInclude = false; + } + }; + + //liquid style + tagHandlers.assign = tagHandlers.set; + //python/django style + 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; + }; + //get a value, lexically, starting in current context; a.b -> get("a","b") + 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; + //now arr looks like [val, arg1, arg2] + val = filter.apply(data, arr); + } else { + throw new Error('Invalid filter: ' + name); + } + } + if (opts.autoEscape && name !== opts.autoEscape && name !== 'safe') { + //auto escape if not explicitly safe or already escaped + 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; + }; + + + /*! + * Helpers + */ + + function trimLeft(str) { + return str.replace(LEADING_SPACE, ''); + } + + function trimRight(str) { + return str.replace(TRAILING_SPACE, ''); + } + + function matchAll(str, reg, fn) { + //copy as global + 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/lib/jinja.min.js b/lib/jinja.min.js new file mode 100644 index 0000000..474d996 --- /dev/null +++ b/lib/jinja.min.js @@ -0,0 +1 @@ +(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").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/lib/jsencrypt.js b/lib/jsencrypt.js new file mode 100644 index 0000000..e946a64 --- /dev/null +++ b/lib/jsencrypt.js @@ -0,0 +1,265 @@ +/* + * 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/lib/json5.js b/lib/json5.js new file mode 100644 index 0000000..cd76909 --- /dev/null +++ b/lib/json5.js @@ -0,0 +1,1737 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.JSON5 = factory()); +}(this, (function () { 'use strict'; + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var _global = createCommonjsModule(function (module) { + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); + if (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef + }); + + var _core = createCommonjsModule(function (module) { + var core = module.exports = { version: '2.6.5' }; + if (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef + }); + var _core_1 = _core.version; + + var _isObject = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; + }; + + var _anObject = function (it) { + if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); } + return it; + }; + + var _fails = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } + }; + + // Thank's IE8 for his funny defineProperty + var _descriptors = !_fails(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; + }); + + var document = _global.document; + // typeof document.createElement is 'object' in old IE + var is = _isObject(document) && _isObject(document.createElement); + var _domCreate = function (it) { + return is ? document.createElement(it) : {}; + }; + + var _ie8DomDefine = !_descriptors && !_fails(function () { + return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7; + }); + + // 7.1.1 ToPrimitive(input [, PreferredType]) + + // instead of the ES6 spec version, we didn't implement @@toPrimitive case + // and the second argument - flag - preferred type is a string + var _toPrimitive = function (it, S) { + if (!_isObject(it)) { return it; } + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; } + if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; } + if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; } + throw TypeError("Can't convert object to primitive value"); + }; + + var dP = Object.defineProperty; + + var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) { + _anObject(O); + P = _toPrimitive(P, true); + _anObject(Attributes); + if (_ie8DomDefine) { try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } } + if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); } + if ('value' in Attributes) { O[P] = Attributes.value; } + return O; + }; + + var _objectDp = { + f: f + }; + + var _propertyDesc = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + + var _hide = _descriptors ? function (object, key, value) { + return _objectDp.f(object, key, _propertyDesc(1, value)); + } : function (object, key, value) { + object[key] = value; + return object; + }; + + var hasOwnProperty = {}.hasOwnProperty; + var _has = function (it, key) { + return hasOwnProperty.call(it, key); + }; + + var id = 0; + var px = Math.random(); + var _uid = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); + }; + + var _library = false; + + var _shared = createCommonjsModule(function (module) { + var SHARED = '__core-js_shared__'; + var store = _global[SHARED] || (_global[SHARED] = {}); + + (module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); + })('versions', []).push({ + version: _core.version, + mode: _library ? 'pure' : 'global', + copyright: '© 2019 Denis Pushkarev (zloirock.ru)' + }); + }); + + var _functionToString = _shared('native-function-to-string', Function.toString); + + var _redefine = createCommonjsModule(function (module) { + var SRC = _uid('src'); + + var TO_STRING = 'toString'; + var TPL = ('' + _functionToString).split(TO_STRING); + + _core.inspectSource = function (it) { + return _functionToString.call(it); + }; + + (module.exports = function (O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); } + if (O[key] === val) { return; } + if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); } + if (O === _global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + _hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + _hide(O, key, val); + } + // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + })(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || _functionToString.call(this); + }); + }); + + var _aFunction = function (it) { + if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); } + return it; + }; + + // optional / simple context binding + + var _ctx = function (fn, that, length) { + _aFunction(fn); + if (that === undefined) { return fn; } + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; + }; + + var PROTOTYPE = 'prototype'; + + var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) { source = name; } + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; + // extend global + if (target) { _redefine(target, key, out, type & $export.U); } + // export + if (exports[key] != out) { _hide(exports, key, exp); } + if (IS_PROTO && expProto[key] != out) { expProto[key] = out; } + } + }; + _global.core = _core; + // type bitmap + $export.F = 1; // forced + $export.G = 2; // global + $export.S = 4; // static + $export.P = 8; // proto + $export.B = 16; // bind + $export.W = 32; // wrap + $export.U = 64; // safe + $export.R = 128; // real proto method for `library` + var _export = $export; + + // 7.1.4 ToInteger + var ceil = Math.ceil; + var floor = Math.floor; + var _toInteger = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); + }; + + // 7.2.1 RequireObjectCoercible(argument) + var _defined = function (it) { + if (it == undefined) { throw TypeError("Can't call method on " + it); } + return it; + }; + + // true -> String#at + // false -> String#codePointAt + var _stringAt = function (TO_STRING) { + return function (that, pos) { + var s = String(_defined(that)); + var i = _toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; } + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; + }; + + var $at = _stringAt(false); + _export(_export.P, 'String', { + // 21.1.3.3 String.prototype.codePointAt(pos) + codePointAt: function codePointAt(pos) { + return $at(this, pos); + } + }); + + var codePointAt = _core.String.codePointAt; + + var max = Math.max; + var min = Math.min; + var _toAbsoluteIndex = function (index, length) { + index = _toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); + }; + + var fromCharCode = String.fromCharCode; + var $fromCodePoint = String.fromCodePoint; + + // length should be 1, old FF problem + _export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { + // 21.1.2.2 String.fromCodePoint(...codePoints) + fromCodePoint: function fromCodePoint(x) { + var arguments$1 = arguments; + // eslint-disable-line no-unused-vars + var res = []; + var aLen = arguments.length; + var i = 0; + var code; + while (aLen > i) { + code = +arguments$1[i++]; + if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); } + res.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) + ); + } return res.join(''); + } + }); + + var fromCodePoint = _core.String.fromCodePoint; + + // This is a generated file. Do not edit. + var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; + var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; + var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; + + var unicode = { + Space_Separator: Space_Separator, + ID_Start: ID_Start, + ID_Continue: ID_Continue + }; + + var util = { + isSpaceSeparator: function isSpaceSeparator (c) { + return typeof c === 'string' && unicode.Space_Separator.test(c) + }, + + isIdStartChar: function isIdStartChar (c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c === '$') || (c === '_') || + unicode.ID_Start.test(c) + ) + }, + + isIdContinueChar: function isIdContinueChar (c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + (c === '$') || (c === '_') || + (c === '\u200C') || (c === '\u200D') || + unicode.ID_Continue.test(c) + ) + }, + + isDigit: function isDigit (c) { + return typeof c === 'string' && /[0-9]/.test(c) + }, + + isHexDigit: function isHexDigit (c) { + return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) + }, + }; + + var source; + var parseState; + var stack; + var pos; + var line; + var column; + var token; + var key; + var root; + + var parse = function parse (text, reviver) { + source = String(text); + parseState = 'start'; + stack = []; + pos = 0; + line = 1; + column = 0; + token = undefined; + key = undefined; + root = undefined; + + do { + token = lex(); + + // This code is unreachable. + // if (!parseStates[parseState]) { + // throw invalidParseState() + // } + + parseStates[parseState](); + } while (token.type !== 'eof') + + if (typeof reviver === 'function') { + return internalize({'': root}, '', reviver) + } + + return root + }; + + function internalize (holder, name, reviver) { + var value = holder[name]; + if (value != null && typeof value === 'object') { + if (Array.isArray(value)) { + for (var i = 0; i < value.length; i++) { + var key = String(i); + var replacement = internalize(value, key, reviver); + if (replacement === undefined) { + delete value[key]; + } else { + Object.defineProperty(value, key, { + value: replacement, + writable: true, + enumerable: true, + configurable: true, + }); + } + } + } else { + for (var key$1 in value) { + var replacement$1 = internalize(value, key$1, reviver); + if (replacement$1 === undefined) { + delete value[key$1]; + } else { + Object.defineProperty(value, key$1, { + value: replacement$1, + writable: true, + enumerable: true, + configurable: true, + }); + } + } + } + } + + return reviver.call(holder, name, value) + } + + var lexState; + var buffer; + var doubleQuote; + var sign; + var c; + + function lex () { + lexState = 'default'; + buffer = ''; + doubleQuote = false; + sign = 1; + + for (;;) { + c = peek(); + + // This code is unreachable. + // if (!lexStates[lexState]) { + // throw invalidLexState(lexState) + // } + + var token = lexStates[lexState](); + if (token) { + return token + } + } + } + + function peek () { + if (source[pos]) { + return String.fromCodePoint(source.codePointAt(pos)) + } + } + + function read () { + var c = peek(); + + if (c === '\n') { + line++; + column = 0; + } else if (c) { + column += c.length; + } else { + column++; + } + + if (c) { + pos += c.length; + } + + return c + } + + var lexStates = { + default: function default$1 () { + switch (c) { + case '\t': + case '\v': + case '\f': + case ' ': + case '\u00A0': + case '\uFEFF': + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read(); + return + + case '/': + read(); + lexState = 'comment'; + return + + case undefined: + read(); + return newToken('eof') + } + + if (util.isSpaceSeparator(c)) { + read(); + return + } + + // This code is unreachable. + // if (!lexStates[parseState]) { + // throw invalidLexState(parseState) + // } + + return lexStates[parseState]() + }, + + comment: function comment () { + switch (c) { + case '*': + read(); + lexState = 'multiLineComment'; + return + + case '/': + read(); + lexState = 'singleLineComment'; + return + } + + throw invalidChar(read()) + }, + + multiLineComment: function multiLineComment () { + switch (c) { + case '*': + read(); + lexState = 'multiLineCommentAsterisk'; + return + + case undefined: + throw invalidChar(read()) + } + + read(); + }, + + multiLineCommentAsterisk: function multiLineCommentAsterisk () { + switch (c) { + case '*': + read(); + return + + case '/': + read(); + lexState = 'default'; + return + + case undefined: + throw invalidChar(read()) + } + + read(); + lexState = 'multiLineComment'; + }, + + singleLineComment: function singleLineComment () { + switch (c) { + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read(); + lexState = 'default'; + return + + case undefined: + read(); + return newToken('eof') + } + + read(); + }, + + value: function value () { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + case 'n': + read(); + literal('ull'); + return newToken('null', null) + + case 't': + read(); + literal('rue'); + return newToken('boolean', true) + + case 'f': + read(); + literal('alse'); + return newToken('boolean', false) + + case '-': + case '+': + if (read() === '-') { + sign = -1; + } + + lexState = 'sign'; + return + + case '.': + buffer = read(); + lexState = 'decimalPointLeading'; + return + + case '0': + buffer = read(); + lexState = 'zero'; + return + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read(); + lexState = 'decimalInteger'; + return + + case 'I': + read(); + literal('nfinity'); + return newToken('numeric', Infinity) + + case 'N': + read(); + literal('aN'); + return newToken('numeric', NaN) + + case '"': + case "'": + doubleQuote = (read() === '"'); + buffer = ''; + lexState = 'string'; + return + } + + throw invalidChar(read()) + }, + + identifierNameStartEscape: function identifierNameStartEscape () { + if (c !== 'u') { + throw invalidChar(read()) + } + + read(); + var u = unicodeEscape(); + switch (u) { + case '$': + case '_': + break + + default: + if (!util.isIdStartChar(u)) { + throw invalidIdentifier() + } + + break + } + + buffer += u; + lexState = 'identifierName'; + }, + + identifierName: function identifierName () { + switch (c) { + case '$': + case '_': + case '\u200C': + case '\u200D': + buffer += read(); + return + + case '\\': + read(); + lexState = 'identifierNameEscape'; + return + } + + if (util.isIdContinueChar(c)) { + buffer += read(); + return + } + + return newToken('identifier', buffer) + }, + + identifierNameEscape: function identifierNameEscape () { + if (c !== 'u') { + throw invalidChar(read()) + } + + read(); + var u = unicodeEscape(); + switch (u) { + case '$': + case '_': + case '\u200C': + case '\u200D': + break + + default: + if (!util.isIdContinueChar(u)) { + throw invalidIdentifier() + } + + break + } + + buffer += u; + lexState = 'identifierName'; + }, + + sign: function sign$1 () { + switch (c) { + case '.': + buffer = read(); + lexState = 'decimalPointLeading'; + return + + case '0': + buffer = read(); + lexState = 'zero'; + return + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read(); + lexState = 'decimalInteger'; + return + + case 'I': + read(); + literal('nfinity'); + return newToken('numeric', sign * Infinity) + + case 'N': + read(); + literal('aN'); + return newToken('numeric', NaN) + } + + throw invalidChar(read()) + }, + + zero: function zero () { + switch (c) { + case '.': + buffer += read(); + lexState = 'decimalPoint'; + return + + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + + case 'x': + case 'X': + buffer += read(); + lexState = 'hexadecimal'; + return + } + + return newToken('numeric', sign * 0) + }, + + decimalInteger: function decimalInteger () { + switch (c) { + case '.': + buffer += read(); + lexState = 'decimalPoint'; + return + + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalPointLeading: function decimalPointLeading () { + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalFraction'; + return + } + + throw invalidChar(read()) + }, + + decimalPoint: function decimalPoint () { + switch (c) { + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalFraction'; + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalFraction: function decimalFraction () { + switch (c) { + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalExponent: function decimalExponent () { + switch (c) { + case '+': + case '-': + buffer += read(); + lexState = 'decimalExponentSign'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalExponentInteger'; + return + } + + throw invalidChar(read()) + }, + + decimalExponentSign: function decimalExponentSign () { + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalExponentInteger'; + return + } + + throw invalidChar(read()) + }, + + decimalExponentInteger: function decimalExponentInteger () { + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + hexadecimal: function hexadecimal () { + if (util.isHexDigit(c)) { + buffer += read(); + lexState = 'hexadecimalInteger'; + return + } + + throw invalidChar(read()) + }, + + hexadecimalInteger: function hexadecimalInteger () { + if (util.isHexDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + string: function string () { + switch (c) { + case '\\': + read(); + buffer += escape(); + return + + case '"': + if (doubleQuote) { + read(); + return newToken('string', buffer) + } + + buffer += read(); + return + + case "'": + if (!doubleQuote) { + read(); + return newToken('string', buffer) + } + + buffer += read(); + return + + case '\n': + case '\r': + throw invalidChar(read()) + + case '\u2028': + case '\u2029': + separatorChar(c); + break + + case undefined: + throw invalidChar(read()) + } + + buffer += read(); + }, + + start: function start () { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + // This code is unreachable since the default lexState handles eof. + // case undefined: + // return newToken('eof') + } + + lexState = 'value'; + }, + + beforePropertyName: function beforePropertyName () { + switch (c) { + case '$': + case '_': + buffer = read(); + lexState = 'identifierName'; + return + + case '\\': + read(); + lexState = 'identifierNameStartEscape'; + return + + case '}': + return newToken('punctuator', read()) + + case '"': + case "'": + doubleQuote = (read() === '"'); + lexState = 'string'; + return + } + + if (util.isIdStartChar(c)) { + buffer += read(); + lexState = 'identifierName'; + return + } + + throw invalidChar(read()) + }, + + afterPropertyName: function afterPropertyName () { + if (c === ':') { + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + beforePropertyValue: function beforePropertyValue () { + lexState = 'value'; + }, + + afterPropertyValue: function afterPropertyValue () { + switch (c) { + case ',': + case '}': + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + beforeArrayValue: function beforeArrayValue () { + if (c === ']') { + return newToken('punctuator', read()) + } + + lexState = 'value'; + }, + + afterArrayValue: function afterArrayValue () { + switch (c) { + case ',': + case ']': + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + end: function end () { + // This code is unreachable since it's handled by the default lexState. + // if (c === undefined) { + // read() + // return newToken('eof') + // } + + throw invalidChar(read()) + }, + }; + + function newToken (type, value) { + return { + type: type, + value: value, + line: line, + column: column, + } + } + + function literal (s) { + for (var i = 0, list = s; i < list.length; i += 1) { + var c = list[i]; + + var p = peek(); + + if (p !== c) { + throw invalidChar(read()) + } + + read(); + } + } + + function escape () { + var c = peek(); + switch (c) { + case 'b': + read(); + return '\b' + + case 'f': + read(); + return '\f' + + case 'n': + read(); + return '\n' + + case 'r': + read(); + return '\r' + + case 't': + read(); + return '\t' + + case 'v': + read(); + return '\v' + + case '0': + read(); + if (util.isDigit(peek())) { + throw invalidChar(read()) + } + + return '\0' + + case 'x': + read(); + return hexEscape() + + case 'u': + read(); + return unicodeEscape() + + case '\n': + case '\u2028': + case '\u2029': + read(); + return '' + + case '\r': + read(); + if (peek() === '\n') { + read(); + } + + return '' + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + throw invalidChar(read()) + + case undefined: + throw invalidChar(read()) + } + + return read() + } + + function hexEscape () { + var buffer = ''; + var c = peek(); + + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + + c = peek(); + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + + return String.fromCodePoint(parseInt(buffer, 16)) + } + + function unicodeEscape () { + var buffer = ''; + var count = 4; + + while (count-- > 0) { + var c = peek(); + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + } + + return String.fromCodePoint(parseInt(buffer, 16)) + } + + var parseStates = { + start: function start () { + if (token.type === 'eof') { + throw invalidEOF() + } + + push(); + }, + + beforePropertyName: function beforePropertyName () { + switch (token.type) { + case 'identifier': + case 'string': + key = token.value; + parseState = 'afterPropertyName'; + return + + case 'punctuator': + // This code is unreachable since it's handled by the lexState. + // if (token.value !== '}') { + // throw invalidToken() + // } + + pop(); + return + + case 'eof': + throw invalidEOF() + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + afterPropertyName: function afterPropertyName () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator' || token.value !== ':') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + parseState = 'beforePropertyValue'; + }, + + beforePropertyValue: function beforePropertyValue () { + if (token.type === 'eof') { + throw invalidEOF() + } + + push(); + }, + + beforeArrayValue: function beforeArrayValue () { + if (token.type === 'eof') { + throw invalidEOF() + } + + if (token.type === 'punctuator' && token.value === ']') { + pop(); + return + } + + push(); + }, + + afterPropertyValue: function afterPropertyValue () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + switch (token.value) { + case ',': + parseState = 'beforePropertyName'; + return + + case '}': + pop(); + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + afterArrayValue: function afterArrayValue () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + switch (token.value) { + case ',': + parseState = 'beforeArrayValue'; + return + + case ']': + pop(); + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + end: function end () { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'eof') { + // throw invalidToken() + // } + }, + }; + + function push () { + var value; + + switch (token.type) { + case 'punctuator': + switch (token.value) { + case '{': + value = {}; + break + + case '[': + value = []; + break + } + + break + + case 'null': + case 'boolean': + case 'numeric': + case 'string': + value = token.value; + break + + // This code is unreachable. + // default: + // throw invalidToken() + } + + if (root === undefined) { + root = value; + } else { + var parent = stack[stack.length - 1]; + if (Array.isArray(parent)) { + parent.push(value); + } else { + Object.defineProperty(parent, key, { + value: value, + writable: true, + enumerable: true, + configurable: true, + }); + } + } + + if (value !== null && typeof value === 'object') { + stack.push(value); + + if (Array.isArray(value)) { + parseState = 'beforeArrayValue'; + } else { + parseState = 'beforePropertyName'; + } + } else { + var current = stack[stack.length - 1]; + if (current == null) { + parseState = 'end'; + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue'; + } else { + parseState = 'afterPropertyValue'; + } + } + } + + function pop () { + stack.pop(); + + var current = stack[stack.length - 1]; + if (current == null) { + parseState = 'end'; + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue'; + } else { + parseState = 'afterPropertyValue'; + } + } + + // This code is unreachable. + // function invalidParseState () { + // return new Error(`JSON5: invalid parse state '${parseState}'`) + // } + + // This code is unreachable. + // function invalidLexState (state) { + // return new Error(`JSON5: invalid lex state '${state}'`) + // } + + function invalidChar (c) { + if (c === undefined) { + return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) + } + + return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column)) + } + + function invalidEOF () { + return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) + } + + // This code is unreachable. + // function invalidToken () { + // if (token.type === 'eof') { + // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) + // } + + // const c = String.fromCodePoint(token.value.codePointAt(0)) + // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) + // } + + function invalidIdentifier () { + column -= 5; + return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column)) + } + + function separatorChar (c) { + console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping")); + } + + function formatChar (c) { + var replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + }; + + if (replacements[c]) { + return replacements[c] + } + + if (c < ' ') { + var hexString = c.charCodeAt(0).toString(16); + return '\\x' + ('00' + hexString).substring(hexString.length) + } + + return c + } + + function syntaxError (message) { + var err = new SyntaxError(message); + err.lineNumber = line; + err.columnNumber = column; + return err + } + + var stringify = function stringify (value, replacer, space) { + var stack = []; + var indent = ''; + var propertyList; + var replacerFunc; + var gap = ''; + var quote; + + if ( + replacer != null && + typeof replacer === 'object' && + !Array.isArray(replacer) + ) { + space = replacer.space; + quote = replacer.quote; + replacer = replacer.replacer; + } + + if (typeof replacer === 'function') { + replacerFunc = replacer; + } else if (Array.isArray(replacer)) { + propertyList = []; + for (var i = 0, list = replacer; i < list.length; i += 1) { + var v = list[i]; + + var item = (void 0); + + if (typeof v === 'string') { + item = v; + } else if ( + typeof v === 'number' || + v instanceof String || + v instanceof Number + ) { + item = String(v); + } + + if (item !== undefined && propertyList.indexOf(item) < 0) { + propertyList.push(item); + } + } + } + + if (space instanceof Number) { + space = Number(space); + } else if (space instanceof String) { + space = String(space); + } + + if (typeof space === 'number') { + if (space > 0) { + space = Math.min(10, Math.floor(space)); + gap = ' '.substr(0, space); + } + } else if (typeof space === 'string') { + gap = space.substr(0, 10); + } + + return serializeProperty('', {'': value}) + + function serializeProperty (key, holder) { + var value = holder[key]; + if (value != null) { + if (typeof value.toJSON5 === 'function') { + value = value.toJSON5(key); + } else if (typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + } + + if (replacerFunc) { + value = replacerFunc.call(holder, key, value); + } + + if (value instanceof Number) { + value = Number(value); + } else if (value instanceof String) { + value = String(value); + } else if (value instanceof Boolean) { + value = value.valueOf(); + } + + switch (value) { + case null: return 'null' + case true: return 'true' + case false: return 'false' + } + + if (typeof value === 'string') { + return quoteString(value, false) + } + + if (typeof value === 'number') { + return String(value) + } + + if (typeof value === 'object') { + return Array.isArray(value) ? serializeArray(value) : serializeObject(value) + } + + return undefined + } + + function quoteString (value) { + var quotes = { + "'": 0.1, + '"': 0.2, + }; + + var replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + }; + + var product = ''; + + for (var i = 0; i < value.length; i++) { + var c = value[i]; + switch (c) { + case "'": + case '"': + quotes[c]++; + product += c; + continue + + case '\0': + if (util.isDigit(value[i + 1])) { + product += '\\x00'; + continue + } + } + + if (replacements[c]) { + product += replacements[c]; + continue + } + + if (c < ' ') { + var hexString = c.charCodeAt(0).toString(16); + product += '\\x' + ('00' + hexString).substring(hexString.length); + continue + } + + product += c; + } + + var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; }); + + product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); + + return quoteChar + product + quoteChar + } + + function serializeObject (value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value); + + var stepback = indent; + indent = indent + gap; + + var keys = propertyList || Object.keys(value); + var partial = []; + for (var i = 0, list = keys; i < list.length; i += 1) { + var key = list[i]; + + var propertyString = serializeProperty(key, value); + if (propertyString !== undefined) { + var member = serializeKey(key) + ':'; + if (gap !== '') { + member += ' '; + } + member += propertyString; + partial.push(member); + } + } + + var final; + if (partial.length === 0) { + final = '{}'; + } else { + var properties; + if (gap === '') { + properties = partial.join(','); + final = '{' + properties + '}'; + } else { + var separator = ',\n' + indent; + properties = partial.join(separator); + final = '{\n' + indent + properties + ',\n' + stepback + '}'; + } + } + + stack.pop(); + indent = stepback; + return final + } + + function serializeKey (key) { + if (key.length === 0) { + return quoteString(key, true) + } + + var firstChar = String.fromCodePoint(key.codePointAt(0)); + if (!util.isIdStartChar(firstChar)) { + return quoteString(key, true) + } + + for (var i = firstChar.length; i < key.length; i++) { + if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { + return quoteString(key, true) + } + } + + return key + } + + function serializeArray (value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value); + + var stepback = indent; + indent = indent + gap; + + var partial = []; + for (var i = 0; i < value.length; i++) { + var propertyString = serializeProperty(String(i), value); + partial.push((propertyString !== undefined) ? propertyString : 'null'); + } + + var final; + if (partial.length === 0) { + final = '[]'; + } else { + if (gap === '') { + var properties = partial.join(','); + final = '[' + properties + ']'; + } else { + var separator = ',\n' + indent; + var properties$1 = partial.join(separator); + final = '[\n' + indent + properties$1 + ',\n' + stepback + ']'; + } + } + + stack.pop(); + indent = stepback; + return final + } + }; + + var JSON5 = { + parse: parse, + stringify: stringify, + }; + + var lib = JSON5; + + var es5 = lib; + + return es5; + +}))); diff --git a/lib/kucha.json b/lib/kucha.json new file mode 100644 index 0000000..53d19f5 --- /dev/null +++ b/lib/kucha.json @@ -0,0 +1,1101 @@ +{ + "作者": "cc", + "站名": "酷茶影视", + "主页url": "https://www.kcys.top/", + "热门": "", + "分类": "电影$20#电视剧$21#综艺$23#动漫$22#", + + "分类url": "https://www.kcys.top/index.php/vod/show/by/{by}/class/{class}/id/{cateId}/page/{catePg}.html", + "数组": "", + "地区": "地区:&&", + "类型": "类型:&&", + "导演": "导演:&&

    ", + "主演": "主演:&&

    ", + "简介": "description\" content=\"&& />", + "嗅探词":".m3u8#.mp4#.flv#.m4a#.avi#.mkv#.mov#.3gp#.asf#.rm#.rmvb#.wmv#.mpg#.mpeg#.mpe#.ts#.vob#.mp3#.wma", + "线路数组": "module-tab-item tab-item&&", + "线路标题": "data-dropdown-value=\"&&\">", + "播放数组": "", + "播放列表": "", + "播放标题":"", + "播放链接": "href=\"&&\"", + "筛选": { + "1": [ + { + "key": "cateId", + "name": "类型", + "value": [ + { + "n": "全部", + "v": "2" + }, + { + "n": "国产剧", + "v": "6" + }, + { + "n": "港台剧", + "v": "7" + }, + { + "n": "日韩剧", + "v": "8" + }, + { + "n": "欧美剧", + "v": "9" + }, + { + "n": "海外剧", + "v": "10" + }, + { + "n": "其他剧", + "v": "11" + }, + { + "n": "战争片", + "v": "12" + }, + { + "n": "犯罪片", + "v": "20" + }, + { + "n": "惊悚片", + "v": "21" + }, + { + "n": "冒险片", + "v": "22" + }, + { + "n": "悬疑片", + "v": "23" + }, + { + "n": "武侠片", + "v": "24" + }, + { + "n": "奇幻片", + "v": "25" + }, + { + "n": "纪录片", + "v": "26" + }, + { + "n": "动画片", + "v": "27" + } + ] + }, + { + "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": "儿童" + } + ] + }, + { + "key": "area", + "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": "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" + } + ] + }, + { + "key": "by", + "name": "排序", + "value": [ + { + "n": "时间", + "v": "time" + }, + { + "n": "人气", + "v": "hits" + }, + { + "n": "评分", + "v": "score" + } + ] + } + ], + "2": [ + { + "key": "cateId", + "name": "类型", + "value": [ + { + "n": "全部", + "v": "2" + }, + { + "n": "国产剧", + "v": "13" + }, + { + "n": "港台剧", + "v": "14" + }, + { + "n": "日韩剧", + "v": "15" + }, + { + "n": "欧美剧", + "v": "16" + }, + { + "n": "泰国剧", + "v": "28" + } + ] + }, + { + "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": "其他" + } + ] + }, + { + "key": "area", + "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": "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", + "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": "2006", + "v": "2006" + }, + { + "n": "2005", + "v": "2005" + }, + { + "n": "2004", + "v": "2004" + } + ] + }, + { + "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": "访谈" + }, + { + "n": "播报", + "v": "播报" + }, + { + "n": "旅游", + "v": "旅游" + }, + { + "n": "音乐", + "v": "音乐" + }, + { + "n": "美食", + "v": "美食" + }, + { + "n": "纪实", + "v": "纪实" + }, + { + "n": "曲艺", + "v": "曲艺" + }, + { + "n": "生活", + "v": "生活" + }, + { + "n": "游戏互动", + "v": "游戏互动" + }, + { + "n": "财经", + "v": "财经" + }, + { + "n": "求职", + "v": "求职" + } + ] + }, + { + "key": "area", + "name": "地区", + "value": [ + { + "n": "全部", + "v": "" + }, + { + "n": "内地", + "v": "内地" + }, + { + "n": "港台", + "v": "港台" + }, + { + "n": "日韩", + "v": "日韩" + }, + { + "n": "欧美", + "v": "欧美" + } + ] + }, + { + "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", + "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" + } + ] + }, + { + "key": "by", + "name": "排序", + "value": [ + { + "n": "时间", + "v": "time" + }, + { + "n": "人气", + "v": "hits" + }, + { + "n": "评分", + "v": "score" + } + ] + } + ], + "4": [ + { + "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": "其他" + } + ] + }, + { + "key": "area", + "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": "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", + "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" + } + ] + }, + { + "key": "by", + "name": "排序", + "value": [ + { + "n": "时间", + "v": "time" + }, + { + "n": "人气", + "v": "hits" + }, + { + "n": "评分", + "v": "score" + } + ] + } + ], + "33": [ + { + "key": "by", + "name": "排序", + "value": [ + { + "n": "时间", + "v": "time" + }, + { + "n": "人气", + "v": "hits" + }, + { + "n": "评分", + "v": "score" + } + ] + } + ] + } +} diff --git a/lib/lezhu.json b/lib/lezhu.json new file mode 100644 index 0000000..a9e673d --- /dev/null +++ b/lib/lezhu.json @@ -0,0 +1,380 @@ + { + + "作者":"cc", + + "站名":"乐猪影视", + + "主页url":"http://www.lezhutv.com/", + + "请求头":"手机", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗!+tbox_js\"&&", + + "导演":"导演:&&

    ", + + "主演":"主演:&&

    ", + + "影片类型":"yac\"&&

    ", + + "数组":"vbox_t item-lazy\"&&", + + "标题":"title=\"&&\"", + + "副标题":"&&", + + "图片":"data-original=\"&&\"", + + "链接":"href=\"&&\"", + + "搜索url":"/index.php?m=vod-search;post;wd={wd}", + + "搜索模式":"1", + + "搜索后缀":"/detail/", + + "搜索数组":"vbox_t item-lazy\"&&", + + "搜索标题":"title=\"&&\"", + + "搜索副标题":"&&", + + "搜索图片":"data-original=\"&&\"", + + "搜索链接":"href=\"&&\"", + + "线路数组":"

    &&/h3>[替换:在线视频(支持手机)>>🌸运输车🌸线路]", + + "线路标题":"1.&&<", + + "播放数组":"list_block show\">&&", + + "播放标题":">&&", + + "播放列表":"
  • &&
  • ", + + "分类":"电影$1#连续剧$2#综艺$3#动漫$4", + + "分类url":"http://www.lezhutv.com/list/{cateId}_{catePg}_desc_{by}_{class}_{year}_{letter}_{area}_{lang}.html", + + "筛选":{ + "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":"16"}, + {"n":"惊悚片","v":"17"}, + {"n":"动画片","v":"18"}, + {"n":"悬疑片","v":"19"}, + {"n":"犯罪片","v":"20"}, + {"n":"记录片","v":"21"}, + {"n":"音乐片","v":"22"} + ] + }, + {"key":"area","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":"lang","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":"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","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":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":"2"}, + {"n":"大陆","v":"12"}, + {"n":"港剧","v":"13"}, + {"n":"韩剧","v":"14"}, + {"n":"美剧","v":"15"}, + {"n":"日剧","v":"24"}, + {"n":"台剧","v":"25"}, + {"n":"泰剧","v":"26"} + ] + }, + {"key":"area","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":"lang","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":"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","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":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "3":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":"3"}, + {"n":"大陆综艺","v":"28"}, + {"n":"港台综艺","v":"29"}, + {"n":"日韩综艺","v":"30"}, + {"n":"欧美综艺","v":"31"} + ] + }, + {"key":"area","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":"加拿大"} + ] + }, + {"key":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"粤语","v":"粤语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"}, + {"n":"德语","v":"德语"} + ] + }, + {"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","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":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "4":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":"4"}, + {"n":"国产动漫","v":"32"}, + {"n":"日本动漫","v":"33"}, + {"n":"其他动漫","v":"35"} + ] + }, + {"key":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"大陆","v":"大陆"}, + {"n":"中国大陆","v":"中国大陆"}, + {"n":"美国","v":"美国"}, + {"n":"日本","v":"日本"}, + {"n":"韩国","v":"韩国"} + ] + }, + {"key":"lang","name":"语言","value":[ + {"n":"全部语言","v":""}, + {"n":"国语","v":"国语"}, + {"n":"英语","v":"英语"}, + {"n":"韩语","v":"韩语"}, + {"n":"日语","v":"日语"} + ] + }, + {"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","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":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ] + } + } diff --git a/lib/libvio.js b/lib/libvio.js new file mode 100644 index 0000000..8328982 --- /dev/null +++ b/lib/libvio.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/live.txt b/lib/live.txt new file mode 100644 index 0000000..bb70bc8 --- /dev/null +++ b/lib/live.txt @@ -0,0 +1,17 @@ +央视,#genre# +CCTV1,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv1 +CCTV2,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv2 +CCTV4,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv4 +CCTV5,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv5 +CCTV5+,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv5+ +CCTV7,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv7 +CCTV8,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv8 +CCTV9,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv9 +CCTV10,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv10 +CCTV11,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv11 +CCTV12,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv12 +CCTV13,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv13 +CCTV14,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv14 +CCTV15,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv15 +CCTV16,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv16 +CCTV17,http://127.0.0.1:9978/proxy?do=ysptp&type=m3u8&id=cctv17 \ No newline at end of file diff --git a/lib/naikan.json b/lib/naikan.json new file mode 100644 index 0000000..b2db1e4 --- /dev/null +++ b/lib/naikan.json @@ -0,0 +1,39 @@ +{ + +"作者":"cc", + +"站名":"耐看影视", + +"主页url":"https://www.nkvod.com/", + +"简介":"cc提醒您请勿相信影片中的广告,以免上当受骗!+", + +"导演":"导演:&&", + +"主演":"主演:&&", + +"影片状态":"集数:&&", + +"影片类型":"module-info-tag\">&&立即播放", + +"搜索模式":"1", + +"搜索url":"/nk/-------------.html?wd={wd}", + +"搜索数组":"module-card-item-class\">&&", + +"搜索标题":"alt=\"&&\"", + +"搜索副标题":"note\">&&", + +"搜索图片":"data-original=\"&&\"", + +"搜索链接":"href=\"&&\"", + +"线路数组":"data-dropdown-value=&&", + +"线路标题":"+&&
    [替换:>>🌸共]+集🌸", + +"分类url":"https://www.nkvod.com/show/{cateId}--{by}------{catePg}---{year}.html;;ak", + +"分类":"电影$1#电视剧$2#综艺$3#动漫$4"} diff --git a/lib/nmys.json b/lib/nmys.json new file mode 100644 index 0000000..a42fd44 --- /dev/null +++ b/lib/nmys.json @@ -0,0 +1,310 @@ + { + "author": "春风", + "ua": "Mozilla/5.0 (Linux; Android 10; LYA-AL00; HMSCore 6.4.0.312; GMSCore 20.15.16) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.4.300 Mobile Safari/537.36", + "homeUrl": "https://m.nmddd.com", + "dcVipFlag": "true", + "dcPlayUrl": "true", + "cateManual": { + "电影": "1", + "连续剧": "2", + "动漫": "4", + "短剧": "26", + "综艺": "3" + }, + "homeVodNode": "//section/section[position()>2]//ul[@class='resize_list']/li/a", + "homeVodName": "/@title", + "homeVodId": "/@href", + "homeVodIdR": "/(S+).html", + "homeVodImg": "//img/@src", + "homeVodImgR": "", + "homeVodMark": "/div/span[2]/span/text()", + "cateUrl": "https://m.nmddd.com/vod-list-id-{cateId}-pg-{catePg}-order--by-{by}-class-0-year-{year}-letter--area-{area}-lang-.html", + "cateVodNode": "//ul[@class='resize_list']/li/a", + "cateVodName": "/@title", + "cateVodId": "/@href", + "cateVodIdR": "/(S+).html", + "cateVodImg": "//img/@src", + "cateVodImgR": "", + "cateVodMark": "/div/span[2]/span/em/text()", + "dtUrl": "https://m.nmddd.com/{vid}", + "dtNode": "//body", + "dtName": "//section[@class='page-hd']/a/@title", + "dtNameR": "", + "dtImg": "//section[@class='page-hd']/a/img/@src", + "dtImgR": "", + "dtCate": "", + "dtCateR": "", + "dtYear": "//span[contains(text(), '年代')]/following-sibling::a/text()", + "dtYearR": "", + "dtArea": "", + "dtAreaR": "", + "dtDirector": "//span[contains(text(), '导演')]/following-sibling::a/text()", + "dtDirectorR": "", + "dtActor": "//span[contains(text(), '主演')]/following-sibling::a/text()", + "dtActorR": "", + "dtDesc": "//article[@class='detail-con']/p/text()", + "dtDescR": "", + "dtFromNode": "//div[@class='hd']/ul/li/a", + "dtFromName": "/text()", + "dtFromNameR": "", + "dtUrlNode": "//div[@class='numList']/ul", + "dtUrlSubNode": "/li/a", + "dtUrlId": "@href", + "dtUrlIdR": "/(S+).html", + "dtUrlName": "/text()", + "dtUrlNameR": "", + "playUrl": "https://m.nmddd.com/{playUrl}", + "playUa": "", + "searchUrl": "https://m.nmddd.com/index.php?m=vod-search&wd={wd}", + "scVodNode": "//ul[@class='ulPicTxt clearfix']/li", + "scVodName": "//span[@class='sTit']/text()", + "scVodId": "//span[@class='sBtn']/a/@href", + "scVodIdR": "/(S+).html", + "scVodImg": "//img/@data-src", + "scVodMark": "//span[@class='sDes'][2]/text()", + "filter":{ + "1": [ + { + "name":"类型", + "key":"cateId", + "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":"16"}, + {"n":"奇幻片","v":"17"} + ]}, + { + "name":"年份", + "key":"year", + "value":[ + {"n":"全部","v":""}, + {"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"} + ]}, + { + "name":"地区", + "key":"area", + "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":"加拿大"} + ]}, + { + "name":"排序", + "key":"by", + "value":[ + {"n":"全部","v":""}, + {"n":"时间","v":"time"}, + {"n":"人气","v":"hits"}, + {"n":"评分","v":"score"} + ]} + ], + "2": [ + { + "name":"类型", + "key":"cateId", + "value":[ + {"n":"全部","v":"2"}, + {"n":"国产剧","v":"12"}, + {"n":"港台剧","v":"13"}, + {"n":"日韩剧","v":"14"}, + {"n":"欧美剧","v":"15"} + ]}, + { + "name":"年份", + "key":"year", + "value":[ + {"n":"全部","v":""}, + {"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"} + ]}, + { + "name":"地区", + "key":"area", + "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":"加拿大"} + ]}, + { + "name":"排序", + "key":"by", + "value":[ + {"n":"全部","v":""}, + {"n":"时间","v":"time"}, + {"n":"人气","v":"hits"}, + {"n":"评分","v":"score"} + ]} + ], + "3": [ + { + "name":"类型", + "key":"cateId", + "value":[ + {"n":"全部","v":"3"} + ]}, + { + "name":"年份", + "key":"year", + "value":[ + {"n":"全部","v":""}, + {"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"} + ]}, + { + "name":"地区", + "key":"area", + "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":"加拿大"} + ]}, + { + "name":"排序", + "key":"by", + "value":[ + {"n":"全部","v":""}, + {"n":"时间","v":"time"}, + {"n":"人气","v":"hits"}, + {"n":"评分","v":"score"} + ]} + ], + "4": [ + { + "name":"类型", + "key":"cateId", + "value":[ + {"n":"全部","v":"4"}, + {"n":"动漫剧","v":"18"}, + {"n":"动漫片","v":"19"} + ]}, + { + "name":"年份", + "key":"year", + "value":[ + {"n":"全部","v":""}, + {"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"} + ]}, + { + "name":"地区", + "key":"area", + "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":"加拿大"} + ]}, + { + "name":"排序", + "key":"by", + "value":[ + {"n":"全部","v":""}, + {"n":"时间","v":"time"}, + {"n":"人气","v":"hits"}, + {"n":"评分","v":"score"} + ]} + ] + } + } \ No newline at end of file diff --git a/lib/node-rsa.js b/lib/node-rsa.js new file mode 100644 index 0000000..992da33 --- /dev/null +++ b/lib/node-rsa.js @@ -0,0 +1,2 @@ +/*! For license information please see node-rsa.bundle.js.LICENSE.txt */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.NODERSA=e():t.NODERSA=e()}(globalThis,(()=>(()=>{var t={6395:t=>{t.exports={newInvalidAsn1Error:function(t){var e=new Error;return e.name="InvalidAsn1Error",e.message=t||"",e}}},5670:(t,e,r)=>{var n=r(6395),i=r(6299),o=r(3319),s=r(1431);for(var a in t.exports={Reader:o,Writer:s},i)i.hasOwnProperty(a)&&(t.exports[a]=i[a]);for(var f in n)n.hasOwnProperty(f)&&(t.exports[f]=n[f])},3319:(t,e,r)=>{var n=r(4529),i=r(4774).Buffer,o=r(6299),s=r(6395).newInvalidAsn1Error;function a(t){if(!t||!i.isBuffer(t))throw new TypeError("data must be a node Buffer");this._buf=t,this._size=t.length,this._len=0,this._offset=0}Object.defineProperty(a.prototype,"length",{enumerable:!0,get:function(){return this._len}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){return this._offset}}),Object.defineProperty(a.prototype,"remain",{get:function(){return this._size-this._offset}}),Object.defineProperty(a.prototype,"buffer",{get:function(){return this._buf.slice(this._offset)}}),a.prototype.readByte=function(t){if(this._size-this._offset<1)return null;var e=255&this._buf[this._offset];return t||(this._offset+=1),e},a.prototype.peek=function(){return this.readByte(!0)},a.prototype.readLength=function(t){if(void 0===t&&(t=this._offset),t>=this._size)return null;var e=255&this._buf[t++];if(null===e)return null;if(128&~e)this._len=e;else{if(0==(e&=127))throw s("Indefinite length not supported");if(e>4)throw s("encoding too long");if(this._size-tthis._size-n)return null;if(this._offset=n,0===this.length)return e?i.alloc(0):"";var a=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,e?a:a.toString("utf8")},a.prototype.readOID=function(t){t||(t=o.OID);var e=this.readString(t,!0);if(null===e)return null;for(var r=[],n=0,i=0;i4)throw s("Integer too long: "+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var i=this._buf[this._offset],o=0,a=0;a{t.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},1431:(t,e,r)=>{var n=r(4529),i=r(4774).Buffer,o=r(6299),s=r(6395).newInvalidAsn1Error,a={size:1024,growthFactor:8};function f(t){var e,r;e=a,r=t||{},n.ok(e),n.equal(typeof e,"object"),n.ok(r),n.equal(typeof r,"object"),Object.getOwnPropertyNames(e).forEach((function(t){if(!r[t]){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n)}})),t=r,this._buf=i.alloc(t.size||1024),this._size=this._buf.length,this._offset=0,this._options=t,this._seq=[]}Object.defineProperty(f.prototype,"buffer",{get:function(){if(this._seq.length)throw s(this._seq.length+" unended sequence(s)");return this._buf.slice(0,this._offset)}}),f.prototype.writeByte=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");this._ensure(1),this._buf[this._offset++]=t},f.prototype.writeInt=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");"number"!=typeof e&&(e=o.Integer);for(var r=4;(!(4286578688&t)||-8388608==(4286578688&t))&&r>1;)r--,t<<=8;if(r>4)throw s("BER ints cannot be > 0xffffffff");for(this._ensure(2+r),this._buf[this._offset++]=e,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&t)>>>24,t<<=8},f.prototype.writeNull=function(){this.writeByte(o.Null),this.writeByte(0)},f.prototype.writeEnumeration=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");return"number"!=typeof e&&(e=o.Enumeration),this.writeInt(t,e)},f.prototype.writeBoolean=function(t,e){if("boolean"!=typeof t)throw new TypeError("argument must be a Boolean");"number"!=typeof e&&(e=o.Boolean),this._ensure(3),this._buf[this._offset++]=e,this._buf[this._offset++]=1,this._buf[this._offset++]=t?255:0},f.prototype.writeString=function(t,e){if("string"!=typeof t)throw new TypeError("argument must be a string (was: "+typeof t+")");"number"!=typeof e&&(e=o.OctetString);var r=i.byteLength(t);this.writeByte(e),this.writeLength(r),r&&(this._ensure(r),this._buf.write(t,this._offset),this._offset+=r)},f.prototype.writeBuffer=function(t,e){if("number"!=typeof e)throw new TypeError("tag must be a number");if(!i.isBuffer(t))throw new TypeError("argument must be a buffer");this.writeByte(e),this.writeLength(t.length),this._ensure(t.length),t.copy(this._buf,this._offset,0,t.length),this._offset+=t.length},f.prototype.writeStringArray=function(t){if(!t instanceof Array)throw new TypeError("argument must be an Array[String]");var e=this;t.forEach((function(t){e.writeString(t)}))},f.prototype.writeOID=function(t,e){if("string"!=typeof t)throw new TypeError("argument must be a string");if("number"!=typeof e&&(e=o.OID),!/^([0-9]+\.){3,}[0-9]+$/.test(t))throw new Error("argument is not a valid OID string");var r=t.split("."),n=[];n.push(40*parseInt(r[0],10)+parseInt(r[1],10)),r.slice(2).forEach((function(t){!function(t,e){e<128?t.push(e):e<16384?(t.push(e>>>7|128),t.push(127&e)):e<2097152?(t.push(e>>>14|128),t.push(e>>>7&255|128),t.push(127&e)):e<268435456?(t.push(e>>>21|128),t.push(e>>>14&255|128),t.push(e>>>7&255|128),t.push(127&e)):(t.push(e>>>28&255|128),t.push(e>>>21&255|128),t.push(e>>>14&255|128),t.push(e>>>7&255|128),t.push(127&e))}(n,parseInt(t,10))}));var i=this;this._ensure(2+n.length),this.writeByte(e),this.writeLength(n.length),n.forEach((function(t){i.writeByte(t)}))},f.prototype.writeLength=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");if(this._ensure(4),t<=127)this._buf[this._offset++]=t;else if(t<=255)this._buf[this._offset++]=129,this._buf[this._offset++]=t;else if(t<=65535)this._buf[this._offset++]=130,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t;else{if(!(t<=16777215))throw s("Length too long (> 4 bytes)");this._buf[this._offset++]=131,this._buf[this._offset++]=t>>16,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t}},f.prototype.startSequence=function(t){"number"!=typeof t&&(t=o.Sequence|o.Constructor),this.writeByte(t),this._seq.push(this._offset),this._ensure(3),this._offset+=3},f.prototype.endSequence=function(){var t=this._seq.pop(),e=t+3,r=this._offset-e;if(r<=127)this._shift(e,r,-2),this._buf[t]=r;else if(r<=255)this._shift(e,r,-1),this._buf[t]=129,this._buf[t+1]=r;else if(r<=65535)this._buf[t]=130,this._buf[t+1]=r>>8,this._buf[t+2]=r;else{if(!(r<=16777215))throw s("Sequence too long");this._shift(e,r,1),this._buf[t]=131,this._buf[t+1]=r>>16,this._buf[t+2]=r>>8,this._buf[t+3]=r}},f.prototype._shift=function(t,e,r){n.ok(void 0!==t),n.ok(void 0!==e),n.ok(r),this._buf.copy(this._buf,t+r,t,t+e),this._offset+=r},f.prototype._ensure=function(t){if(n.ok(t),this._size-this._offset{var n=r(5670);t.exports={Ber:n,BerReader:n.Reader,BerWriter:n.Writer}},4529:(t,e,r)=>{"use strict";var n=r(1514)();function i(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i=0;u--)if(c[u]!==h[u])return!1;for(u=c.length-1;u>=0;u--)if(!S(t[a=c[u]],e[a],r,n))return!1;return!0}(t,e,r,n))}return r?t===e:t==e}function _(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function b(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function E(t,e,r,n){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(t){var e;try{t()}catch(t){e=t}return e}(e),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),t&&!i&&v(i,r,"Missing expected exception"+n);var o="string"==typeof n,a=!t&&i&&!r;if((!t&&s.isError(i)&&o&&b(i,r)||a)&&v(i,r,"Got unwanted exception"+n),t&&i&&r&&!b(i,r)||!t&&i)throw i}p.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=g(d(this.actual),128)+" "+this.operator+" "+g(d(this.expected),128),this.generatedMessage=!0);var e=t.stackStartFunction||v;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,i=y(e),o=n.indexOf("\n"+i);if(o>=0){var s=n.indexOf("\n",o+1);n=n.substring(s+1)}this.stack=n}}},s.inherits(p.AssertionError,Error),p.fail=v,p.ok=m,p.equal=function(t,e,r){t!=e&&v(t,e,r,"==",p.equal)},p.notEqual=function(t,e,r){t==e&&v(t,e,r,"!=",p.notEqual)},p.deepEqual=function(t,e,r){S(t,e,!1)||v(t,e,r,"deepEqual",p.deepEqual)},p.deepStrictEqual=function(t,e,r){S(t,e,!0)||v(t,e,r,"deepStrictEqual",p.deepStrictEqual)},p.notDeepEqual=function(t,e,r){S(t,e,!1)&&v(t,e,r,"notDeepEqual",p.notDeepEqual)},p.notDeepStrictEqual=function t(e,r,n){S(e,r,!0)&&v(e,r,n,"notDeepStrictEqual",t)},p.strictEqual=function(t,e,r){t!==e&&v(t,e,r,"===",p.strictEqual)},p.notStrictEqual=function(t,e,r){t===e&&v(t,e,r,"!==",p.notStrictEqual)},p.throws=function(t,e,r){E(!0,t,e,r)},p.doesNotThrow=function(t,e,r){E(!1,t,e,r)},p.ifError=function(t){if(t)throw t},p.strict=n((function t(e,r){e||v(e,!0,r,"==",t)}),p,{equal:p.strictEqual,deepEqual:p.deepStrictEqual,notEqual:p.notStrictEqual,notDeepEqual:p.notDeepStrictEqual}),p.strict.strict=p.strict;var w=Object.keys||function(t){var e=[];for(var r in t)a.call(t,r)&&e.push(r);return e}},6100:t=>{"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},3845:t=>{t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},4591:(t,e,r)=>{var n=r(5606),i=/%[sdj%]/g;e.format=function(t){if(!v(t)){for(var e=[],r=0;r=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}})),f=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(r)?n.showHidden=r:r&&e._extend(n,r),m(n.showHidden)&&(n.showHidden=!1),m(n.depth)&&(n.depth=2),m(n.colors)&&(n.colors=!1),m(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=f),c(n,t,n.depth)}function f(t,e){var r=a.styles[e];return r?"["+a.colors[r][0]+"m"+t+"["+a.colors[r][1]+"m":t}function u(t,e){return t}function c(t,r,n){if(t.customInspect&&r&&w(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return v(i)||(i=c(t,i,n)),i}var o=function(t,e){if(m(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return d(e)?t.stylize(""+e,"number"):y(e)?t.stylize(""+e,"boolean"):g(e)?t.stylize("null","null"):void 0}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),E(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(r);if(0===s.length){if(w(r)){var f=r.name?": "+r.name:"";return t.stylize("[Function"+f+"]","special")}if(S(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(b(r))return t.stylize(Date.prototype.toString.call(r),"date");if(E(r))return h(r)}var u,_="",O=!1,B=["{","}"];return l(r)&&(O=!0,B=["[","]"]),w(r)&&(_=" [Function"+(r.name?": "+r.name:"")+"]"),S(r)&&(_=" "+RegExp.prototype.toString.call(r)),b(r)&&(_=" "+Date.prototype.toUTCString.call(r)),E(r)&&(_=" "+h(r)),0!==s.length||O&&0!=r.length?n<0?S(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=O?function(t,e,r,n,i){for(var o=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(u,_,B)):B[0]+_+B[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,r,n,i,o){var s,a,f;if((f=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?a=f.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):f.set&&(a=t.stylize("[Setter]","special")),x(n,i)||(s="["+i+"]"),a||(t.seen.indexOf(f.value)<0?(a=g(r)?c(t,f.value,null):c(t,f.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),m(s)){if(o&&i.match(/^\d+$/))return a;(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function l(t){return Array.isArray(t)}function y(t){return"boolean"==typeof t}function g(t){return null===t}function d(t){return"number"==typeof t}function v(t){return"string"==typeof t}function m(t){return void 0===t}function S(t){return _(t)&&"[object RegExp]"===O(t)}function _(t){return"object"==typeof t&&null!==t}function b(t){return _(t)&&"[object Date]"===O(t)}function E(t){return _(t)&&("[object Error]"===O(t)||t instanceof Error)}function w(t){return"function"==typeof t}function O(t){return Object.prototype.toString.call(t)}function B(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(m(o)&&(o=n.env.NODE_DEBUG||""),t=t.toUpperCase(),!s[t])if(new RegExp("\\b"+t+"\\b","i").test(o)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=l,e.isBoolean=y,e.isNull=g,e.isNullOrUndefined=function(t){return null==t},e.isNumber=d,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=m,e.isRegExp=S,e.isObject=_,e.isDate=b,e.isError=E,e.isFunction=w,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(3845);var A=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function x(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[B((t=new Date).getHours()),B(t.getMinutes()),B(t.getSeconds())].join(":"),[t.getDate(),A[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(6100),e._extend=function(t,e){if(!e||!_(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}},7526:(t,e)=>{"use strict";e.byteLength=function(t){var e=a(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,o=a(t),s=o[0],f=o[1],u=new i(function(t,e,r){return 3*(e+r)/4-r}(0,s,f)),c=0,h=f>0?s-4:s;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===f&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===f&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,o=[],s=16383,a=0,u=n-i;au?u:a+s));return 1===i?(e=t[n-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)r[s]=o[s],n[o.charCodeAt(s)]=s;function a(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function f(t,e,n){for(var i,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},8287:(t,e,r)=>{"use strict";var n=r(7526),i=r(251);e.Buffer=a,e.SlowBuffer=function(t){return+t!=t&&(t=0),a.alloc(+t)},e.INSPECT_MAX_BYTES=50;var o=2147483647;function s(t){if(t>o)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return e.__proto__=a.prototype,e}function a(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return c(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!a.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|l(t,e),n=s(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}(t,e);if(ArrayBuffer.isView(t))return h(t);if(null==t)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(H(t,ArrayBuffer)||t&&H(t.buffer,ArrayBuffer))return function(t,e,r){if(e<0||t.byteLength=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|t}function l(t,e){if(a.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||H(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return M(t).length;default:if(i)return n?-1:U(t).length;e=(""+e).toLowerCase(),i=!0}}function y(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return B(this,e,r);case"ascii":return x(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return O(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function d(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),F(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:v(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):v(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,r,n,i){var o,s=1,a=t.length,f=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,f/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var c=-1;for(o=r;oa&&(r=a-f),o=r;o>=0;o--){for(var h=!0,p=0;pi&&(n=i):n=i;var o=e.length;n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function O(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function B(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[i+1]))&&(f=(31&u)<<6|63&o)>127&&(c=f);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(f=(15&u)<<12|(63&o)<<6|63&s)>2047&&(f<55296||f>57343)&&(c=f);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(f=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&f<1114112&&(c=f)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),i+=h}return function(t){var e=t.length;if(e<=A)return String.fromCharCode.apply(String,t);for(var r="",n=0;nr&&(t+=" ... "),""},a.prototype.compare=function(t,e,r,n,i){if(H(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),f=Math.min(o,s),u=this.slice(n,i),c=t.slice(e,r),h=0;h>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return S(this,t,e,r);case"ascii":return _(this,t,e,r);case"latin1":case"binary":return b(this,t,e,r);case"base64":return E(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function x(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;ii)&&(r=i);for(var o="",s=e;sr)throw new RangeError("Trying to access beyond buffer length")}function D(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function R(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function N(t,e,r,n,o){return e=+e,r>>>=0,o||R(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function L(t,e,r,n,o){return e=+e,r>>>=0,o||R(t,0,r,8),i.write(t,e,r,n,52,8),r+8}a.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||k(t,e,this.length);for(var n=this[t],i=1,o=0;++o>>=0,e>>>=0,r||k(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return t>>>=0,e||k(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return t>>>=0,e||k(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return t>>>=0,e||k(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return t>>>=0,e||k(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return t>>>=0,e||k(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||k(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||k(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},a.prototype.readInt8=function(t,e){return t>>>=0,e||k(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){t>>>=0,e||k(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){t>>>=0,e||k(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return t>>>=0,e||k(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return t>>>=0,e||k(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return t>>>=0,e||k(t,4,this.length),i.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return t>>>=0,e||k(t,4,this.length),i.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return t>>>=0,e||k(t,8,this.length),i.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return t>>>=0,e||k(t,8,this.length),i.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||D(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||D(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,1,255,0),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);D(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>>=0,!n){var i=Math.pow(2,8*r-1);D(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s|0)-a&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||D(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},a.prototype.writeFloatLE=function(t,e,r){return N(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return N(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return L(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return L(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(!a.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},a.prototype.fill=function(t,e,r,n){if("string"==typeof t){if("string"==typeof e?(n=e,e=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!a.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===t.length){var i=t.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(t=i)}}else"number"==typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function M(t){return n.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(C,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function j(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function H(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function F(t){return t!=t}},8075:(t,e,r)=>{"use strict";var n=r(453),i=r(487),o=i(n("String.prototype.indexOf"));t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&o(t,".prototype.")>-1?i(r):r}},487:(t,e,r)=>{"use strict";var n=r(6743),i=r(453),o=r(6897),s=r(9675),a=i("%Function.prototype.apply%"),f=i("%Function.prototype.call%"),u=i("%Reflect.apply%",!0)||n.call(f,a),c=r(655),h=i("%Math.max%");t.exports=function(t){if("function"!=typeof t)throw new s("a function is required");var e=u(n,f,arguments);return o(e,1+h(0,t.length-(arguments.length-1)),!0)};var p=function(){return u(n,a,arguments)};c?c(t.exports,"apply",{value:p}):t.exports.apply=p},955:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,e=t.lib.BlockCipher,r=t.algo,i=[],o=[],s=[],a=[],f=[],u=[],c=[],h=[],p=[],l=[];!function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var r=0,n=0;for(e=0;e<256;e++){var y=n^n<<1^n<<2^n<<3^n<<4;y=y>>>8^255&y^99,i[r]=y,o[y]=r;var g=t[r],d=t[g],v=t[d],m=257*t[y]^16843008*y;s[r]=m<<24|m>>>8,a[r]=m<<16|m>>>16,f[r]=m<<8|m>>>24,u[r]=m,m=16843009*v^65537*d^257*g^16843008*r,c[y]=m<<24|m>>>8,h[y]=m<<16|m>>>16,p[y]=m<<8|m>>>24,l[y]=m,r?(r=g^t[t[t[v^g]]],n^=t[t[n]]):r=n=1}}();var y=[0,1,2,4,8,16,32,64,128,27,54],g=r.AES=e.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,n=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],s=0;s6&&s%r==4&&(a=i[a>>>24]<<24|i[a>>>16&255]<<16|i[a>>>8&255]<<8|i[255&a]):(a=i[(a=a<<8|a>>>24)>>>24]<<24|i[a>>>16&255]<<16|i[a>>>8&255]<<8|i[255&a],a^=y[s/r|0]<<24),o[s]=o[s-r]^a}for(var f=this._invKeySchedule=[],u=0;u>>24]]^h[i[a>>>16&255]]^p[i[a>>>8&255]]^l[i[255&a]]}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,s,a,f,u,i)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,c,h,p,l,o),r=t[e+1],t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,n,i,o,s,a){for(var f=this._nRounds,u=t[e]^r[0],c=t[e+1]^r[1],h=t[e+2]^r[2],p=t[e+3]^r[3],l=4,y=1;y>>24]^i[c>>>16&255]^o[h>>>8&255]^s[255&p]^r[l++],d=n[c>>>24]^i[h>>>16&255]^o[p>>>8&255]^s[255&u]^r[l++],v=n[h>>>24]^i[p>>>16&255]^o[u>>>8&255]^s[255&c]^r[l++],m=n[p>>>24]^i[u>>>16&255]^o[c>>>8&255]^s[255&h]^r[l++];u=g,c=d,h=v,p=m}g=(a[u>>>24]<<24|a[c>>>16&255]<<16|a[h>>>8&255]<<8|a[255&p])^r[l++],d=(a[c>>>24]<<24|a[h>>>16&255]<<16|a[p>>>8&255]<<8|a[255&u])^r[l++],v=(a[h>>>24]<<24|a[p>>>16&255]<<16|a[u>>>8&255]<<8|a[255&c])^r[l++],m=(a[p>>>24]<<24|a[u>>>16&255]<<16|a[c>>>8&255]<<8|a[255&h])^r[l++],t[e]=g,t[e+1]=d,t[e+2]=v,t[e+3]=m},keySize:8});t.AES=e._createHelper(g)}(),n.AES)},7165:function(t,e,r){var n,i,o,s,a,f,u,c,h,p,l,y,g,d,v,m,S,_,b;t.exports=(n=r(9021),r(9506),void(n.lib.Cipher||(i=n,o=i.lib,s=o.Base,a=o.WordArray,f=o.BufferedBlockAlgorithm,u=i.enc,u.Utf8,c=u.Base64,h=i.algo.EvpKDF,p=o.Cipher=f.extend({cfg:s.extend(),createEncryptor:function(t,e){return this.create(this._ENC_XFORM_MODE,t,e)},createDecryptor:function(t,e){return this.create(this._DEC_XFORM_MODE,t,e)},init:function(t,e,r){this.cfg=this.cfg.extend(r),this._xformMode=t,this._key=e,this.reset()},reset:function(){f.reset.call(this),this._doReset()},process:function(t){return this._append(t),this._process()},finalize:function(t){return t&&this._append(t),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function t(t){return"string"==typeof t?b:S}return function(e){return{encrypt:function(r,n,i){return t(n).encrypt(e,r,n,i)},decrypt:function(r,n,i){return t(n).decrypt(e,r,n,i)}}}}()}),o.StreamCipher=p.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),l=i.mode={},y=o.BlockCipherMode=s.extend({createEncryptor:function(t,e){return this.Encryptor.create(t,e)},createDecryptor:function(t,e){return this.Decryptor.create(t,e)},init:function(t,e){this._cipher=t,this._iv=e}}),g=l.CBC=function(){var t=y.extend();function e(t,e,r){var n=this._iv;if(n){var i=n;this._iv=void 0}else i=this._prevBlock;for(var o=0;o>>2];t.sigBytes-=e}},o.BlockCipher=p.extend({cfg:p.cfg.extend({mode:g,padding:d}),reset:function(){p.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=r.createEncryptor;else n=r.createDecryptor,this._minBufferSize=1;this._mode&&this._mode.__creator==n?this._mode.init(this,e&&e.words):(this._mode=n.call(r,this,e&&e.words),this._mode.__creator=n)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else e=this._process(!0),t.unpad(e);return e},blockSize:4}),v=o.CipherParams=s.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}}),m=(i.format={}).OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var n=a.create([1398893684,1701076831]).concat(r).concat(e);else n=e;return n.toString(c)},parse:function(t){var e=c.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var n=a.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return v.create({ciphertext:e,salt:n})}},S=o.SerializableCipher=s.extend({cfg:s.extend({format:m}),encrypt:function(t,e,r,n){n=this.cfg.extend(n);var i=t.createEncryptor(r,n),o=i.finalize(e),s=i.cfg;return v.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:n.format})},decrypt:function(t,e,r,n){return n=this.cfg.extend(n),e=this._parse(e,n.format),t.createDecryptor(r,n).finalize(e.ciphertext)},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),_=(i.kdf={}).OpenSSL={execute:function(t,e,r,n){n||(n=a.random(8));var i=h.create({keySize:e+r}).compute(t,n),o=a.create(i.words.slice(e),4*r);return i.sigBytes=4*e,v.create({key:i,iv:o,salt:n})}},b=o.PasswordBasedCipher=S.extend({cfg:S.cfg.extend({kdf:_}),encrypt:function(t,e,r,n){var i=(n=this.cfg.extend(n)).kdf.execute(r,t.keySize,t.ivSize);n.iv=i.iv;var o=S.encrypt.call(this,t,e,i.key,n);return o.mixIn(i),o},decrypt:function(t,e,r,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var i=n.kdf.execute(r,t.keySize,t.ivSize,e.salt);return n.iv=i.iv,S.decrypt.call(this,t,e,i.key,n)}}))))},9021:function(t,e){var r;t.exports=(r=r||function(t,e){var r=Object.create||function(){function t(){}return function(e){var r;return t.prototype=e,r=new t,t.prototype=null,r}}(),n={},i=n.lib={},o=i.Base={extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},s=i.WordArray=o.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||f).stringify(this)},concat:function(t){var e=this.words,r=t.words,n=this.sigBytes,i=t.sigBytes;if(this.clamp(),n%4)for(var o=0;o>>2]>>>24-o%4*8&255;e[n+o>>>2]|=s<<24-(n+o)%4*8}else for(o=0;o>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var r,n=[],i=function(e){var r=987654321,n=4294967295;return function(){var i=((r=36969*(65535&r)+(r>>16)&n)<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n;return i/=4294967296,(i+=.5)*(t.random()>.5?1:-1)}},o=0;o>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new s.init(r,e/2)}},u=a.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new s.init(r,e)}},c=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},h=i.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=c.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,a=i/(4*o),f=(a=e?t.ceil(a):t.max((0|a)-this._minBufferSize,0))*o,u=t.min(4*f,i);if(f){for(var c=0;c>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;a<4&&o+.75*a>>6*(3-a)&63));var f=n.charAt(64);if(f)for(;i.length%4;)i.push(f);return i.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var i=0;i>>6-s%4*2;n[i>>>2]|=(a|f)<<24-i%4*8,i++}return o.create(n,i)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},n.enc.Base64)},5503:function(t,e,r){var n;t.exports=(n=r(9021),function(){var t=n,e=t.lib.WordArray,r=t.enc;function i(t){return t<<8&4278255360|t>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i>>2]>>>16-i%4*8&65535;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var r=t.length,n=[],i=0;i>>1]|=t.charCodeAt(i)<<16-i%2*16;return e.create(n,2*r)}},r.Utf16LE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],o=0;o>>2]>>>16-o%4*8&65535);n.push(String.fromCharCode(s))}return n.join("")},parse:function(t){for(var r=t.length,n=[],o=0;o>>1]|=i(t.charCodeAt(o)<<16-o%2*16);return e.create(n,2*r)}}}(),n.enc.Utf16)},9506:function(t,e,r){var n,i,o,s,a,f,u,c;t.exports=(c=r(9021),r(5471),r(1025),o=(i=(n=c).lib).Base,s=i.WordArray,f=(a=n.algo).MD5,u=a.EvpKDF=o.extend({cfg:o.extend({keySize:4,hasher:f,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,n=r.hasher.create(),i=s.create(),o=i.words,a=r.keySize,f=r.iterations;o.lengthn&&(e=t.finalize(e)),e.clamp();for(var i=this._oKey=e.clone(),s=this._iKey=e.clone(),a=i.words,f=s.words,u=0;u>>2]|=t[i]<<24-i%4*8;e.call(this,n,r)}else e.apply(this,arguments)};r.prototype=t}}(),n.lib.WordArray)},4636:function(t,e,r){var n;t.exports=(n=r(9021),function(t){var e=n,r=e.lib,i=r.WordArray,o=r.Hasher,s=e.algo,a=[];!function(){for(var e=0;e<64;e++)a[e]=4294967296*t.abs(t.sin(e+1))|0}();var f=s.MD5=o.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var n=e+r,i=t[n];t[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,s=t[e+0],f=t[e+1],l=t[e+2],y=t[e+3],g=t[e+4],d=t[e+5],v=t[e+6],m=t[e+7],S=t[e+8],_=t[e+9],b=t[e+10],E=t[e+11],w=t[e+12],O=t[e+13],B=t[e+14],A=t[e+15],x=o[0],P=o[1],T=o[2],I=o[3];x=u(x,P,T,I,s,7,a[0]),I=u(I,x,P,T,f,12,a[1]),T=u(T,I,x,P,l,17,a[2]),P=u(P,T,I,x,y,22,a[3]),x=u(x,P,T,I,g,7,a[4]),I=u(I,x,P,T,d,12,a[5]),T=u(T,I,x,P,v,17,a[6]),P=u(P,T,I,x,m,22,a[7]),x=u(x,P,T,I,S,7,a[8]),I=u(I,x,P,T,_,12,a[9]),T=u(T,I,x,P,b,17,a[10]),P=u(P,T,I,x,E,22,a[11]),x=u(x,P,T,I,w,7,a[12]),I=u(I,x,P,T,O,12,a[13]),T=u(T,I,x,P,B,17,a[14]),x=c(x,P=u(P,T,I,x,A,22,a[15]),T,I,f,5,a[16]),I=c(I,x,P,T,v,9,a[17]),T=c(T,I,x,P,E,14,a[18]),P=c(P,T,I,x,s,20,a[19]),x=c(x,P,T,I,d,5,a[20]),I=c(I,x,P,T,b,9,a[21]),T=c(T,I,x,P,A,14,a[22]),P=c(P,T,I,x,g,20,a[23]),x=c(x,P,T,I,_,5,a[24]),I=c(I,x,P,T,B,9,a[25]),T=c(T,I,x,P,y,14,a[26]),P=c(P,T,I,x,S,20,a[27]),x=c(x,P,T,I,O,5,a[28]),I=c(I,x,P,T,l,9,a[29]),T=c(T,I,x,P,m,14,a[30]),x=h(x,P=c(P,T,I,x,w,20,a[31]),T,I,d,4,a[32]),I=h(I,x,P,T,S,11,a[33]),T=h(T,I,x,P,E,16,a[34]),P=h(P,T,I,x,B,23,a[35]),x=h(x,P,T,I,f,4,a[36]),I=h(I,x,P,T,g,11,a[37]),T=h(T,I,x,P,m,16,a[38]),P=h(P,T,I,x,b,23,a[39]),x=h(x,P,T,I,O,4,a[40]),I=h(I,x,P,T,s,11,a[41]),T=h(T,I,x,P,y,16,a[42]),P=h(P,T,I,x,v,23,a[43]),x=h(x,P,T,I,_,4,a[44]),I=h(I,x,P,T,w,11,a[45]),T=h(T,I,x,P,A,16,a[46]),x=p(x,P=h(P,T,I,x,l,23,a[47]),T,I,s,6,a[48]),I=p(I,x,P,T,m,10,a[49]),T=p(T,I,x,P,B,15,a[50]),P=p(P,T,I,x,d,21,a[51]),x=p(x,P,T,I,w,6,a[52]),I=p(I,x,P,T,y,10,a[53]),T=p(T,I,x,P,b,15,a[54]),P=p(P,T,I,x,f,21,a[55]),x=p(x,P,T,I,S,6,a[56]),I=p(I,x,P,T,A,10,a[57]),T=p(T,I,x,P,v,15,a[58]),P=p(P,T,I,x,O,21,a[59]),x=p(x,P,T,I,g,6,a[60]),I=p(I,x,P,T,E,10,a[61]),T=p(T,I,x,P,l,15,a[62]),P=p(P,T,I,x,_,21,a[63]),o[0]=o[0]+x|0,o[1]=o[1]+P|0,o[2]=o[2]+T|0,o[3]=o[3]+I|0},_doFinalize:function(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;r[i>>>5]|=128<<24-i%32;var o=t.floor(n/4294967296),s=n;r[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(i+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),e.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,f=a.words,u=0;u<4;u++){var c=f[u];f[u]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});function u(t,e,r,n,i,o,s){var a=t+(e&r|~e&n)+i+s;return(a<>>32-o)+e}function c(t,e,r,n,i,o,s){var a=t+(e&n|r&~n)+i+s;return(a<>>32-o)+e}function h(t,e,r,n,i,o,s){var a=t+(e^r^n)+i+s;return(a<>>32-o)+e}function p(t,e,r,n,i,o,s){var a=t+(r^(e|~n))+i+s;return(a<>>32-o)+e}e.MD5=o._createHelper(f),e.HmacMD5=o._createHmacHelper(f)}(Math),n.MD5)},2169:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.mode.CFB=function(){var t=n.lib.BlockCipherMode.extend();function e(t,e,r,n){var i=this._iv;if(i){var o=i.slice(0);this._iv=void 0}else o=this._prevBlock;n.encryptBlock(o,0);for(var s=0;s>24))t+=1<<24;else{var e=t>>16&255,r=t>>8&255,n=255&t;255===e?(e=0,255===r?(r=0,255===n?n=0:++n):++r):++e,t=0,t+=e<<16,t+=r<<8,t+=n}return t}var r=t.Encryptor=t.extend({processBlock:function(t,r){var n=this._cipher,i=n.blockSize,o=this._iv,s=this._counter;o&&(s=this._counter=o.slice(0),this._iv=void 0),function(t){0===(t[0]=e(t[0]))&&(t[1]=e(t[1]))}(s);var a=s.slice(0);n.encryptBlock(a,0);for(var f=0;f>>2]|=i<<24-o%4*8,t.sigBytes+=i},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},n.pad.Ansix923)},4905:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.pad.Iso10126={pad:function(t,e){var r=4*e,i=r-t.sigBytes%r;t.concat(n.lib.WordArray.random(i-1)).concat(n.lib.WordArray.create([i<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},n.pad.Iso10126)},482:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.pad.Iso97971={pad:function(t,e){t.concat(n.lib.WordArray.create([2147483648],1)),n.pad.ZeroPadding.pad(t,e)},unpad:function(t){n.pad.ZeroPadding.unpad(t),t.sigBytes--}},n.pad.Iso97971)},8124:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.pad.NoPadding={pad:function(){},unpad:function(){}},n.pad.NoPadding)},2155:function(t,e,r){var n;t.exports=(n=r(9021),r(7165),n.pad.ZeroPadding={pad:function(t,e){var r=4*e;t.clamp(),t.sigBytes+=r-(t.sigBytes%r||r)},unpad:function(t){for(var e=t.words,r=t.sigBytes-1;!(e[r>>>2]>>>24-r%4*8&255);)r--;t.sigBytes=r+1}},n.pad.ZeroPadding)},19:function(t,e,r){var n,i,o,s,a,f,u,c,h;t.exports=(h=r(9021),r(5471),r(1025),o=(i=(n=h).lib).Base,s=i.WordArray,f=(a=n.algo).SHA1,u=a.HMAC,c=a.PBKDF2=o.extend({cfg:o.extend({keySize:4,hasher:f,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,n=u.create(r.hasher,t),i=s.create(),o=s.create([1]),a=i.words,f=o.words,c=r.keySize,h=r.iterations;a.length>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var i=0;i<4;i++)f.call(this);for(i=0;i<8;i++)n[i]^=r[i+4&7];if(e){var o=e.words,s=o[0],a=o[1],u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=u>>>16|4294901760&c,p=c<<16|65535&u;for(n[0]^=u,n[1]^=h,n[2]^=c,n[3]^=p,n[4]^=u,n[5]^=h,n[6]^=c,n[7]^=p,i=0;i<4;i++)f.call(this)}},_doProcessBlock:function(t,e){var r=this._X;f.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function f(){for(var t=this._X,e=this._C,r=0;r<8;r++)o[r]=e[r];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0,r=0;r<8;r++){var n=t[r]+e[r],i=65535&n,a=n>>>16,f=((i*i>>>17)+i*a>>>15)+a*a,u=((4294901760&n)*n|0)+((65535&n)*n|0);s[r]=f^u}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}t.RabbitLegacy=e._createHelper(a)}(),n.RabbitLegacy)},6298:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,e=t.lib.StreamCipher,r=t.algo,i=[],o=[],s=[],a=r.Rabbit=e.extend({_doReset:function(){for(var t=this._key.words,e=this.cfg.iv,r=0;r<4;r++)t[r]=16711935&(t[r]<<8|t[r]>>>24)|4278255360&(t[r]<<24|t[r]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],i=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];for(this._b=0,r=0;r<4;r++)f.call(this);for(r=0;r<8;r++)i[r]^=n[r+4&7];if(e){var o=e.words,s=o[0],a=o[1],u=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=u>>>16|4294901760&c,p=c<<16|65535&u;for(i[0]^=u,i[1]^=h,i[2]^=c,i[3]^=p,i[4]^=u,i[5]^=h,i[6]^=c,i[7]^=p,r=0;r<4;r++)f.call(this)}},_doProcessBlock:function(t,e){var r=this._X;f.call(this),i[0]=r[0]^r[5]>>>16^r[3]<<16,i[1]=r[2]^r[7]>>>16^r[5]<<16,i[2]=r[4]^r[1]>>>16^r[7]<<16,i[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)i[n]=16711935&(i[n]<<8|i[n]>>>24)|4278255360&(i[n]<<24|i[n]>>>8),t[e+n]^=i[n]},blockSize:4,ivSize:2});function f(){for(var t=this._X,e=this._C,r=0;r<8;r++)o[r]=e[r];for(e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0,r=0;r<8;r++){var n=t[r]+e[r],i=65535&n,a=n>>>16,f=((i*i>>>17)+i*a>>>15)+a*a,u=((4294901760&n)*n|0)+((65535&n)*n|0);s[r]=f^u}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}t.Rabbit=e._createHelper(a)}(),n.Rabbit)},7193:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,e=t.lib.StreamCipher,r=t.algo,i=r.RC4=e.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,n=this._S=[],i=0;i<256;i++)n[i]=i;i=0;for(var o=0;i<256;i++){var s=i%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+n[i]+a)%256;var f=n[i];n[i]=n[o],n[o]=f}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var t=this._S,e=this._i,r=this._j,n=0,i=0;i<4;i++){r=(r+t[e=(e+1)%256])%256;var o=t[e];t[e]=t[r],t[r]=o,n|=t[(t[e]+t[r])%256]<<24-8*i}return this._i=e,this._j=r,n}t.RC4=e._createHelper(i);var s=r.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)o.call(this)}});t.RC4Drop=e._createHelper(s)}(),n.RC4)},8056:function(t,e,r){var n;t.exports=(n=r(9021),function(t){var e=n,r=e.lib,i=r.WordArray,o=r.Hasher,s=e.algo,a=i.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]),f=i.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]),u=i.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]),c=i.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]),h=i.create([0,1518500249,1859775393,2400959708,2840853838]),p=i.create([1352829926,1548603684,1836072691,2053994217,0]),l=s.RIPEMD160=o.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var n=e+r,i=t[n];t[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o,s,l,_,b,E,w,O,B,A,x,P=this._hash.words,T=h.words,I=p.words,k=a.words,D=f.words,R=u.words,N=c.words;for(E=o=P[0],w=s=P[1],O=l=P[2],B=_=P[3],A=b=P[4],r=0;r<80;r+=1)x=o+t[e+k[r]]|0,x+=r<16?y(s,l,_)+T[0]:r<32?g(s,l,_)+T[1]:r<48?d(s,l,_)+T[2]:r<64?v(s,l,_)+T[3]:m(s,l,_)+T[4],x=(x=S(x|=0,R[r]))+b|0,o=b,b=_,_=S(l,10),l=s,s=x,x=E+t[e+D[r]]|0,x+=r<16?m(w,O,B)+I[0]:r<32?v(w,O,B)+I[1]:r<48?d(w,O,B)+I[2]:r<64?g(w,O,B)+I[3]:y(w,O,B)+I[4],x=(x=S(x|=0,N[r]))+A|0,E=A,A=B,B=S(O,10),O=w,w=x;x=P[1]+l+B|0,P[1]=P[2]+_+A|0,P[2]=P[3]+b+E|0,P[3]=P[4]+o+w|0,P[4]=P[0]+s+O|0,P[0]=x},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(e.length+1),this._process();for(var i=this._hash,o=i.words,s=0;s<5;s++){var a=o[s];o[s]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return i},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});function y(t,e,r){return t^e^r}function g(t,e,r){return t&e|~t&r}function d(t,e,r){return(t|~e)^r}function v(t,e,r){return t&r|e&~r}function m(t,e,r){return t^(e|~r)}function S(t,e){return t<>>32-e}e.RIPEMD160=o._createHelper(l),e.HmacRIPEMD160=o._createHmacHelper(l)}(Math),n.RIPEMD160)},5471:function(t,e,r){var n,i,o,s,a,f,u,c;t.exports=(i=(n=c=r(9021)).lib,o=i.WordArray,s=i.Hasher,a=n.algo,f=[],u=a.SHA1=s.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],u=0;u<80;u++){if(u<16)f[u]=0|t[e+u];else{var c=f[u-3]^f[u-8]^f[u-14]^f[u-16];f[u]=c<<1|c>>>31}var h=(n<<5|n>>>27)+a+f[u];h+=u<20?1518500249+(i&o|~i&s):u<40?1859775393+(i^o^s):u<60?(i&o|i&s|o&s)-1894007588:(i^o^s)-899497514,a=s,s=o,o=i<<30|i>>>2,i=n,n=h}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=Math.floor(r/4294967296),e[15+(n+64>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=s.clone.call(this);return t._hash=this._hash.clone(),t}}),n.SHA1=s._createHelper(u),n.HmacSHA1=s._createHmacHelper(u),c.SHA1)},6308:function(t,e,r){var n,i,o,s,a,f;t.exports=(f=r(9021),r(3009),i=(n=f).lib.WordArray,o=n.algo,s=o.SHA256,a=o.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=s._doFinalize.call(this);return t.sigBytes-=4,t}}),n.SHA224=s._createHelper(a),n.HmacSHA224=s._createHmacHelper(a),f.SHA224)},3009:function(t,e,r){var n;t.exports=(n=r(9021),function(t){var e=n,r=e.lib,i=r.WordArray,o=r.Hasher,s=e.algo,a=[],f=[];!function(){function e(e){for(var r=t.sqrt(e),n=2;n<=r;n++)if(!(e%n))return!1;return!0}function r(t){return 4294967296*(t-(0|t))|0}for(var n=2,i=0;i<64;)e(n)&&(i<8&&(a[i]=r(t.pow(n,.5))),f[i]=r(t.pow(n,1/3)),i++),n++}();var u=[],c=s.SHA256=o.extend({_doReset:function(){this._hash=new i.init(a.slice(0))},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],c=r[5],h=r[6],p=r[7],l=0;l<64;l++){if(l<16)u[l]=0|t[e+l];else{var y=u[l-15],g=(y<<25|y>>>7)^(y<<14|y>>>18)^y>>>3,d=u[l-2],v=(d<<15|d>>>17)^(d<<13|d>>>19)^d>>>10;u[l]=g+u[l-7]+v+u[l-16]}var m=n&i^n&o^i&o,S=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),_=p+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&h)+f[l]+u[l];p=h,h=c,c=a,a=s+_|0,s=o,o=i,i=n,n=_+(S+m)|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+h|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128<<24-i%32,r[14+(i+64>>>9<<4)]=t.floor(n/4294967296),r[15+(i+64>>>9<<4)]=n,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(c),e.HmacSHA256=o._createHmacHelper(c)}(Math),n.SHA256)},5953:function(t,e,r){var n;t.exports=(n=r(9021),r(3240),function(t){var e=n,r=e.lib,i=r.WordArray,o=r.Hasher,s=e.x64.Word,a=e.algo,f=[],u=[],c=[];!function(){for(var t=1,e=0,r=0;r<24;r++){f[t+5*e]=(r+1)*(r+2)/2%64;var n=(2*t+3*e)%5;t=e%5,e=n}for(t=0;t<5;t++)for(e=0;e<5;e++)u[t+5*e]=e+(2*t+3*e)%5*5;for(var i=1,o=0;o<24;o++){for(var a=0,h=0,p=0;p<7;p++){if(1&i){var l=(1<>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(P=r[i]).high^=s,P.low^=o}for(var a=0;a<24;a++){for(var p=0;p<5;p++){for(var l=0,y=0,g=0;g<5;g++)l^=(P=r[p+5*g]).high,y^=P.low;var d=h[p];d.high=l,d.low=y}for(p=0;p<5;p++){var v=h[(p+4)%5],m=h[(p+1)%5],S=m.high,_=m.low;for(l=v.high^(S<<1|_>>>31),y=v.low^(_<<1|S>>>31),g=0;g<5;g++)(P=r[p+5*g]).high^=l,P.low^=y}for(var b=1;b<25;b++){var E=(P=r[b]).high,w=P.low,O=f[b];O<32?(l=E<>>32-O,y=w<>>32-O):(l=w<>>64-O,y=E<>>64-O);var B=h[u[b]];B.high=l,B.low=y}var A=h[0],x=r[0];for(A.high=x.high,A.low=x.low,p=0;p<5;p++)for(g=0;g<5;g++){var P=r[b=p+5*g],T=h[b],I=h[(p+1)%5+5*g],k=h[(p+2)%5+5*g];P.high=T.high^~I.high&k.high,P.low=T.low^~I.low&k.low}P=r[0];var D=c[a];P.high^=D.high,P.low^=D.low}},_doFinalize:function(){var e=this._data,r=e.words,n=(this._nDataBytes,8*e.sigBytes),o=32*this.blockSize;r[n>>>5]|=1<<24-n%32,r[(t.ceil((n+1)/o)*o>>>5)-1]|=128,e.sigBytes=4*r.length,this._process();for(var s=this._state,a=this.cfg.outputLength/8,f=a/8,u=[],c=0;c>>24)|4278255360&(p<<24|p>>>8),l=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8),u.push(l),u.push(p)}return new i.init(u,a)},clone:function(){for(var t=o.clone.call(this),e=t._state=this._state.slice(0),r=0;r<25;r++)e[r]=e[r].clone();return t}});e.SHA3=o._createHelper(p),e.HmacSHA3=o._createHmacHelper(p)}(Math),n.SHA3)},9557:function(t,e,r){var n,i,o,s,a,f,u,c;t.exports=(c=r(9021),r(3240),r(1380),i=(n=c).x64,o=i.Word,s=i.WordArray,a=n.algo,f=a.SHA512,u=a.SHA384=f.extend({_doReset:function(){this._hash=new s.init([new o.init(3418070365,3238371032),new o.init(1654270250,914150663),new o.init(2438529370,812702999),new o.init(355462360,4144912697),new o.init(1731405415,4290775857),new o.init(2394180231,1750603025),new o.init(3675008525,1694076839),new o.init(1203062813,3204075428)])},_doFinalize:function(){var t=f._doFinalize.call(this);return t.sigBytes-=16,t}}),n.SHA384=f._createHelper(u),n.HmacSHA384=f._createHmacHelper(u),c.SHA384)},1380:function(t,e,r){var n;t.exports=(n=r(9021),r(3240),function(){var t=n,e=t.lib.Hasher,r=t.x64,i=r.Word,o=r.WordArray,s=t.algo;function a(){return i.create.apply(i,arguments)}var f=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],u=[];!function(){for(var t=0;t<80;t++)u[t]=a()}();var c=s.SHA512=e.extend({_doReset:function(){this._hash=new o.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],c=r[5],h=r[6],p=r[7],l=n.high,y=n.low,g=i.high,d=i.low,v=o.high,m=o.low,S=s.high,_=s.low,b=a.high,E=a.low,w=c.high,O=c.low,B=h.high,A=h.low,x=p.high,P=p.low,T=l,I=y,k=g,D=d,R=v,N=m,L=S,C=_,U=b,M=E,j=w,H=O,F=B,z=A,G=x,q=P,$=0;$<80;$++){var K=u[$];if($<16)var W=K.high=0|t[e+2*$],V=K.low=0|t[e+2*$+1];else{var Y=u[$-15],X=Y.high,Z=Y.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),tt=u[$-2],et=tt.high,rt=tt.low,nt=(et>>>19|rt<<13)^(et<<3|rt>>>29)^et>>>6,it=(rt>>>19|et<<13)^(rt<<3|et>>>29)^(rt>>>6|et<<26),ot=u[$-7],st=ot.high,at=ot.low,ft=u[$-16],ut=ft.high,ct=ft.low;W=(W=(W=J+st+((V=Q+at)>>>0>>0?1:0))+nt+((V+=it)>>>0>>0?1:0))+ut+((V+=ct)>>>0>>0?1:0),K.high=W,K.low=V}var ht,pt=U&j^~U&F,lt=M&H^~M&z,yt=T&k^T&R^k&R,gt=I&D^I&N^D&N,dt=(T>>>28|I<<4)^(T<<30|I>>>2)^(T<<25|I>>>7),vt=(I>>>28|T<<4)^(I<<30|T>>>2)^(I<<25|T>>>7),mt=(U>>>14|M<<18)^(U>>>18|M<<14)^(U<<23|M>>>9),St=(M>>>14|U<<18)^(M>>>18|U<<14)^(M<<23|U>>>9),_t=f[$],bt=_t.high,Et=_t.low,wt=G+mt+((ht=q+St)>>>0>>0?1:0),Ot=vt+gt;G=F,q=z,F=j,z=H,j=U,H=M,U=L+(wt=(wt=(wt=wt+pt+((ht+=lt)>>>0>>0?1:0))+bt+((ht+=Et)>>>0>>0?1:0))+W+((ht+=V)>>>0>>0?1:0))+((M=C+ht|0)>>>0>>0?1:0)|0,L=R,C=N,R=k,N=D,k=T,D=I,T=wt+(dt+yt+(Ot>>>0>>0?1:0))+((I=ht+Ot|0)>>>0>>0?1:0)|0}y=n.low=y+I,n.high=l+T+(y>>>0>>0?1:0),d=i.low=d+D,i.high=g+k+(d>>>0>>0?1:0),m=o.low=m+N,o.high=v+R+(m>>>0>>0?1:0),_=s.low=_+C,s.high=S+L+(_>>>0>>0?1:0),E=a.low=E+M,a.high=b+U+(E>>>0>>0?1:0),O=c.low=O+H,c.high=w+j+(O>>>0>>0?1:0),A=h.low=A+z,h.high=B+F+(A>>>0>>0?1:0),P=p.low=P+q,p.high=x+G+(P>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),e[31+(n+128>>>10<<5)]=r,t.sigBytes=4*e.length,this._process(),this._hash.toX32()},clone:function(){var t=e.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});t.SHA512=e._createHelper(c),t.HmacSHA512=e._createHmacHelper(c)}(),n.SHA512)},7628:function(t,e,r){var n;t.exports=(n=r(9021),r(754),r(4636),r(9506),r(7165),function(){var t=n,e=t.lib,r=e.WordArray,i=e.BlockCipher,o=t.algo,s=[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],a=[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],f=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],u=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],h=o.DES=i.extend({_doReset:function(){for(var t=this._key.words,e=[],r=0;r<56;r++){var n=s[r]-1;e[r]=t[n>>>5]>>>31-n%32&1}for(var i=this._subKeys=[],o=0;o<16;o++){var u=i[o]=[],c=f[o];for(r=0;r<24;r++)u[r/6|0]|=e[(a[r]-1+c)%28]<<31-r%6,u[4+(r/6|0)]|=e[28+(a[r+24]-1+c)%28]<<31-r%6;for(u[0]=u[0]<<1|u[0]>>>31,r=1;r<7;r++)u[r]=u[r]>>>4*(r-1)+3;u[7]=u[7]<<5|u[7]>>>27}var h=this._invSubKeys=[];for(r=0;r<16;r++)h[r]=i[15-r]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,r){this._lBlock=t[e],this._rBlock=t[e+1],p.call(this,4,252645135),p.call(this,16,65535),l.call(this,2,858993459),l.call(this,8,16711935),p.call(this,1,1431655765);for(var n=0;n<16;n++){for(var i=r[n],o=this._lBlock,s=this._rBlock,a=0,f=0;f<8;f++)a|=u[f][((s^i[f])&c[f])>>>0];this._lBlock=s,this._rBlock=o^a}var h=this._lBlock;this._lBlock=this._rBlock,this._rBlock=h,p.call(this,1,1431655765),l.call(this,8,16711935),l.call(this,2,858993459),p.call(this,16,65535),p.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function p(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<{"use strict";var n=r(655),i=r(8068),o=r(9675),s=r(5795);t.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new o("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new o("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new o("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new o("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new o("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new o("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,f=arguments.length>4?arguments[4]:null,u=arguments.length>5?arguments[5]:null,c=arguments.length>6&&arguments[6],h=!!s&&s(t,e);if(n)n(t,e,{configurable:null===u&&h?h.configurable:!u,enumerable:null===a&&h?h.enumerable:!a,value:r,writable:null===f&&h?h.writable:!f});else{if(!c&&(a||f||u))throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},655:(t,e,r)=>{"use strict";var n=r(453)("%Object.defineProperty%",!0)||!1;if(n)try{n({},"a",{value:1})}catch(t){n=!1}t.exports=n},1237:t=>{"use strict";t.exports=EvalError},9383:t=>{"use strict";t.exports=Error},9290:t=>{"use strict";t.exports=RangeError},9538:t=>{"use strict";t.exports=ReferenceError},8068:t=>{"use strict";t.exports=SyntaxError},9675:t=>{"use strict";t.exports=TypeError},5345:t=>{"use strict";t.exports=URIError},9353:t=>{"use strict";var e=Object.prototype.toString,r=Math.max,n=function(t,e){for(var r=[],n=0;n{"use strict";var n=r(9353);t.exports=Function.prototype.bind||n},453:(t,e,r)=>{"use strict";var n,i=r(9383),o=r(1237),s=r(9290),a=r(9538),f=r(8068),u=r(9675),c=r(5345),h=Function,p=function(t){try{return h('"use strict"; return ('+t+").constructor;")()}catch(t){}},l=Object.getOwnPropertyDescriptor;if(l)try{l({},"")}catch(t){l=null}var y=function(){throw new u},g=l?function(){try{return y}catch(t){try{return l(arguments,"callee").get}catch(t){return y}}}():y,d=r(4039)(),v=r(24)(),m=Object.getPrototypeOf||(v?function(t){return t.__proto__}:null),S={},_="undefined"!=typeof Uint8Array&&m?m(Uint8Array):n,b={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?n:ArrayBuffer,"%ArrayIteratorPrototype%":d&&m?m([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":S,"%AsyncGenerator%":S,"%AsyncGeneratorFunction%":S,"%AsyncIteratorPrototype%":S,"%Atomics%":"undefined"==typeof Atomics?n:Atomics,"%BigInt%":"undefined"==typeof BigInt?n:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?n:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":o,"%Float32Array%":"undefined"==typeof Float32Array?n:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?n:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?n:FinalizationRegistry,"%Function%":h,"%GeneratorFunction%":S,"%Int8Array%":"undefined"==typeof Int8Array?n:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?n:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":d&&m?m(m([][Symbol.iterator]())):n,"%JSON%":"object"==typeof JSON?JSON:n,"%Map%":"undefined"==typeof Map?n:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&d&&m?m((new Map)[Symbol.iterator]()):n,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?n:Promise,"%Proxy%":"undefined"==typeof Proxy?n:Proxy,"%RangeError%":s,"%ReferenceError%":a,"%Reflect%":"undefined"==typeof Reflect?n:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?n:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&d&&m?m((new Set)[Symbol.iterator]()):n,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":d&&m?m(""[Symbol.iterator]()):n,"%Symbol%":d?Symbol:n,"%SyntaxError%":f,"%ThrowTypeError%":g,"%TypedArray%":_,"%TypeError%":u,"%Uint8Array%":"undefined"==typeof Uint8Array?n:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?n:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?n:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?n:Uint32Array,"%URIError%":c,"%WeakMap%":"undefined"==typeof WeakMap?n:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?n:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?n:WeakSet};if(m)try{null.error}catch(t){var E=m(m(t));b["%Error.prototype%"]=E}var w=function t(e){var r;if("%AsyncFunction%"===e)r=p("async function () {}");else if("%GeneratorFunction%"===e)r=p("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=p("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var i=t("%AsyncGenerator%");i&&m&&(r=m(i.prototype))}return b[e]=r,r},O={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},B=r(6743),A=r(9957),x=B.call(Function.call,Array.prototype.concat),P=B.call(Function.apply,Array.prototype.splice),T=B.call(Function.call,String.prototype.replace),I=B.call(Function.call,String.prototype.slice),k=B.call(Function.call,RegExp.prototype.exec),D=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,R=/\\(\\)?/g,N=function(t,e){var r,n=t;if(A(O,n)&&(n="%"+(r=O[n])[0]+"%"),A(b,n)){var i=b[n];if(i===S&&(i=w(n)),void 0===i&&!e)throw new u("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:i}}throw new f("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new u("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new u('"allowMissing" argument must be a boolean');if(null===k(/^%?[^%]*%?$/,t))throw new f("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=I(t,0,1),r=I(t,-1);if("%"===e&&"%"!==r)throw new f("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new f("invalid intrinsic syntax, expected opening `%`");var n=[];return T(t,D,(function(t,e,r,i){n[n.length]=r?T(i,R,"$1"):e||t})),n}(t),n=r.length>0?r[0]:"",i=N("%"+n+"%",e),o=i.name,s=i.value,a=!1,c=i.alias;c&&(n=c[0],P(r,x([0,1],c)));for(var h=1,p=!0;h=r.length){var v=l(s,y);s=(p=!!v)&&"get"in v&&!("originalValue"in v.get)?v.get:s[y]}else p=A(s,y),s=s[y];p&&!a&&(b[o]=s)}}return s}},5795:(t,e,r)=>{"use strict";var n=r(453)("%Object.getOwnPropertyDescriptor%",!0);if(n)try{n([],"length")}catch(t){n=null}t.exports=n},592:(t,e,r)=>{"use strict";var n=r(655),i=function(){return!!n};i.hasArrayLengthDefineBug=function(){if(!n)return null;try{return 1!==n([],"length",{value:1}).length}catch(t){return!0}},t.exports=i},24:t=>{"use strict";var e={__proto__:null,foo:{}},r=Object;t.exports=function(){return{__proto__:e}.foo===e.foo&&!(e instanceof r)}},4039:(t,e,r)=>{"use strict";var n="undefined"!=typeof Symbol&&Symbol,i=r(1333);t.exports=function(){return"function"==typeof n&&"function"==typeof Symbol&&"symbol"==typeof n("foo")&&"symbol"==typeof Symbol("bar")&&i()}},1333:t=>{"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},9957:(t,e,r)=>{"use strict";var n=Function.prototype.call,i=Object.prototype.hasOwnProperty,o=r(6743);t.exports=o.call(n,i)},251:(t,e)=>{e.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,f=(1<>1,c=-7,h=r?i-1:0,p=r?-1:1,l=t[e+h];for(h+=p,o=l&(1<<-c)-1,l>>=-c,c+=a;c>0;o=256*o+t[e+h],h+=p,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=n;c>0;s=256*s+t[e+h],h+=p,c-=8);if(0===o)o=1-u;else{if(o===f)return s?NaN:1/0*(l?-1:1);s+=Math.pow(2,n),o-=u}return(l?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,f,u=8*o-i-1,c=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(f=Math.pow(2,-s))<1&&(s--,f*=2),(e+=s+h>=1?p/f:p*Math.pow(2,1-h))*f>=2&&(s++,f/=2),s+h>=c?(a=0,s=c):s+h>=1?(a=(e*f-1)*Math.pow(2,i),s+=h):(a=e*Math.pow(2,h-1)*Math.pow(2,i),s=0));i>=8;t[r+l]=255&a,l+=y,a/=256,i-=8);for(s=s<0;t[r+l]=255&s,l+=y,s/=256,u-=8);t[r+l-y]|=128*g}},3229:(t,e,r)=>{var n=r(8287).Buffer,i=r(7449),o=r(5682),s=(r(3200),r(3100).Ber,r(8226)._),a=r(8226),f=r(1768),u=r(7460);void 0===i.RSA_NO_PADDING&&(i.RSA_NO_PADDING=3),t.exports=function(){var t={node10:["md4","md5","ripemd160","sha1","sha224","sha256","sha384","sha512"],node:["md4","md5","ripemd160","sha1","sha224","sha256","sha384","sha512"],iojs:["md4","md5","ripemd160","sha1","sha224","sha256","sha384","sha512"],browser:["md5","ripemd160","sha1","sha256","sha512"]},e="pkcs1_oaep",r="pkcs1",i={private:"pkcs1-private-pem","private-der":"pkcs1-private-der",public:"pkcs8-public-pem","public-der":"pkcs8-public-der"};function c(t,i,f){if(!(this instanceof c))return new c(t,i,f);s.isObject(i)&&(f=i,i=void 0),this.$options={signingScheme:r,signingSchemeOptions:{hash:"sha256",saltLength:null},encryptionScheme:e,encryptionSchemeOptions:{hash:"sha1",label:null},environment:a.detectEnvironment(),rsaUtils:this},this.keyPair=new o.Key,this.$cache={},n.isBuffer(t)||s.isString(t)?this.importKey(t,i):s.isObject(t)&&this.generateKeyPair(t.b,t.e),this.setOptions(f)}return c.prototype.setOptions=function(n){if((n=n||{}).environment&&(this.$options.environment=n.environment),n.signingScheme){if(s.isString(n.signingScheme)){var i=n.signingScheme.toLowerCase().split("-");1==i.length?t.node.indexOf(i[0])>-1?(this.$options.signingSchemeOptions={hash:i[0]},this.$options.signingScheme=r):(this.$options.signingScheme=i[0],this.$options.signingSchemeOptions={hash:null}):(this.$options.signingSchemeOptions={hash:i[1]},this.$options.signingScheme=i[0])}else s.isObject(n.signingScheme)&&(this.$options.signingScheme=n.signingScheme.scheme||r,this.$options.signingSchemeOptions=s.omit(n.signingScheme,"scheme"));if(!f.isSignature(this.$options.signingScheme))throw Error("Unsupported signing scheme");if(this.$options.signingSchemeOptions.hash&&-1===t[this.$options.environment].indexOf(this.$options.signingSchemeOptions.hash))throw Error("Unsupported hashing algorithm for "+this.$options.environment+" environment")}if(n.encryptionScheme){if(s.isString(n.encryptionScheme)?(this.$options.encryptionScheme=n.encryptionScheme.toLowerCase(),this.$options.encryptionSchemeOptions={}):s.isObject(n.encryptionScheme)&&(this.$options.encryptionScheme=n.encryptionScheme.scheme||e,this.$options.encryptionSchemeOptions=s.omit(n.encryptionScheme,"scheme")),!f.isEncryption(this.$options.encryptionScheme))throw Error("Unsupported encryption scheme");if(this.$options.encryptionSchemeOptions.hash&&-1===t[this.$options.environment].indexOf(this.$options.encryptionSchemeOptions.hash))throw Error("Unsupported hashing algorithm for "+this.$options.environment+" environment")}this.keyPair.setOptions(this.$options)},c.prototype.generateKeyPair=function(t,e){if(e=e||65537,(t=t||2048)%8!=0)throw Error("Key size must be a multiple of 8.");return this.keyPair.generate(t,e.toString(16)),this.$cache={},this},c.prototype.importKey=function(t,e){if(!t)throw Error("Empty key given");if(e&&(e=i[e]||e),!u.detectAndImport(this.keyPair,t,e)&&void 0===e)throw Error("Key format must be specified");return this.$cache={},this},c.prototype.exportKey=function(t){return t=i[t=t||"private"]||t,this.$cache[t]||(this.$cache[t]=u.detectAndExport(this.keyPair,t)),this.$cache[t]},c.prototype.isPrivate=function(){return this.keyPair.isPrivate()},c.prototype.isPublic=function(t){return this.keyPair.isPublic(t)},c.prototype.isEmpty=function(t){return!(this.keyPair.n||this.keyPair.e||this.keyPair.d)},c.prototype.encrypt=function(t,e,r){return this.$$encryptKey(!1,t,e,r)},c.prototype.decrypt=function(t,e){return this.$$decryptKey(!1,t,e)},c.prototype.encryptPrivate=function(t,e,r){return this.$$encryptKey(!0,t,e,r)},c.prototype.decryptPublic=function(t,e){return this.$$decryptKey(!0,t,e)},c.prototype.$$encryptKey=function(t,e,r,n){try{var i=this.keyPair.encrypt(this.$getDataForEncrypt(e,n),t);return"buffer"!=r&&r?i.toString(r):i}catch(t){throw Error("Error during encryption. Original error: "+t)}},c.prototype.$$decryptKey=function(t,e,r){try{e=s.isString(e)?n.from(e,"base64"):e;var i=this.keyPair.decrypt(e,t);if(null===i)throw Error("Key decrypt method returns null.");return this.$getDecryptedData(i,r)}catch(t){throw Error("Error during decryption (probably incorrect key). Original error: "+t)}},c.prototype.sign=function(t,e,r){if(!this.isPrivate())throw Error("This is not private key");var n=this.keyPair.sign(this.$getDataForEncrypt(t,r));return e&&"buffer"!=e&&(n=n.toString(e)),n},c.prototype.verify=function(t,e,r,n){if(!this.isPublic())throw Error("This is not public key");return n=n&&"buffer"!=n?n:null,this.keyPair.verify(this.$getDataForEncrypt(t,r),e,n)},c.prototype.getKeySize=function(){return this.keyPair.keySize},c.prototype.getMaxMessageSize=function(){return this.keyPair.maxMessageLength},c.prototype.$getDataForEncrypt=function(t,e){if(s.isString(t)||s.isNumber(t))return n.from(""+t,e||"utf8");if(n.isBuffer(t))return t;if(s.isObject(t))return n.from(JSON.stringify(t));throw Error("Unexpected data type")},c.prototype.$getDecryptedData=function(t,e){return"buffer"==(e=e||"buffer")?t:"json"==e?JSON.parse(t.toString()):t.toString(e)},c}()},4538:(t,e,r)=>{var n=r(3200);t.exports={getEngine:function(t,e){var i=r(7469);return"node"===e.environment&&"function"==typeof n.publicEncrypt&&"function"==typeof n.privateDecrypt&&(i="function"==typeof n.privateEncrypt&&"function"==typeof n.publicDecrypt?r(2418):r(1957)),i(t,e)}}},2418:(t,e,r)=>{var n=r(3200),i=r(7449),o=r(1768);t.exports=function(t,e){var r=o.pkcs1.makeScheme(t,e);return{encrypt:function(t,o){var s;if(o)return s=i.RSA_PKCS1_PADDING,e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(s=e.encryptionSchemeOptions.padding),n.privateEncrypt({key:e.rsaUtils.exportKey("private"),padding:s},t);s=i.RSA_PKCS1_OAEP_PADDING,"pkcs1"===e.encryptionScheme&&(s=i.RSA_PKCS1_PADDING),e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(s=e.encryptionSchemeOptions.padding);var a=t;return s===i.RSA_NO_PADDING&&(a=r.pkcs0pad(t)),n.publicEncrypt({key:e.rsaUtils.exportKey("public"),padding:s},a)},decrypt:function(t,o){var s;if(o)return s=i.RSA_PKCS1_PADDING,e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(s=e.encryptionSchemeOptions.padding),n.publicDecrypt({key:e.rsaUtils.exportKey("public"),padding:s},t);s=i.RSA_PKCS1_OAEP_PADDING,"pkcs1"===e.encryptionScheme&&(s=i.RSA_PKCS1_PADDING),e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(s=e.encryptionSchemeOptions.padding);var a=n.privateDecrypt({key:e.rsaUtils.exportKey("private"),padding:s},t);return s===i.RSA_NO_PADDING?r.pkcs0unpad(a):a}}}},7469:(t,e,r)=>{var n=r(1973),i=r(1768);t.exports=function(t,e){var r=i.pkcs1.makeScheme(t,e);return{encrypt:function(e,i){var o,s;return i?(o=new n(r.encPad(e,{type:1})),s=t.$doPrivate(o)):(o=new n(t.encryptionScheme.encPad(e)),s=t.$doPublic(o)),s.toBuffer(t.encryptedDataLength)},decrypt:function(e,i){var o,s=new n(e);return i?(o=t.$doPublic(s),r.encUnPad(o.toBuffer(t.encryptedDataLength),{type:1})):(o=t.$doPrivate(s),t.encryptionScheme.encUnPad(o.toBuffer(t.encryptedDataLength)))}}}},1957:(t,e,r)=>{var n=r(3200),i=r(7449),o=r(1768);t.exports=function(t,e){var s=r(7469)(t,e),a=o.pkcs1.makeScheme(t,e);return{encrypt:function(t,r){if(r)return s.encrypt(t,r);var o=i.RSA_PKCS1_OAEP_PADDING;"pkcs1"===e.encryptionScheme&&(o=i.RSA_PKCS1_PADDING),e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(o=e.encryptionSchemeOptions.padding);var f=t;return o===i.RSA_NO_PADDING&&(f=a.pkcs0pad(t)),n.publicEncrypt({key:e.rsaUtils.exportKey("public"),padding:o},f)},decrypt:function(t,r){if(r)return s.decrypt(t,r);var o=i.RSA_PKCS1_OAEP_PADDING;"pkcs1"===e.encryptionScheme&&(o=i.RSA_PKCS1_PADDING),e.encryptionSchemeOptions&&e.encryptionSchemeOptions.padding&&(o=e.encryptionSchemeOptions.padding);var f=n.privateDecrypt({key:e.rsaUtils.exportKey("private"),padding:o},t);return o===i.RSA_NO_PADDING?a.pkcs0unpad(f):f}}}},3374:(t,e,r)=>{r(8226)._,r(8226),t.exports={privateExport:function(t,e){return{n:t.n.toBuffer(),e:t.e,d:t.d.toBuffer(),p:t.p.toBuffer(),q:t.q.toBuffer(),dmp1:t.dmp1.toBuffer(),dmq1:t.dmq1.toBuffer(),coeff:t.coeff.toBuffer()}},privateImport:function(t,e,r){if(!(e.n&&e.e&&e.d&&e.p&&e.q&&e.dmp1&&e.dmq1&&e.coeff))throw Error("Invalid key data");t.setPrivate(e.n,e.e,e.d,e.p,e.q,e.dmp1,e.dmq1,e.coeff)},publicExport:function(t,e){return{n:t.n.toBuffer(),e:t.e}},publicImport:function(t,e,r){if(!e.n||!e.e)throw Error("Invalid key data");t.setPublic(e.n,e.e)},autoImport:function(e,r){return!(!r.n||!r.e||(r.d&&r.p&&r.q&&r.dmp1&&r.dmq1&&r.coeff?(t.exports.privateImport(e,r),0):(t.exports.publicImport(e,r),0)))}}},7460:(t,e,r)=>{function n(t){t=t.split("-");for(var e="private",r={type:"default"},n=1;n{var n=r(8287).Buffer,i=r(8226)._,o=r(8226),s=r(1973);const a="-----BEGIN OPENSSH PRIVATE KEY-----",f="-----END OPENSSH PRIVATE KEY-----";function u(t){const e=t.buf.readInt32BE(t.off);t.off+=4;const r=t.buf.slice(t.off,t.off+e);return t.off+=e,r}function c(t,e){t.buf.writeInt32BE(e.byteLength,t.off),t.off+=4,t.off+=e.copy(t.buf,t.off)}t.exports={privateExport:function(t,e){const r=t.n.toBuffer();let i=n.alloc(4);for(i.writeUInt32BE(t.e,0);0===i[0];)i=i.slice(1);const s=t.d.toBuffer(),u=t.coeff.toBuffer(),h=t.p.toBuffer(),p=t.q.toBuffer();let l;l=void 0!==t.sshcomment?n.from(t.sshcomment):n.from([]);const y=15+i.byteLength+4+r.byteLength,g=23+r.byteLength+4+i.byteLength+4+s.byteLength+4+u.byteLength+4+h.byteLength+4+p.byteLength+4+l.byteLength;let d=43+y+4+g;d+=8*Math.ceil(g/8)-g;const v=n.alloc(d),m={buf:v,off:0};v.write("openssh-key-v1","utf8"),v.writeUInt8(0,14),m.off+=15,c(m,n.from("none")),c(m,n.from("none")),c(m,n.from("")),m.off=m.buf.writeUInt32BE(1,m.off),m.off=m.buf.writeUInt32BE(y,m.off),c(m,n.from("ssh-rsa")),c(m,i),c(m,r),m.off=m.buf.writeUInt32BE(d-47-y,m.off),m.off+=8,c(m,n.from("ssh-rsa")),c(m,r),c(m,i),c(m,s),c(m,u),c(m,h),c(m,p),c(m,l);let S=1;for(;m.off{var n=r(8287).Buffer,i=r(3100).Ber,o=r(8226)._,s=r(8226);const a="-----BEGIN RSA PRIVATE KEY-----",f="-----END RSA PRIVATE KEY-----",u="-----BEGIN RSA PUBLIC KEY-----",c="-----END RSA PUBLIC KEY-----";t.exports={privateExport:function(t,e){e=e||{};var r=t.n.toBuffer(),n=t.d.toBuffer(),o=t.p.toBuffer(),u=t.q.toBuffer(),c=t.dmp1.toBuffer(),h=t.dmq1.toBuffer(),p=t.coeff.toBuffer(),l=r.length+n.length+o.length+u.length+c.length+h.length+p.length+512,y=new i.Writer({size:l});return y.startSequence(),y.writeInt(0),y.writeBuffer(r,2),y.writeInt(t.e),y.writeBuffer(n,2),y.writeBuffer(o,2),y.writeBuffer(u,2),y.writeBuffer(c,2),y.writeBuffer(h,2),y.writeBuffer(p,2),y.endSequence(),"der"===e.type?y.buffer:a+"\n"+s.linebrk(y.buffer.toString("base64"),64)+"\n"+f},privateImport:function(t,e,r){var u;if("der"!==(r=r||{}).type){if(n.isBuffer(e)&&(e=e.toString("utf8")),!o.isString(e))throw Error("Unsupported key format");var c=s.trimSurroundingText(e,a,f).replace(/\s+|\n\r|\n|\r$/gm,"");u=n.from(c,"base64")}else{if(!n.isBuffer(e))throw Error("Unsupported key format");u=e}var h=new i.Reader(u);h.readSequence(),h.readString(2,!0),t.setPrivate(h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0),h.readString(2,!0))},publicExport:function(t,e){e=e||{};var r=t.n.toBuffer(),n=r.length+512,o=new i.Writer({size:n});return o.startSequence(),o.writeBuffer(r,2),o.writeInt(t.e),o.endSequence(),"der"===e.type?o.buffer:u+"\n"+s.linebrk(o.buffer.toString("base64"),64)+"\n"+c},publicImport:function(t,e,r){var a;if("der"!==(r=r||{}).type){if(n.isBuffer(e)&&(e=e.toString("utf8")),o.isString(e)){var f=s.trimSurroundingText(e,u,c).replace(/\s+|\n\r|\n|\r$/gm,"");a=n.from(f,"base64")}}else{if(!n.isBuffer(e))throw Error("Unsupported key format");a=e}var h=new i.Reader(a);h.readSequence(),t.setPublic(h.readString(2,!0),h.readString(2,!0))},autoImport:function(e,r){return/^[\S\s]*-----BEGIN RSA PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PRIVATE KEY-----[\S\s]*$/g.test(r)?(t.exports.privateImport(e,r),!0):!!/^[\S\s]*-----BEGIN RSA PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PUBLIC KEY-----[\S\s]*$/g.test(r)&&(t.exports.publicImport(e,r),!0)}}},8573:(t,e,r)=>{var n=r(8287).Buffer,i=r(3100).Ber,o=r(8226)._,s="1.2.840.113549.1.1.1",a=r(8226);const f="-----BEGIN PRIVATE KEY-----",u="-----END PRIVATE KEY-----",c="-----BEGIN PUBLIC KEY-----",h="-----END PUBLIC KEY-----";t.exports={privateExport:function(t,e){e=e||{};var r=t.n.toBuffer(),n=t.d.toBuffer(),o=t.p.toBuffer(),c=t.q.toBuffer(),h=t.dmp1.toBuffer(),p=t.dmq1.toBuffer(),l=t.coeff.toBuffer(),y=r.length+n.length+o.length+c.length+h.length+p.length+l.length+512,g=new i.Writer({size:y});g.startSequence(),g.writeInt(0),g.writeBuffer(r,2),g.writeInt(t.e),g.writeBuffer(n,2),g.writeBuffer(o,2),g.writeBuffer(c,2),g.writeBuffer(h,2),g.writeBuffer(p,2),g.writeBuffer(l,2),g.endSequence();var d=new i.Writer({size:y});return d.startSequence(),d.writeInt(0),d.startSequence(),d.writeOID(s),d.writeNull(),d.endSequence(),d.writeBuffer(g.buffer,4),d.endSequence(),"der"===e.type?d.buffer:f+"\n"+a.linebrk(d.buffer.toString("base64"),64)+"\n"+u},privateImport:function(t,e,r){var c;if("der"!==(r=r||{}).type){if(n.isBuffer(e)&&(e=e.toString("utf8")),!o.isString(e))throw Error("Unsupported key format");var h=a.trimSurroundingText(e,f,u).replace("-----END PRIVATE KEY-----","").replace(/\s+|\n\r|\n|\r$/gm,"");c=n.from(h,"base64")}else{if(!n.isBuffer(e))throw Error("Unsupported key format");c=e}var p=new i.Reader(c);if(p.readSequence(),p.readInt(0),new i.Reader(p.readString(48,!0)).readOID(6,!0)!==s)throw Error("Invalid Public key format");var l=new i.Reader(p.readString(4,!0));l.readSequence(),l.readString(2,!0),t.setPrivate(l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0),l.readString(2,!0))},publicExport:function(t,e){e=e||{};var r=t.n.toBuffer(),n=r.length+512,o=new i.Writer({size:n});o.writeByte(0),o.startSequence(),o.writeBuffer(r,2),o.writeInt(t.e),o.endSequence();var f=new i.Writer({size:n});return f.startSequence(),f.startSequence(),f.writeOID(s),f.writeNull(),f.endSequence(),f.writeBuffer(o.buffer,3),f.endSequence(),"der"===e.type?f.buffer:c+"\n"+a.linebrk(f.buffer.toString("base64"),64)+"\n"+h},publicImport:function(t,e,r){var f;if("der"!==(r=r||{}).type){if(n.isBuffer(e)&&(e=e.toString("utf8")),o.isString(e)){var u=a.trimSurroundingText(e,c,h).replace(/\s+|\n\r|\n|\r$/gm,"");f=n.from(u,"base64")}}else{if(!n.isBuffer(e))throw Error("Unsupported key format");f=e}var p=new i.Reader(f);if(p.readSequence(),new i.Reader(p.readString(48,!0)).readOID(6,!0)!==s)throw Error("Invalid Public key format");var l=new i.Reader(p.readString(3,!0));l.readByte(),l.readSequence(),t.setPublic(l.readString(2,!0),l.readString(2,!0))},autoImport:function(e,r){return/^[\S\s]*-----BEGIN PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END PRIVATE KEY-----[\S\s]*$/g.test(r)?(t.exports.privateImport(e,r),!0):!!/^[\S\s]*-----BEGIN PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END PUBLIC KEY-----[\S\s]*$/g.test(r)&&(t.exports.publicImport(e,r),!0)}}},1973:(t,e,r)=>{var n=r(8287).Buffer,i=r(3200),o=r(8226)._;function s(t,e){null!=t&&("number"==typeof t?this.fromNumber(t,e):n.isBuffer(t)?this.fromBuffer(t):null==e&&"string"!=typeof t?this.fromByteArray(t):this.fromString(t,e))}function a(){return new s(null)}s.prototype.am=function(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var f=16383&this[t],u=this[t++]>>14,c=a*f+u*s;i=((f=s*f+((16383&c)<<14)+r[n]+i)>>28)+(c>>14)+a*u,r[n++]=268435455&f}return i},s.prototype.DB=28,s.prototype.DM=268435455,s.prototype.DV=1<<28,s.prototype.FV=Math.pow(2,52),s.prototype.F1=24,s.prototype.F2=4;var f,u,c=new Array;for(f="0".charCodeAt(0),u=0;u<=9;++u)c[f++]=u;for(f="a".charCodeAt(0),u=10;u<36;++u)c[f++]=u;for(f="A".charCodeAt(0),u=10;u<36;++u)c[f++]=u;function h(t){return"0123456789abcdefghijklmnopqrstuvwxyz".charAt(t)}function p(t,e){var r=c[t.charCodeAt(e)];return null==r?-1:r}function l(t){var e=a();return e.fromInt(t),e}function y(t){var e,r=1;return 0!=(e=t>>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function g(t){this.m=t}function d(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),255&t||(t>>=8,e+=8),15&t||(t>>=4,e+=4),3&t||(t>>=2,e+=2),1&t||++e,e}function E(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function w(){}function O(t){return t}function B(t){this.r2=a(),this.q3=a(),s.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}g.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},g.prototype.revert=function(t){return t},g.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},g.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},g.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},d.prototype.convert=function(t){var e=a();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(s.ZERO)>0&&this.m.subTo(e,e),e},d.prototype.revert=function(t){var e=a();return t.copyTo(e),this.reduce(e),e},d.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},d.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},d.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},w.prototype.convert=O,w.prototype.revert=O,w.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},w.prototype.sqrTo=function(t,e){t.squareTo(e)},B.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=a();return t.copyTo(e),this.reduce(e),e},B.prototype.revert=function(t){return t},B.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},B.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},B.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var A=[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],x=(1<<26)/A[A.length-1];s.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},s.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+DV:this.t=0},s.prototype.fromString=function(t,e,r){var n;switch(e){case 2:n=1;break;case 4:n=2;break;case 8:n=3;break;case 16:n=4;break;case 32:n=5;break;case 256:n=8;break;default:return void this.fromRadix(t,e)}this.t=0,this.s=0;for(var i=t.length,o=!1,a=0;--i>=0;){var f=8==n?255&t[i]:p(t,i);f<0?"-"==t.charAt(i)&&(o=!0):(o=!1,0===a?this[this.t++]=f:a+n>this.DB?(this[this.t-1]|=(f&(1<>this.DB-a):this[this.t-1]|=f<=this.DB&&(a-=this.DB))}!r&&8==n&&128&t[0]&&(this.s=-1,a>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},s.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},s.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)<=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},s.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1<>n;for(var s=r+1;s>n;n>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=t.s}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp()},s.prototype.multiplyTo=function(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},s.prototype.divRemTo=function(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t0?(n.lShiftTo(c,o),i.lShiftTo(c,r)):(n.copyTo(o),i.copyTo(r));var h=o.t,p=o[h-1];if(0!==p){var l=p*(1<1?o[h-2]>>this.F2:0),g=this.FV/l,d=(1<=0&&(r[r.t++]=1,r.subTo(_,r)),s.ONE.dlShiftTo(h,_),_.subTo(o,o);o.t=0;){var b=r[--m]==p?this.DM:Math.floor(r[m]*g+(r[m-1]+v)*d);if((r[m]+=o.am(0,b,r,S,0,h))0&&r.rShiftTo(c,r),f<0&&s.ZERO.subTo(r,r)}}},s.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(!(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},s.prototype.isEven=function(){return 0===(this.t>0?1&this[0]:this.s)},s.prototype.exp=function(t,e){if(t>4294967295||t<1)return s.ONE;var r=a(),n=a(),i=e.convert(this),o=y(t)-1;for(i.copyTo(r);--o>=0;)if(e.sqrTo(r,n),(t&1<0)e.mulTo(n,i,r);else{var f=r;r=n,n=f}return e.revert(r)},s.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},s.prototype.toRadix=function(t){if(null==t&&(t=10),0===this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),n=l(r),i=a(),o=a(),s="";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(t).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(t)+s},s.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),n=Math.pow(e,r),i=!1,o=0,a=0,f=0;f=r&&(this.dMultiply(n),this.dAddOffset(a,0),o=0,a=0))}o>0&&(this.dMultiply(Math.pow(e,o)),this.dAddOffset(a,0)),i&&s.ZERO.subTo(this,this)},s.prototype.fromNumber=function(t,e){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t),this.testBit(t-1)||this.bitwiseTo(s.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(s.ONE.shiftLeft(t-1),this);else{var r=i.randomBytes(1+(t>>3)),n=7&t;n>0?r[0]&=(1<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=t.s}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp()},s.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},s.prototype.dAddOffset=function(t,e){if(0!==t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},s.prototype.multiplyLowerTo=function(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i=0;)r[n]=0;for(n=Math.max(e-this.t,0);n0)if(0===e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},s.prototype.millerRabin=function(t){var e=this.subtract(s.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var n=e.shiftRight(r);(t=t+1>>1)>A.length&&(t=A.length);for(var i=a(),o=0;o0)for(a>a)>0&&(i=!0,o=h(r));s>=0;)a>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=h(r));return i?o:"0"},s.prototype.negate=function(){var t=a();return s.ZERO.subTo(this,t),t},s.prototype.abs=function(){return this.s<0?this.negate():this},s.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},s.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+y(this[this.t-1]^this.s&this.DM)},s.prototype.mod=function(t){var e=a();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(s.ZERO)>0&&t.subTo(e,e),e},s.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new g(e):new d(e),this.exp(t,r)},s.prototype.clone=function(){var t=a();return this.copyTo(t),t},s.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0===this.t)return-1}else{if(1==this.t)return this[0];if(0===this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24},s.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},s.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},s.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,n=this.DB-t*this.DB%8,i=0;if(t-- >0)for(n>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s<=0;)n<8?(r=(this[t]&(1<>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),128&r&&(r|=-256),0===i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(e[i++]=r);return e},s.prototype.toBuffer=function(t){var e=n.from(this.toByteArray());if(!0===t&&0===e[0])e=e.slice(1);else if(o.isNumber(t)){if(e.length>t){for(var r=0;r0?this:t},s.prototype.and=function(t){var e=a();return this.bitwiseTo(t,v,e),e},s.prototype.or=function(t){var e=a();return this.bitwiseTo(t,m,e),e},s.prototype.xor=function(t){var e=a();return this.bitwiseTo(t,S,e),e},s.prototype.andNot=function(t){var e=a();return this.bitwiseTo(t,_,e),e},s.prototype.not=function(){for(var t=a(),e=0;e=this.t?0!=this.s:!!(this[e]&1<1){var h=a();for(n.sqrTo(s[1],h);f<=c;)s[f]=a(),n.mulTo(h,s[f-2],s[f]),f+=2}var p,v,m=t.t-1,S=!0,_=a();for(i=y(t[m])-1;m>=0;){for(i>=u?p=t[m]>>i-u&c:(p=(t[m]&(1<0&&(p|=t[m-1]>>this.DB+i-u)),f=r;!(1&p);)p>>=1,--f;if((i-=f)<0&&(i+=this.DB,--m),S)s[p].copyTo(o),S=!1;else{for(;f>1;)n.sqrTo(o,_),n.sqrTo(_,o),f-=2;f>0?n.sqrTo(o,_):(v=o,o=_,_=v),n.mulTo(_,s[p],o)}for(;m>=0&&!(t[m]&1<=0?(r.subTo(n,r),e&&i.subTo(a,i),o.subTo(f,o)):(n.subTo(r,n),e&&a.subTo(i,a),f.subTo(o,f))}return 0!=n.compareTo(s.ONE)?s.ZERO:f.compareTo(t)>=0?f.subtract(t):f.signum()<0?(f.addTo(t,f),f.signum()<0?f.add(t):f):f},s.prototype.pow=function(t){return this.exp(t,new w)},s.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var n=e;e=r,r=n}var i=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(i0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(i=e.getLowestSetBit())>0&&e.rShiftTo(i,e),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},s.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=A[A.length-1]){for(e=0;e{var n=r(8287).Buffer,i=r(8226)._,o=(r(3200),r(1973)),s=r(8226),a=r(1768),f=r(4538);e.BigInteger=o,t.exports.Key=function(){function t(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}return t.prototype.setOptions=function(t){var e=a[t.signingScheme],r=a[t.encryptionScheme];e===r?this.signingScheme=this.encryptionScheme=r.makeScheme(this,t):(this.encryptionScheme=r.makeScheme(this,t),this.signingScheme=e.makeScheme(this,t)),this.encryptEngine=f.getEngine(this,t)},t.prototype.generate=function(t,e){var r=t>>1;this.e=parseInt(e,16);for(var n=new o(e,16);;){for(;this.p=new o(t-r,1),0!==this.p.subtract(o.ONE).gcd(n).compareTo(o.ONE)||!this.p.isProbablePrime(10););for(;this.q=new o(r,1),0!==this.q.subtract(o.ONE).gcd(n).compareTo(o.ONE)||!this.q.isProbablePrime(10););if(this.p.compareTo(this.q)<=0){var i=this.p;this.p=this.q,this.q=i}var s=this.p.subtract(o.ONE),a=this.q.subtract(o.ONE),f=s.multiply(a);if(0===f.gcd(n).compareTo(o.ONE)){if(this.n=this.p.multiply(this.q),this.n.bitLength()0&&(i.isNumber(e)||e.length>0)&&r.length>0))throw Error("Invalid RSA private key");this.n=new o(t),this.e=i.isNumber(e)?e:s.get32IntFromBuffer(e,0),this.d=new o(r),n&&a&&f&&u&&c&&(this.p=new o(n),this.q=new o(a),this.dmp1=new o(f),this.dmq1=new o(u),this.coeff=new o(c)),this.$$recalculateCache()},t.prototype.setPublic=function(t,e){if(!(t&&e&&t.length>0&&(i.isNumber(e)||e.length>0)))throw Error("Invalid RSA public key");this.n=new o(t),this.e=i.isNumber(e)?e:s.get32IntFromBuffer(e,0),this.$$recalculateCache()},t.prototype.$doPrivate=function(t){if(this.p||this.q)return t.modPow(this.d,this.n);for(var e=t.mod(this.p).modPow(this.dmp1,this.p),r=t.mod(this.q).modPow(this.dmq1,this.q);e.compareTo(r)<0;)e=e.add(this.p);return e.subtract(r).multiply(this.coeff).mod(this.p).multiply(this.q).add(r)},t.prototype.$doPublic=function(t){return t.modPowInt(this.e,this.n)},t.prototype.encrypt=function(t,e){var r=[],i=[],o=t.length,s=Math.ceil(o/this.maxMessageLength)||1,a=Math.ceil(o/s||1);if(1==s)r.push(t);else for(var f=0;f0)throw Error("Incorrect data or key");for(var r=[],i=0,o=0,s=t.length/this.encryptedDataLength,a=0;a>3},t}()},2487:(t,e,r)=>{var n=r(8287).Buffer,i=(r(1973),r(3200));t.exports={isEncryption:!0,isSignature:!1},t.exports.digestLength={md4:16,md5:16,ripemd160:20,rmd160:20,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64};var o="sha1";t.exports.eme_oaep_mgf1=function(e,r,s){s=s||o;for(var a=t.exports.digestLength[s],f=Math.ceil(r/a),u=n.alloc(a*f),c=n.alloc(4),h=0;hf-2*u-2)throw new Error("Message is too long to encode into an encoded message with a length of "+f+" bytes, increaseemLen to fix this error (minimum value for given parameters and options: "+(f-2*u-2)+")");var c=i.createHash(r);c.update(a),c=c.digest();var h=n.alloc(f-e.length-2*u-1);h.fill(0),h[h.length-1]=1;for(var p=n.concat([c,h,e]),l=i.randomBytes(u),y=s(l,p.length,r),g=0;g{var n=r(8287).Buffer,i=r(1973),o=r(3200),s=r(7449),a={md2:n.from("3020300c06082a864886f70d020205000410","hex"),md5:n.from("3020300c06082a864886f70d020505000410","hex"),sha1:n.from("3021300906052b0e03021a05000414","hex"),sha224:n.from("302d300d06096086480165030402040500041c","hex"),sha256:n.from("3031300d060960864801650304020105000420","hex"),sha384:n.from("3041300d060960864801650304020205000430","hex"),sha512:n.from("3051300d060960864801650304020305000440","hex"),ripemd160:n.from("3021300906052b2403020105000414","hex"),rmd160:n.from("3021300906052b2403020105000414","hex")},f={ripemd160:"rmd160"},u="sha256";t.exports={isEncryption:!0,isSignature:!0},t.exports.makeScheme=function(t,e){function r(t,e){this.key=t,this.options=e}return r.prototype.maxMessageLength=function(){return this.options.encryptionSchemeOptions&&this.options.encryptionSchemeOptions.padding==s.RSA_NO_PADDING?this.key.encryptedDataLength:this.key.encryptedDataLength-11},r.prototype.encPad=function(t,e){var r;if(e=e||{},t.length>this.key.maxMessageLength)throw new Error("Message too long for RSA (n="+this.key.encryptedDataLength+", l="+t.length+")");if(this.options.encryptionSchemeOptions&&this.options.encryptionSchemeOptions.padding==s.RSA_NO_PADDING)return(r=n.alloc(this.key.maxMessageLength-t.length)).fill(0),n.concat([r,t]);if(1===e.type)return(r=n.alloc(this.key.encryptedDataLength-t.length-1)).fill(255,0,r.length-1),r[0]=1,r[r.length-1]=0,n.concat([r,t]);(r=n.alloc(this.key.encryptedDataLength-t.length))[0]=0,r[1]=2;for(var i=o.randomBytes(r.length-3),a=0;a=t.length)return null}else{if(0!==t[0]||2!==t[1])return null;for(r=3;0!==t[r];)if(++r>=t.length)return null}return t.slice(r+1,t.length)},r.prototype.sign=function(t){var e=this.options.signingSchemeOptions.hash||u;if("browser"===this.options.environment){e=f[e]||e;var r=o.createHash(e);r.update(t);var n=this.pkcs1pad(r.digest(),e);return this.key.$doPrivate(new i(n)).toBuffer(this.key.encryptedDataLength)}var s=o.createSign("RSA-"+e.toUpperCase());return s.update(t),s.sign(this.options.rsaUtils.exportKey("private"))},r.prototype.verify=function(t,e,r){if(this.options.encryptionSchemeOptions&&this.options.encryptionSchemeOptions.padding==s.RSA_NO_PADDING)return!1;var a=this.options.signingSchemeOptions.hash||u;if("browser"===this.options.environment){a=f[a]||a,r&&(e=n.from(e,r));var c=o.createHash(a);c.update(t);var h=this.pkcs1pad(c.digest(),a);return this.key.$doPublic(new i(e)).toBuffer().toString("hex")==h.toString("hex")}var p=o.createVerify("RSA-"+a.toUpperCase());return p.update(t),p.verify(this.options.rsaUtils.exportKey("public"),e,r)},r.prototype.pkcs0pad=function(t){var e=n.alloc(this.key.maxMessageLength-t.length);return e.fill(0),n.concat([e,t])},r.prototype.pkcs0unpad=function(t){return"function"==typeof t.lastIndexOf?t.slice(t.lastIndexOf("\0")+1,t.length):t.slice(String.prototype.lastIndexOf.call(t,"\0")+1,t.length)},r.prototype.pkcs1pad=function(t,e){var r=a[e];if(!r)throw Error("Unsupported hash algorithm");var i=n.concat([r,t]);if(i.length+10>this.key.encryptedDataLength)throw Error("Key is too short for signing algorithm ("+e+")");var o=n.alloc(this.key.encryptedDataLength-i.length-1);return o.fill(255,0,o.length-1),o[0]=1,o[o.length-1]=0,n.concat([o,i])},new r(t,e)}},4414:(t,e,r)=>{var n=r(8287).Buffer,i=r(1973),o=r(3200);t.exports={isEncryption:!1,isSignature:!0};var s="sha1";t.exports.makeScheme=function(t,e){var a=r(1768).pkcs1_oaep;function f(t,e){this.key=t,this.options=e}return f.prototype.sign=function(t){var e=o.createHash(this.options.signingSchemeOptions.hash||s);e.update(t);var r=this.emsa_pss_encode(e.digest(),this.key.keySize-1);return this.key.$doPrivate(new i(r)).toBuffer(this.key.encryptedDataLength)},f.prototype.verify=function(t,e,r){r&&(e=n.from(e,r)),e=new i(e);var a=Math.ceil((this.key.keySize-1)/8),f=this.key.$doPublic(e).toBuffer(a),u=o.createHash(this.options.signingSchemeOptions.hash||s);return u.update(t),this.emsa_pss_verify(u.digest(),f,this.key.keySize-1)},f.prototype.emsa_pss_encode=function(t,e){var r=this.options.signingSchemeOptions.hash||s,i=this.options.signingSchemeOptions.mgf||a.eme_oaep_mgf1,f=this.options.signingSchemeOptions.saltLength||20,u=a.digestLength[r],c=Math.ceil(e/8);if(c>8-S<<8-S;v[0]=v[0]&_;var b=n.alloc(v.length+l.length+1);return v.copy(b,0),l.copy(b,v.length),b[b.length-1]=188,b},f.prototype.emsa_pss_verify=function(t,e,r){var i=this.options.signingSchemeOptions.hash||s,f=this.options.signingSchemeOptions.mgf||a.eme_oaep_mgf1,u=this.options.signingSchemeOptions.saltLength||20,c=a.digestLength[i],h=Math.ceil(r/8);if(h>8-(g=8*h-r)<<8-g,p[0]=p[0]&l,y=0;0===p[y]&&y{t.exports={pkcs1:r(8290),pkcs1_oaep:r(2487),pss:r(4414),isEncryption:function(e){return t.exports[e]&&t.exports[e].isEncryption},isSignature:function(e){return t.exports[e]&&t.exports[e].isSignature}}},8226:(t,e,r)=>{var n=r(5606);r(3200),t.exports.linebrk=function(t,e){for(var r="",n=0;n+e0){if(r>=4)return t.readUIntBE(e,r);for(var n=0,i=e+r,o=0;i>e;i--,o+=2)n+=t[i-1]*Math.pow(16,o);return n}return NaN},t.exports._={isObject:function(t){var e=typeof t;return!!t&&("object"==e||"function"==e)},isString:function(t){return"string"==typeof t||t instanceof String},isNumber:function(t){return"number"==typeof t||!isNaN(parseFloat(t))&&isFinite(t)},omit:function(t,e){var r={};for(var n in t)t.hasOwnProperty(n)&&n!==e&&(r[n]=t[n]);return r}},t.exports.trimSurroundingText=function(t,e,r){var n=0,i=t.length,o=t.indexOf(e);o>=0&&(n=o+e.length);var s=t.indexOf(r,o);return s>=0&&(i=s),t.substring(n,i)}},8875:(t,e,r)=>{"use strict";var n;if(!Object.keys){var i=Object.prototype.hasOwnProperty,o=Object.prototype.toString,s=r(1093),a=Object.prototype.propertyIsEnumerable,f=!a.call({toString:null},"toString"),u=a.call((function(){}),"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=function(t){var e=t.constructor;return e&&e.prototype===t},p={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},l=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!p["$"+t]&&i.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{h(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();n=function(t){var e=null!==t&&"object"==typeof t,r="[object Function]"===o.call(t),n=s(t),a=e&&"[object String]"===o.call(t),p=[];if(!e&&!r&&!n)throw new TypeError("Object.keys called on a non-object");var y=u&&r;if(a&&t.length>0&&!i.call(t,0))for(var g=0;g0)for(var d=0;d{"use strict";var n=Array.prototype.slice,i=r(1093),o=Object.keys,s=o?function(t){return o(t)}:r(8875),a=Object.keys;s.shim=function(){if(Object.keys){var t=function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2);t||(Object.keys=function(t){return i(t)?a(n.call(t)):a(t)})}else Object.keys=s;return Object.keys||s},t.exports=s},1093:t=>{"use strict";var e=Object.prototype.toString;t.exports=function(t){var r=e.call(t),n="[object Arguments]"===r;return n||(n="[object Array]"!==r&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===e.call(t.callee)),n}},8403:(t,e,r)=>{"use strict";var n=r(1189),i=r(1333)(),o=r(8075),s=Object,a=o("Array.prototype.push"),f=o("Object.prototype.propertyIsEnumerable"),u=i?Object.getOwnPropertySymbols:null;t.exports=function(t,e){if(null==t)throw new TypeError("target must be an object");var r=s(t);if(1===arguments.length)return r;for(var o=1;o{"use strict";var n=r(8403);t.exports=function(){return Object.assign?function(){if(!Object.assign)return!1;for(var t="abcdefghijklmnopqrst",e=t.split(""),r={},n=0;n{var e,r,n=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===i||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:i}catch(t){e=i}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,f=[],u=!1,c=-1;function h(){u&&a&&(u=!1,a.length?f=a.concat(f):c=-1,f.length&&p())}function p(){if(!u){var t=s(h);u=!0;for(var e=f.length;e;){for(a=f,f=[];++c1)for(var r=1;r{"use strict";var n,i=r(5606),o=r(8287),s=o.Buffer,a={};for(n in o)o.hasOwnProperty(n)&&"SlowBuffer"!==n&&"Buffer"!==n&&(a[n]=o[n]);var f=a.Buffer={};for(n in s)s.hasOwnProperty(n)&&"allocUnsafe"!==n&&"allocUnsafeSlow"!==n&&(f[n]=s[n]);if(a.Buffer.prototype=s.prototype,f.from&&f.from!==Uint8Array.from||(f.from=function(t,e,r){if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&void 0===t.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return s(t,e,r)}),f.alloc||(f.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var n=s(t);return e&&0!==e.length?"string"==typeof r?n.fill(e,r):n.fill(e):n.fill(0),n}),!a.kStringMaxLength)try{a.kStringMaxLength=i.binding("buffer").kStringMaxLength}catch(t){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a},6897:(t,e,r)=>{"use strict";var n=r(453),i=r(41),o=r(592)(),s=r(5795),a=r(9675),f=n("%Math.floor%");t.exports=function(t,e){if("function"!=typeof t)throw new a("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||f(e)!==e)throw new a("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,u=!0;if("length"in t&&s){var c=s(t,"length");c&&!c.configurable&&(n=!1),c&&!c.writable&&(u=!1)}return(n||u||!r)&&(o?i(t,"length",e,!0,!0):i(t,"length",e)),t}},3200:(t,e,r)=>{var n=r(8287).Buffer,i=r(1396),o={randomBytes:function(t){for(var e=[],r=0;r{var n=r(8287).Buffer;const i=r(3229);let o={outputEncoding:"",PublicFormat:"pkcs1-public",PrivateFormat:"pkcs1-private",options:{environment:"browser",encryptionScheme:"pkcs1"}};t.exports={NodeRSA:i,encryptRSAWithPublicKey:function(t,e,r={}){return r=Object.assign({},o,r),new i(e,r.PublicFormat,r.options).encrypt(t,r.outEncoding||"base64")},encryptRSAWithPrivateKey:function(t,e,r={}){return r=Object.assign({},o,r),new i(e,r.PrivateFormat,r.options).encryptPrivate(t,r.outputEncoding||"base64")},decryptRSAWithPublicKey:function(t,e,r={}){return r=Object.assign({},o,r),new i(e,r.PublicEncoding,r.options).decryptPublic(t,r.outEncoding||"utf8")},decryptRSAWithPrivateKey:function(t,e,r={}){return r=Object.assign({},o,r),new i(e,r.PrivateEncoding,r.options).decrypt(t,r.outEncoding||"utf8")},sign:function(t,e,r={}){return r=Object.assign({},o,r),new i(e,r.PrivateEncoding,r.options).sign(t,r.outEncoding||"base64")},verify:function(t,e,r,s={}){return"string"==typeof e&&e.match(/^([0-9a-fA-F]{2})*$/)?e=n.from(e,"hex"):"string"==typeof e&&(e=n.from(e,"base64")),s=Object.assign({},o,s),new i(r,s.PublicEncoding,s.options).verify(t,e)}}},7449:t=>{"use strict";t.exports=JSON.parse('{"O_RDONLY":0,"O_WRONLY":1,"O_RDWR":2,"S_IFMT":61440,"S_IFREG":32768,"S_IFDIR":16384,"S_IFCHR":8192,"S_IFBLK":24576,"S_IFIFO":4096,"S_IFLNK":40960,"S_IFSOCK":49152,"O_CREAT":512,"O_EXCL":2048,"O_NOCTTY":131072,"O_TRUNC":1024,"O_APPEND":8,"O_DIRECTORY":1048576,"O_NOFOLLOW":256,"O_SYNC":128,"O_SYMLINK":2097152,"O_NONBLOCK":4,"S_IRWXU":448,"S_IRUSR":256,"S_IWUSR":128,"S_IXUSR":64,"S_IRWXG":56,"S_IRGRP":32,"S_IWGRP":16,"S_IXGRP":8,"S_IRWXO":7,"S_IROTH":4,"S_IWOTH":2,"S_IXOTH":1,"E2BIG":7,"EACCES":13,"EADDRINUSE":48,"EADDRNOTAVAIL":49,"EAFNOSUPPORT":47,"EAGAIN":35,"EALREADY":37,"EBADF":9,"EBADMSG":94,"EBUSY":16,"ECANCELED":89,"ECHILD":10,"ECONNABORTED":53,"ECONNREFUSED":61,"ECONNRESET":54,"EDEADLK":11,"EDESTADDRREQ":39,"EDOM":33,"EDQUOT":69,"EEXIST":17,"EFAULT":14,"EFBIG":27,"EHOSTUNREACH":65,"EIDRM":90,"EILSEQ":92,"EINPROGRESS":36,"EINTR":4,"EINVAL":22,"EIO":5,"EISCONN":56,"EISDIR":21,"ELOOP":62,"EMFILE":24,"EMLINK":31,"EMSGSIZE":40,"EMULTIHOP":95,"ENAMETOOLONG":63,"ENETDOWN":50,"ENETRESET":52,"ENETUNREACH":51,"ENFILE":23,"ENOBUFS":55,"ENODATA":96,"ENODEV":19,"ENOENT":2,"ENOEXEC":8,"ENOLCK":77,"ENOLINK":97,"ENOMEM":12,"ENOMSG":91,"ENOPROTOOPT":42,"ENOSPC":28,"ENOSR":98,"ENOSTR":99,"ENOSYS":78,"ENOTCONN":57,"ENOTDIR":20,"ENOTEMPTY":66,"ENOTSOCK":38,"ENOTSUP":45,"ENOTTY":25,"ENXIO":6,"EOPNOTSUPP":102,"EOVERFLOW":84,"EPERM":1,"EPIPE":32,"EPROTO":100,"EPROTONOSUPPORT":43,"EPROTOTYPE":41,"ERANGE":34,"EROFS":30,"ESPIPE":29,"ESRCH":3,"ESTALE":70,"ETIME":101,"ETIMEDOUT":60,"ETXTBSY":26,"EWOULDBLOCK":35,"EXDEV":18,"SIGHUP":1,"SIGINT":2,"SIGQUIT":3,"SIGILL":4,"SIGTRAP":5,"SIGABRT":6,"SIGIOT":6,"SIGBUS":10,"SIGFPE":8,"SIGKILL":9,"SIGUSR1":30,"SIGSEGV":11,"SIGUSR2":31,"SIGPIPE":13,"SIGALRM":14,"SIGTERM":15,"SIGCHLD":20,"SIGCONT":19,"SIGSTOP":17,"SIGTSTP":18,"SIGTTIN":21,"SIGTTOU":22,"SIGURG":16,"SIGXCPU":24,"SIGXFSZ":25,"SIGVTALRM":26,"SIGPROF":27,"SIGWINCH":28,"SIGIO":23,"SIGSYS":12,"SSL_OP_ALL":2147486719,"SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION":262144,"SSL_OP_CIPHER_SERVER_PREFERENCE":4194304,"SSL_OP_CISCO_ANYCONNECT":32768,"SSL_OP_COOKIE_EXCHANGE":8192,"SSL_OP_CRYPTOPRO_TLSEXT_BUG":2147483648,"SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS":2048,"SSL_OP_EPHEMERAL_RSA":0,"SSL_OP_LEGACY_SERVER_CONNECT":4,"SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER":32,"SSL_OP_MICROSOFT_SESS_ID_BUG":1,"SSL_OP_MSIE_SSLV2_RSA_PADDING":0,"SSL_OP_NETSCAPE_CA_DN_BUG":536870912,"SSL_OP_NETSCAPE_CHALLENGE_BUG":2,"SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG":1073741824,"SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG":8,"SSL_OP_NO_COMPRESSION":131072,"SSL_OP_NO_QUERY_MTU":4096,"SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION":65536,"SSL_OP_NO_SSLv2":16777216,"SSL_OP_NO_SSLv3":33554432,"SSL_OP_NO_TICKET":16384,"SSL_OP_NO_TLSv1":67108864,"SSL_OP_NO_TLSv1_1":268435456,"SSL_OP_NO_TLSv1_2":134217728,"SSL_OP_PKCS1_CHECK_1":0,"SSL_OP_PKCS1_CHECK_2":0,"SSL_OP_SINGLE_DH_USE":1048576,"SSL_OP_SINGLE_ECDH_USE":524288,"SSL_OP_SSLEAY_080_CLIENT_DH_BUG":128,"SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG":0,"SSL_OP_TLS_BLOCK_PADDING_BUG":512,"SSL_OP_TLS_D5_BUG":256,"SSL_OP_TLS_ROLLBACK_BUG":8388608,"ENGINE_METHOD_DSA":2,"ENGINE_METHOD_DH":4,"ENGINE_METHOD_RAND":8,"ENGINE_METHOD_ECDH":16,"ENGINE_METHOD_ECDSA":32,"ENGINE_METHOD_CIPHERS":64,"ENGINE_METHOD_DIGESTS":128,"ENGINE_METHOD_STORE":256,"ENGINE_METHOD_PKEY_METHS":512,"ENGINE_METHOD_PKEY_ASN1_METHS":1024,"ENGINE_METHOD_ALL":65535,"ENGINE_METHOD_NONE":0,"DH_CHECK_P_NOT_SAFE_PRIME":2,"DH_CHECK_P_NOT_PRIME":1,"DH_UNABLE_TO_CHECK_GENERATOR":4,"DH_NOT_SUITABLE_GENERATOR":8,"NPN_ENABLED":1,"RSA_PKCS1_PADDING":1,"RSA_SSLV23_PADDING":2,"RSA_NO_PADDING":3,"RSA_PKCS1_OAEP_PADDING":4,"RSA_X931_PADDING":5,"RSA_PKCS1_PSS_PADDING":6,"POINT_CONVERSION_COMPRESSED":2,"POINT_CONVERSION_UNCOMPRESSED":4,"POINT_CONVERSION_HYBRID":6,"F_OK":0,"R_OK":4,"W_OK":2,"X_OK":1,"UV_UDP_REUSEADDR":4}')}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(7033)})())); \ No newline at end of file diff --git a/lib/ok资源[资].js b/lib/ok资源[资].js new file mode 100644 index 0000000..f12e712 --- /dev/null +++ b/lib/ok资源[资].js @@ -0,0 +1 @@ +Q/+JQu002MIhInksxbFmwokFjoYvzvVaQsBImydLtO4H/iQpus3s+LSklI/qQQpsO3iedPGNtLeiHK45byE00INIa05ZOt3WvTkPm0YAXU5vgFb9F4LJCKBBwg9DeBJqIbWaUX2800DpCDO7OyTMT+v+4ORkkYRWLLkVmYLvurC0cABU0hDSTcBrvqgS6fCk261z63BCJDEkzp6DLD8+16EKkE6rXv4im4CVOvIFtkCUbvrvh9PCfzomJqJjzGYrpCeGnt8z9eKhczA8dTPHuU+EtTmAJ6+thpuCMn0AFXIe722L6ieScVEBis3w2gtMEgn1SpCvofEB/DJQeN6jn8if6LwSjF4Dbf1f9L8/s0WKmqNmhDiDMk4X1XThaasWoQMTy3GRpOIoFWHl3ZRoBkpqO7EDdAg94RiqK2Tr3OrwJYD1yF2wSOaNQolFOCYiut+Wge8hwb+/6yRM32M7lQ== \ No newline at end of file diff --git a/lib/pako.min.js b/lib/pako.min.js new file mode 100644 index 0000000..eb91b50 --- /dev/null +++ b/lib/pako.min.js @@ -0,0 +1,2 @@ +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=Le;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg="invalid literal/length code",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:"pako inflate (from Nodeca project)"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,"[object ArrayBuffer]"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if("string"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,"__esModule",{value:!0})})); \ No newline at end of file diff --git a/lib/qinian.json b/lib/qinian.json new file mode 100644 index 0000000..ce2b90a --- /dev/null +++ b/lib/qinian.json @@ -0,0 +1,225 @@ + { + + "作者":"cc", + + "站名":"七年影视", + + "主页url":"https://tv.ygmgo.cn/", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗。+stui-pannel_bd\">&&

    ", + + "影片状态":"状态:&&

    ", + + "影片类型":"类型:&&", + + "线路数组":"[替换:云播四>>🚛七年影视在线🚛①#云播五>>🚛七年影视在线🚛②]", + + "线路标题":"&&<", + + "分类url":"https://tv.ygmgo.cn/vodshow/{cateId}-{area}-{by}-{class}-----{catePg}---{year}.html;;ak", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4", + + "筛选":{ + "1":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"科幻片","v":"8"}, + {"n":"动作片","v":"5"}, + {"n":"喜剧片","v":"6"}, + {"n":"爱情片","v":"7"}, + {"n":"恐怖片","v":"9"}, + {"n":"剧情片","v":"10"}, + {"n":"网络电影","v":"16"}, + {"n":"动画电影","v":"19"}, + {"n":"战争片","v":"11"} + ] + }, + {"key":"area","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":"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","v":"2016"}, + {"n":"2015","v":"2015"}, + {"n":"2014","v":"2014"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"国产剧","v":"12"}, + {"n":"网剧","v":"20"}, + {"n":"欧美剧","v":"15"}, + {"n":"日韩剧","v":"14"}, + {"n":"港台剧","v":"13"}, + {"n":"海外剧","v":"18"} + ] + }, + {"key":"area","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":"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","v":"2016"}, + {"n":"2015","v":"2015"}, + {"n":"2014","v":"2014"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "3":[ + {"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":"访谈"} + ] + }, + {"key":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"大陆","v":"大陆"}, + {"n":"香港","v":"香港"}, + {"n":"台湾","v":"台湾"}, + {"n":"美国","v":"美国"}, + {"n":"韩国","v":"韩国"}, + {"n":"日本","v":"日本"}, + {"n":"其它","v":"其它"} + ] + }, + {"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","v":"2016"}, + {"n":"2015","v":"2015"}, + {"n":"2014","v":"2014"} + ] + } + ], + "4":[ + {"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":"武侠"} + ] + }, + {"key":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"大陆","v":"大陆"}, + {"n":"台湾","v":"台湾"}, + {"n":"美国","v":"美国"}, + {"n":"韩国","v":"韩国"}, + {"n":"日本","v":"日本"}, + {"n":"其它","v":"其它"} + ] + }, + {"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","v":"2016"}, + {"n":"2015","v":"2015"}, + {"n":"2014","v":"2014"} + ] + } + ] + } + } + diff --git a/lib/rarbt(全)[优].js b/lib/rarbt(全)[优].js new file mode 100644 index 0000000..3528368 --- /dev/null +++ b/lib/rarbt(全)[优].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICJteHBybyIsCiAgICB0aXRsZTogInJhcmJ0W10iLAogICAgaG9zdDogImh0dHBzOi8vd3d3LnJhcmJ0LmZ1biIsCiAgICB1cmw6ICIvdm9kL3Nob3cvaWQvZnljbGFzc2Z5ZmlsdGVyL3BhZ2UvZnlwYWdlLmh0bWwiLAogICAgc2VhcmNoVXJsOiAiL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCIsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyOiAiSDRzSUFBQUFBQUFBQU8xYlcyOWJOeEwrTDNwTzEwZk96ZTVqa1FVSzlLWFlYYlFQaXp5NGlkQzRtOXE3anBNZ1d3U0lMNUlseTVhbCtLcFlzaHc3OHQyNldJNGx5N29BK1MwaXo5Ry9XRXFraHVSUVRsMmcyTVVXUkkwaTU1dlB3K0Z3T0NTSDlDKytuOGRmakFaOFgvNzlGOTgvQXE5OFgvcElaSi9PQkgyM2ZHTWpQd2ZVN3hjalQ1OXo0bGdIRGg2MFp3NDZNUHZ3dmI0bDBMVVU0d3YwMGRPUlo4OEdCTlJqdU9HaVVBY01BWUdPK1lOV1BhWHI0QkRvMkUrUXl5dGRCNGRBQnhndGRYQ294L0NhY2FaVll3aW94NkRUSis1YVFtTUlDT3lZejd2MUk5ME9Eb0dPbVhrNi9VN1h3U0d3TlBTMm5UelVMZVZRajlIT2xGcVhjWTBoSU5BUkM1R2xNMTBIaDRDUm5jTWVFeEJZT2hXbmI5WjBTemtFalBCR3F4clJHUnpxTVZxMWJTOVgwQmdDQWgybkMxNTRTOWZCSWNuWWF6VzJFYU1MU1o4R3ZjZ1o4bWtYZ25HWmFyVGZOZlJ4NFJDTWZyWXBvMWVNUG9mQVkwc2Z2RjBVUVJ3Q1JueUJ2a0d4emlGZzVDNUk5VlJuY0Fnc3JSNlIrcXB1S1llQWtUbDFJM002ZzBQUXltelRQYzdxclhBSXhxV3lUd29WZlZ3NEpQc1NibStHVUYrNjBPdUhIWTVJRGFrQ1dhZ3FxYUgzZmFQVThHRy9uZXcxTVRBeUVSZ1pFQkIwdFJFam0zV05JU0NZQ250SldzbHJEQUhKWVN2UXk0YmVDb2NnZk5hek5IV2lNUVFrSjl3aHRrTkFFRDdSSW1ZSUNGb3ByV0tHZ01EU1Joa3pCQVE2WnBlWWgwajRVRmNEcUJMTTdoSUxpYVJ1RUtEUTRtS0JWUGYwRmpra3JTNllWaGRVbTFyTldiZStUdGYwUVpDb1RBWHpOTFd1a3pnazAvdzJqVFpaVjNTREFBV2JHaVhlMzFiMW5XNlpLZ0QyWXBrRW96cVBROG9DUkFvckpGalFBdzFRNENXMlNMQ2lremdFUFNpZk15ZnI1bk1JR0RzSDdKTXNaM1VTb0hLQ1hyYlJ5QWdJTkMyRTJWRGlXSkFvOEZJWjcwMkpCQzkwSHFCNkxKQkNqVm1DSFl0bDhEdmhRNXBmTWRpQUFtODUyNnJ0OWFPcUFoaXgvRXBIeGJwdXNVUWh5anZEcUErYWdJQXhmMkl3T0FSakdydGlXdDJyYzJ5WkpwQ0xacmFUNGJEUEFZVjhjUlZqNDA2T2RaNUV3YjZsTTlLSWtweWVuaVFLMFhDVlphc1pDYVBwQXlpMGUzaEMwOWsrQTZnSnRBUitlZDY2cWlzSnZQZDlrd1ErNkF6ZTZUWHpLakF5TWRBRkZPbHRMTDJ0U2dleGRGQ1YrckhVcjBvZExIVVVxWDhZU1JtZ1NJZXdkRWlWM3NmUys2cjBIcGJlVTZWM3NmU3VLc1crOHF1KzhtTmYrVlZmK2JHdi9LcXYvTmhYZnRWWGZ1d3J2K29yQi92S1VYM2xZRjg1cXE4YzdDdEg5WldEZmVXb3ZuS3dyeHpWVnc3MmxhUDZ5c0crY2xSZk9kaFhqdW9yQi92S1VYM2xZRjg1MGxmRFRuZHk3R29NLy9Ddzh3WDduM1RhVUgvYVVJYzJKR2wwODV5dUgrcWtJYWREdWorc3pWQzZFYU1iR1RsRDRmdEdXNno0ZVh0MWp1UjYyOFdCa1VlVDR4TURFcFlaYTlaTk50cVZYWjBvWVptS3JyeEdneXpHZEtLRWxhYTlOMjlvTVdJMExXQm9lbnJadXdpaWRqa21EeHJ4ZGlPcFV3UUdsSzExZXJyTDlseUlCVERZVmR0bVcyNnZnZTBDR0RUdVRORlV1bFhMSUkwQXkzMWJuSlN5U0IzSFpCOHZTVEJrOUVIQ2NrWGQ2T3o1c0hzbERNVEVBUXVEOW1FQkVRRldITk5PdjIybnRnekhDRmpWZUxGSGxoS21SZzZEeG5UTWEyN1JOR3Bhd3JDNHJzeVMwempidCtoRUNTdEhLL0xoVUo1cGUwMERERTJmSDdYbkVpU1hSazBEck1RelRTNnp1V0xFczRDQk9KTmcyMUF5aGNaUHdtcmNiTmE5eFYwemJqZ01pM3F1UWtMYmhuc2tyQk9Oa0pVdzByZzIxMWZqMnB3NjU4aHBoazFFWTg0SldHNzJ3bXhMZ0ZnY1UvdDd5c1k5YXZhWHczTFRlOWhxNHBIam1EcERDZ2xTcTVxVGhNTkthSkdOQ0QzWk5VSkx3SXAxZEhYSk1LMkR5ZmtiOUNJbGI3NkU1MjhQQmwzQlV1c3k2c1lSVWNMcXRtNi9pU09xaThtSlhxVGxoSGUraFNkNkQ1WWJ6NmliWGZQT1A2QzVBYkRpa2xhbDdpNHRHaTRSTURTZERMTVo0TVhPVU5NQVF6akZpblJqMnEyeXc5SzdUMld2ZVVRVzM5TmtyajIzd0hheUtNUStTd1VISGt5eG85S25NbUViMTN4SVBRcHlSeHBpMmJjQzNjMTlLak9NcFBmWVAzRWZzUmgrc2ZpQjdJYytkWTV4N2JNcG8wVlRES1pXWm1nMHduTHBwN0w3THVkR1VHb3l4ZUMwaFJudWdQZGJyRFBJUzdvTUJtU2p5VFIxZkpXTE1Gc3FNK3hFekZob2VLNGhnY0dGR2t1RHpDaldDeWFmeTVNc1hzejdNWlJLQURPSkhXT1lrSFduT3dqc0FHK3NSSi9oeVdrU1pXYnlSakl6TE8yWUE5MlBBZDZZUzNTdFkwZG01QUZGb0xqT0xaYTZVVU9MNjRiSFZKa3lUOXB2TSs3N1ZXT2VDRmpXNEtJMHVOKzZSSU1vWVRsRlowbjlCTS9QTGlaMVJVaHFsMlJ3WWdOWWFaUlV5M1JqM21oVXdFQThYeUZuWmZvQlRYY0pRMy9QU214blkyenRKQXdoc0xaSmszbGFuRVlqRHJEaVFYYy9RbkpIaGdjRnJDNnVLMDFhU09CVTJJTVZqUXdoT1hPbklHQmwyOE5PcHEycktXUGJJMkFnbnE0d0VMRTRwZ1FhQ1U2NW1aSVJaZ0xXenIvNUdxMnRLT2ZmM3ZlTmR0ZWhQQ2tza1RDY3RSK1BUZ1M0U1NCUkZpd3ZVdlVLVVpNTEVuVVp6ODBwNlZCeVFhSm0vYms4UFYwd3VGS2lMc1BCUGdad1dGbVpPalhweFdPREtDV2djVCtsYkV1a1JnNWZ1MWVWUkhPN3lwYjZYTVFnQ2hoWWxjUE9GbExHaXlTQ1JJa3RkdGhSOXZHeWRaQW9mYWZKaTM0ZDc4Qnl1M3JtdloxbVBld3VUV3loWU1tb1ZjdlQ3WnJaeFBWVW1KK0hsMnl4NGxtVHJhNDd3ZmE3a0tHbkx3bGlZTFBjT1IyRUQza2ord2xsWFpQaDBJOWs1SFlhMlNDMWRiYWE1YXRLNVV4MjV4b2U5S1VaWnBSdWJ2Yk8wMll2ZERHTVppVEc0STVkZFpJTk15dk5VVFVZY3E2c2RpVk1IMDAzK2t3WVRheE8vVllsNnRXVjBoZDgzMlRxMDNTSzVsZTgvWkM3S21mZStNdXh3TVRBNCtjL2pBTHZ6amZlY3BvRUl5U1djVGMzRVBQUjZGUDIzOGpZb0VHL2hpakxIRGZRS2lzbXR4OGdDZ042TXI4ejVIejcyVWFCK3YyZnYvcml6amZYc081cHRLN1dhNWl5M3ZMMWc3OTlkdzFKRm9PK2V0QlgyMWNQRkRWOUdWOUx4djFCUS9xdjBja1JKWWlVeTY0ZTQwbmdKem1PZE92SWpZUU5IU05qUC82Z2VPakJkdy8rTXZwUEhBOHZIazh3VU9FZ1FnZUJkbEpIYmlhTENDOERvLzkrSW0xeDZ3azI2dDdIV1ZxTkkrYjMzMm9oN2hWRDd2S3VESEg0dmttSWUvbFpFZzROa3pJNzdaVmtPODlaaHdlR0VXdW9MMnNJc2U3M1pkMUhySHQ5V2ZjUTYyNWYxbDNFdXRPWGRRZXhidmRsM1Vhc3diNnNRY1R5OTJYNTlaSmU3QzJwTGlrbHZkNjNQaXgwL2FLOWZpNkZIWDAvdkJxWUhHVy9CT1c0YXBVV1Znek9rOUhKWjlLdzdxaHo4d3ptczBmakU0R09kUTl2K2Y0YW1CZ05QTE12UCt6TEQvdnl3Nzc4MFBwaVgzN0lWdXpMRHhGSzl1V0g3SUY5K1dGZmZ2aitCeTgvN0ZzT1hXcmZjaWhTKzVaRGsvNS92K1hvVmwvVHhpV3FoQ0czekx4WDZzR2kyczh4U0ZPcFJYSlZOWjRaU0JoMGZmellxdFRiTzJ0SUhjQnlRZGlnRjVzNlMyQUt4Y3V2c3grREpXQ3dMaGx1MVRMdFZBaFpCN0RjcXA2em80dFNMNVgzM1J5V0drTTBqOStZY0F4MHJjVEpNYjdjNXhoUWdpV2FYQ1oxZEdjcllTQ2VKbHY0b2s5Z0VETnBOdlRMcE5UbmFvVERvS3UyN1RieEt3K09xYnFTQjZhaXBEekNlQXN6SkZSZ1AyZ2NBUVpkVyt1a09VUDIwRzJSaElHNE51Y2VieU1XeDhEcmh5ZHNvK2ZHMFYyV2hHR1ZxMmZZOXExVlFhRXRZY1d4Ym5XbnZWazJmQ3RnSllSWUpOTzFCU09FQkt6NGpoU1czTGR4dzMwQy92MXVpOWlnVlk5YWxkNGhVTHNCRWhMTnFnVHJrOEdWRW5YbUZmdGViblJnNmJrVjl5UnBzamlzMk1qMkt2ME03TURBcXBZN0wyNDJ6VHE5bE1CQUhHK1F5Z0w3TWJoU29pUXVOMlplT3dsWVNVbWRoTmZuMWsxS29QV1pCSnVheW0yM2JCMGs5azdBM2duWU80R2JoYmk5RTlCWmYvdzdnUmNqRTZPQnlWZjJVc0JlQ3RoTGdkOTRLZkNySmY5ZnZ6YjQ3MXdLdUtrTVN4cnUvaHRkRGFEZ2xka2lXZHJGUEluYUN3SjdRV0F2Q093RmdjOWVFTmdMQW50Qm9FbnRCWUVxdFJjRXYvOEZRYXUrNms2aklyZkF3SkRpRWIzNHFGTUVCb21uc0VNT1VqcEZZSkRyRWdmdWNaU1dkblNXaENIWkpjUHRzeW12ZUt3VEpRd2FUelB0TlBxN0VJR0I2ZWxZTzQzL0JwUmpzbEJTSkNGMEJ5RXdoV0w4UGFMQTVHclhxYkFpV3pnRy9abzVaZHN2dDRyLzFBcGdhZlFCYmFTdzBWM01saDF0MmRHV0hXOFc0cmJzcUxQKytHWEhSeU1UaytQalkwclowUzFla2Eyb3RCUytQeE5BQXkvR0h3ODhlekwrY21EMDhjQ2RQejJaL1BtcGt1WlgyVVFqOHdlMGR0eVBQajRXZURTT2ZpV3kvOWxmbVh3NURyK2licnR0d1ZSRWtTMlkyb0twNXJIZitvcjYxOHVocERiZHFxekpyWkJRQXlobytoM0twdmFsdEMyRSttd2gxQlpDYlNIVUZrS2wxQlpDVmFrdGhLcFNXd2k5V1NIVVZzUTZNbHNSODltS21LMkkyWXJZdzF1K3g4OUh4bjU2cmhURWJJcTBLZEttU0pzaWJZcmtLZkwxZndDZW5aQVF1bVlBQUE9PSIsCiAgICBmaWx0ZXJfdXJsOiAie3tmbC7liafmg4V9fXt7Zmwu5Zyw5Yy6fX17e2ZsLuW5tOS7vX19e3tmbC7mmI7mmJ99fXt7Zmwu5a+85ryUfX17e2ZsLuS4i+i9vX19e3tmbC7osYbnk6N9fXt7Zmwu5o6S5bqPfX0vaWQvZnljbGFzcyIsCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICIubmF2YmFyLWl0ZW1zIGxpOmd0KDApOmx0KDEwKTthJiZUZXh0O2EmJmhyZWY7dHlwZS8oLio/KVxcLmh0bWwiLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDEsCiAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgIGpzOiAnJwogICAgICAgIH07CiAgICB9KSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICDmjqjojZA6ICIqIiwKICAgIOS4gOe6pzogImJvZHkmJmEubW9kdWxlLXBvc3Rlci1pdGVtLm1vZHVsZS1pdGVtO2EmJnRpdGxlOy5sYXp5bG9hZGVkJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0O2EmJmhyZWYiLAogICAg5LqM57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBraHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIFZPRCA9IHt9OwogICAgICAgIFZPRC52b2RfaWQgPSBpbnB1dDsKICAgICAgICBWT0Qudm9kX25hbWUgPSBwZGZoKGtodG1sLCAnaDEmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX3BpYyA9IHBkZmgoa2h0bWwsICdpbWcubHMtaXMtY2FjaGVkJiZkYXRhLW9yaWdpbmFsJyk7CiAgICAgICAgVk9ELnR5cGVfbmFtZSA9IHBkZmgoa2h0bWwsICcubW9kdWxlLWluZm8tdGFnLWxpbms6ZXEoMikmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSBwZGZoKGtodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW06ZXEoLTEpJiZUZXh0Jyk7CiAgICAgICAgVk9ELnZvZF95ZWFyID0gcGRmaChraHRtbCwgJy5tb2R1bGUtaW5mby10YWctbGluazplcSgwKSYmVGV4dCcpOwogICAgICAgIFZPRC52b2RfYXJlYSA9IHBkZmgoa2h0bWwsICcubW9kdWxlLWluZm8tdGFnLWxpbms6ZXEoMSkmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX2RpcmVjdG9yID0gcGRmaChraHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQ6ZXEoMCkmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX2FjdG9yID0gcGRmaChraHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQ6ZXEoMikmJlRleHQnKTsKICAgICAgICBWT0Qudm9kX2NvbnRlbnQgPSBwZGZoKGtodG1sLCAnLnNob3ctZGVzYyYmVGV4dCcpOwoKICAgICAgICBsZXQga3RhYnMgPSBbXTsKICAgICAgICBsZXQgenhfdGFicyA9IHBkZmEoa2h0bWwsICcudGFiLWl0ZW0gc3BhbicpOwogICAgICAgIGlmICh6eF90YWJzLmxlbmd0aCAhPT0gMCkgewogICAgICAgICAgICB6eF90YWJzLm1hcCgoaXQpID0+IHsKICAgICAgICAgICAgICAgIHJldHVybiBrdGFicy5wdXNoKCflnKjnur8tJyArIHBkZmgoaXQsICdib2R5JiZUZXh0JykpCiAgICAgICAgICAgIH0pCiAgICAgICAgfTsKICAgICAgICBsZXQgeHpfdGFicyA9IHBkZmEoa2h0bWwsICcjcGxheVN3aXBlciYmLmRvd250YWItaXRlbScpOwogICAgICAgIGlmICh4el90YWJzLmxlbmd0aCAhPT0gMCkgewogICAgICAgICAgICB4el90YWJzLm1hcCgoaXQpID0+IHsKICAgICAgICAgICAgICAgIHJldHVybiBrdGFicy5wdXNoKCfno4HlipstJyArIHBkZmgoaXQsICdib2R5LS1zbWFsbCYmVGV4dCcpKQogICAgICAgICAgICB9KQogICAgICAgIH07CiAgICAgICAgVk9ELnZvZF9wbGF5X2Zyb20gPSBrdGFicy5qb2luKCckJCQnKTsKCiAgICAgICAgbGV0IGtsaXN0cyA9IFtdOwogICAgICAgIGxldCB6eF9wbGlzdHMgPSBwZGZhKGtodG1sLCAnLm1vZHVsZS1wbGF5LWxpc3QnKTsKICAgICAgICBsZXQgeHpfcGxpc3RzID0gcGRmYShraHRtbCwgJy5tb2R1bGUtcm93LW9uZScpOwogICAgICAgIGxldCBpID0gMDsKICAgICAgICBsZXQgaiA9IDA7CiAgICAgICAga3RhYnMuZm9yRWFjaCgodGFiKSA9PiB7CiAgICAgICAgICAgIGlmICgv5Zyo57q/Ly50ZXN0KHRhYikpIHsKICAgICAgICAgICAgICAgIGxldCB6eF9wbGlzdCA9IHBkZmEoenhfcGxpc3RzW2ldLCAnYScpLm1hcCgoaXQpID0+IHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGRmaChpdCwgJ2EmJlRleHQnKSArICckJyArIHBkKGl0LCAnYSYmaHJlZicsIGlucHV0KQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICB6eF9wbGlzdCA9IHp4X3BsaXN0LmpvaW4oJyMnKTsKICAgICAgICAgICAgICAgIGtsaXN0cy5wdXNoKHp4X3BsaXN0KQogICAgICAgICAgICB9IGVsc2UgaWYgKC/no4HlipsvLnRlc3QodGFiKSkgewogICAgICAgICAgICAgICAgbGV0IHh6X3BsaXN0ID0gcGRmYSh4el9wbGlzdHNbal0sICdhLmJ0bi1kb3duJykubWFwKChpdCkgPT4gewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwZGZoKGl0LCAnYSYmdGl0bGUnKSArICckJyArIHBkZmgoaXQsICdhJiZocmVmJykKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaisrOwogICAgICAgICAgICAgICAgeHpfcGxpc3QgPSB4el9wbGlzdC5qb2luKCcjJyk7CiAgICAgICAgICAgICAgICBrbGlzdHMucHVzaCh4el9wbGlzdCkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIFZPRC52b2RfcGxheV91cmwgPSBrbGlzdHMuam9pbignJCQkJykKICAgIH0pLAogICAg5pCc57SiOiAiYm9keSYmLm1vZHVsZS1pdGVtOy5tb2R1bGUtY2FyZC1pdGVtLXRpdGxlJiZUZXh0Oy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmOy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQmJlRleHQiCn0= \ No newline at end of file diff --git a/lib/rarbt[优].js b/lib/rarbt[优].js new file mode 100644 index 0000000..d03d460 --- /dev/null +++ b/lib/rarbt[优].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/51YW6/jyHF+9684sRdzWfocUhRFijPYBLyJpEiKFCmKItfGgvf7/SbKGCBBkABJHMdI8mAgDoLED/ZbEsAPzsaG/8zurH9GdG7jc2bG4930g9RdXV1d9VV1d7EGu7lo+sy/+OTiB9+6OLfXv/j31//62xcX386PVVN++7s3xC7uMv9Ma+zG6T794tc/+f7dRFS23ZkedV3VvgDBcRyvbniugr64Y+mb7MwBDqUHtlE5grEHBpOb2W0bTEGcdX4DVnbon4nXf1dRl2d3K1vfbtxIf7D+hvCQHRw98OOPHy66FWk71/rOHpLOQjik5Yn7Js8cA8adzVEExHklz6BAPvmLJN3qAi4czIOzVeLThMQeheR4jSWVFBqjxosLPpsWdgYIldlGI7bsYNTgkWzCSgLQoPiEs6DB1GnUq9tdBoewpBsqD8WLxaCMwGqUKY3DKQAoll6QENbyAGL4Cl+CRI2f+xVvrUGZ5OB5wEqJMgY6dnST3QI/IVnI0REKWSOCSsowDg6SQaKuI+MAQZ6sWsslS27UpJfZWCdciTBZGTA3hmIfGoSkS5gBttPUeSTiEeQx7LwDVR5BynZta2+OcXlE6d0aWNjbXOIpeTJP2DDjcUimS1bODykK6thh1Nhxo2hwsTvpor/fJjgnZ6v64JpQxG8IlVqwmTSDuAih1MKVfOZImnJkFA5uQdopZRKFZOtjo7LqqZb29czR8ANEhhQRwQU1WyAaHpC8W5j2yYAZWxI1a8kObmgt8/QQFqxlN7tgE6hHRKWkoDGrcuZLShkQJtQGwwrSt+p43ngih5Q9nuJVuKAWPL4/q0KEbaOiKlBXvWD6RLrLZvxcQkNI2U75aae4WN0cCP5YG9NuLPfBfkTWSqs5OcDqKwCF5J7jzAVP2yll2GFd29w8sBV9ybJg4Y8zaUdMjBpaDElCncok+dzY8BplUkW3NtqsoQlubWrDdkIcnyrdMNjYpw1nxNJ2m67xMerSDcHQmMrnJk+tyqoxBDaUaE2N0hNJbFGr8s0IShB95dI1KUpYxIuxrfaMQG+RXCD3SgCtkjRtNNTcR56ez5qN4fjArgugrUWVO+Jw2ohGn57CFAJHONlZ1n6u0QRhOGx88OczZ1YYqCWENGxWKVOeamW7LCmVKJv1KtkS42yLUAasiVR8lsEoWhxIU9AsColn6ZbD1lJrzXWt5ATq0DjqRIT8hoIZeE/HxpoolyvewiB4TVI4xNUkKp57yT6nOLPLlvQQbRdVIHkxQeTLBYw2HW7LNRHFR5CpuKNT9a2+jaZkoGsCsEOeOAYwP8qEmrBNFxsd3LjwZK0rSrQae4c4tEKY+6Wr7hMEQmXPWjCjg2YSLvBpNflFvBWgA7W37NaibKUiphjy5xEF4SlAoOG6I1TA91C0jtv1oHh4Om4BlDj56O5wEhJikjxitZKzThThTgv9o7ei9kDD6Q1UeiKn6/VhaWpqHmq8P3pMvJ+3gQagDcRVjq+jN8NeaA1gWffAMt8EwH4fAA47gEI9gJvoEHT7Q9CPzQCUDQkOgn6YZ+ZquajrpYtRHYdbBh34RjkUwtgcT/v9iMGZraBTywJupgayFx2S/vFaKAvoXeFNGFtKIEiNy/GAFfOdrXOgrfMuvGYzaLmYeg6oU9726D4B2tOeQs9n0GF3GY0EHWugJ8Q/dLOkV1F4aZCp7u+Qo0QzlWnZuLXZdPX+YEGlaeVC0xzZcDqxniAwmW3jGxgvJYOHRIMs/aKx+jGOvSTN6WNz9GK50sctmwmzmd80Ip5NPLmjzb3X5QaMDqEPUSy963ebld5nB5HnIWI6B2yx1iaNnHMWuRy0HZniDEe56cFD5dOi5dqMlnYMse1pPGdIZrsyuM1GHmC46MITR62SvS+uuCwScjVE6WOxk2wYUzdsZY8NhTTtpEGnxOmAiKG0jhNAMdLXi8qHIJpm4IDDDgUTawc1hehG2p52GnrqDZFpEYqU15sQnhFT5FrKmDeus7Hx4x46OUkoxfO636aiExVt2pDyJl3rI9Sc2WdBAlcjulhGVZTOGHOJrA0Wg8f8KIar0NXBDptaE7cH+zDOxZ2PRzVScUlOVzQVZlq9qHeRtBHsNbuh6Lm10dfiyFczjzusJQGmpyB1cIrPHAxlFvBSIbM5qffthLamqrti3eUoGGtyHS/z9aHeZRHnA5HmofTCdE5o7BwCRVZQakE4dJxmdobFSMfGiHq+ojxalCxEOsj6RiK2p2QVF2oC1/A04gK2g43B17fGHN+kTQLPR86eBGkLaKPOcel0LHGhkHLGmc2PvLKtJvVYxbDjUnN3hguJLFVKYCpzJmjVCGiDmMR4F/DMxRFzpKqE9jtasAwrD6GxEKsKEzGx91idLaejT0GRWvSh4jkNrfAaVkpkriXTTp0Fa0OUVm0tAUfmtIpKX0Ci0GVXbNrTJyoxqMkOpoXUHtoTJlmqQNDymjNkM+WMQh6TlmCBVl2D0WSkmmU4k5rwJ1GGTQKHFcJDTW2udSbk5YvzNVGKiSxaNqrrsogiDrdfp9MOrwYJwLC9IfvnODQQgYf6DYCqvFSau2xlQQVOSqAixtZM1aM6g9XRDDemban6NFeTeR7pI0MsD9OqsIKS3B3c9XYOKlp+LEz41K2JMWpFa53OM7tgzIRu6Hh7cMFtsebOhq4aCu0FaGZrMqnDvLRPtmMkH+SCZ8kMXm7kqoYbwVAcHibCokZGRmSQKtzalI4ucotXrVA0Tg24YGu4E+QgmA/+xuv8SKHSNt1RbqcCyi7UEE0j1VU8DvqgC7oliUyhW6clVKF7ctra6xx00qWyh8Z+JcRiq5BKaI3GKrfk5FAdDZkWKCN0d0DmMH2qhougn/l7lZOxqXLQg7QNqSgyM1eRV5nIxpNGqXzaeV2k4gM7eRZRBnawjueIhy3JqZ83+WDNcsUf+50xRaaUl3t32GFWYx2VvZ6vAS6DpyOS5bvGRrAxsLFUYAtxzGJTVFxZhRl6nibAmGUHS4kgHk8XnGnDGjXzHNte2J2w0I/w4lj6+Nlaq1J7Z3BkCDYHj2YlK96xCL/wPIvfSNOw0Xe66dZo68V7iYOgOZCO5s4+yuDezNDO2EORt5zDuxqaa8Ii85egRWFCHviA1B/Hc7KBAC6YEOJwSgLfrUqGnzTD3blzRlFUdKXA82VilgwLRnEicnSwFeI2747LkAo3qNQsTwvuhMG6TQIDHAxgE5/lHFp5UXUCZtiLeJoP4izEcNwbZ+tVKQN+Rx7gmaus6D3O7nHxOMzILVgPkJuqazPWJxTxEagI16dc9uSBT8zthtM2iQKioS8npDeCgDRUCkcsBy5djrrMhNvQJ71szTmxLVLUki5BHODz2REdUxjtMM7Y1xsecOZzuIywaE9jg9DTHIcMac77YGYxIbJJTzyGWftUXuJWNPosY/SlCLd862Nzy5txDdfhRuBuUXgRzLI503fywdv6R2fwsrlut+e8oN26uwmHDwvcWvsYBVfi+YYbPHSuxEcItAU8iNEVd4DAgaxNjjVAUjYQu9KNfXiSU5xbW7gwYnV0Wo6nvIWChEFY2dviAxAgdk6GG0WUBgU4iTQ4TCOGLSGlig9zjN/3Z9pxJeC9wWH8CgeMVRAMCUBOSxBbtfLBaAI3jjRgYdEpuAAH4FDuM3B3jI06otj5STwe0JaN4XZ51FZypR7W+42FWBoZQUFwMutu58hwx3Pu+bx5cbhatKgGE8LR7Yf2CNBrgxrFKOtnO7HbE5FFYrRbV+ipRDpNXBzmc3Uy2FSCEhwwXeIINe5uLTmYuzhG2zA27ANlzTzWbUyN8tfZgJQpHjL0ptoMO7Ha7Aq73NGl0MPYzjkKIyDXTq2RqB1X51vWJ9rTeqWGChy6xNbyDKBPZV2BIRZWI55FNr3rO5NkHJd0E01eWwIBC+1hI2LZfQ0HJl7P9lub6UzXODqFUQz7FA6oLlybqrneyDNSkxlSOCFJpBlz0TuOc4gCh1kf43G4Pz+jmYdEutiSTCRu6nDXpEt2zxSHfBV0vlOcMwIn3eOTWrVJ3MJSAgsDJGESTdSViYkwAp92NZ5JJMGx52+qUMQkJ9LKeNtvYMuXx8zU9NyLNkExS2dCqRgWue7tKYfnDgmleIoR87AwZYR1IifGGZy0AnDEQtVNGFQmp30A6y3pU10khh6OCAHVrAM8GE4Ogs1GoRdSSTs2PRh1Hm3TYealseE1K4UvbGpcY1uDGCh5PGcNuM9sQpEoOrJkzj8mU3eqywzgcrW1ewBN0YRvAmJc0zHjzJF6JTFkmRctI8l6Uq3MNd0wYdC7lmZ4hWZEFGetXaVrp3zwhXG33o727qR0G6XGmPPjgfrZ2aY5SFZq0maktqZWEDkxY2SIS8UWiQXbHGqHiI1TyIJWubC8duiQBpwRVWgHW9KxtRHaz6UsmnWwxxqcsTSQxmlrUQEA9sCpk7RLASUxoeb8MTnzUxsuO1IDlOOGICaQ5cbl0j+JgJvT0NKlPOUEW6CSV2lvHWB9myxHH/K6SVESxPBpTQ5iYwLxLMgP44JugNhpum7cq0yqwSZcCtWi4YJzCo7Oln1U0Y5X16d1Y5Hbc2ZXAtFcqAY7687fOEA+RjPSohyN01epkF3393baRUKlGWOMG2f6vt2iUtaqSzwXcgHmYbMxx1kPHJc4dywWaBPtGIevIcETcm3dxo7ZpEIgzoKR8gvrnMXmJkEQn3zyqMTx2W1h5Qc/CLKrL//m56//8q9evbod/PS/vvzh5/eD//nlF//7m7vB65/86PVP/u1+5j9//frX/3w3+OJXf/e739yz/e6///qrf/rZ/Zof/eOXn//Dq1cP6jZvikK5X/bdi4sFBEG3pJvpzyq7aa+rRVeFPTh2cxl3ft5eZPGLsHsGPX+Rdc9m0POX9pMnO//YXf9HjR+87KbKB59dffxnz7/3vYcFncw+TS8uPkraq67UuiYuwmfPnl988qd39arrFhdV372pYN23OzXuikD37Qa1mwWP6Un74uLp0zekVy9vuq+e33J5ZX9TUQrsrPVvSa9/9Ivf/f2Pz2Z+fKfoF7/6868+//mZ4JTe9OSJfZWXXp/5l1XZnt11g8I96bp/bfhNXe3l1bWJWWl7vvfkiWd39mXZxGFc2NnLhwsui7LzH4N2v/PnP7zZ+YMgZX53kV7jegaq8eveb7tnNzg8f/mGZy/T1zC+ekS5Gkrvs9g7T9ywvztX2Pl1/bDygujZzQ7fvXgazW41ffr8Xf4qdt9mj/PwKmsv4/bStd3oHRzelnIdK+/d9g1eRVBednZ4mcVF+sKvn8HP/7A+jZ/bTdp+UNa1A67lXM4+IGjy7eZrawR9QJDd+PbXFvQhjby48d2ubP6obZduWXR+0f1Rzb6xtA8hf8f2jrzrQvGl57fu75c+juPOdq799en3Xz6in46f3c2c5dm/l3cm3uh10VZ28VCROLh4drfoKvOLsIsu/uSTTy6g52/dJfc8uV09exZ3bx2t+9b4Xd8Ut9pdVX0bPXv65U9/8dXnv718egHcmhh3Z31uL4hby54/kvLq+ds30L1px9N7TftOldmTNsaV3zx5cuWVY3Fv69tm3gn4oJn3PN/YzK9+9hdf/u2/vMfMy8s2t7Psm1j75po4W/ZZ0JT52ebbvZIyLp49/eijj94NiCxuuz8QEdX93OOYuL+dz7tcXnM8xOsO8A+vbM4xWhb+2+viMz/0mJQ8Jt0aE5QNc77rnj07j94D9LXLwNvoAa+668v6mu/5e9zx0Mx7Xd+Y/Wn8/bPK9tPnf8SnD/z6ewfa9247u/XpR7fOfTNz/f48/e7tm/D8HXmvHqDyxiQAeJf4QPP77p2fv/P0PTJuHX0bdff8bwXVhX9+o2/xuw3Lr4HfvbPv8Xvj/E+TG/yunK64vD5d/28gb576R0g+mLzB8uuBmLwPxAfq33e/Loj3/G+B+K336fDoZJ4TqeuDeSvqwcl8lDe9/vFPv/rlf7zJiR7lP/cD126821fjBqO7DOdNUvQNU6KXf/AxuuX79rde/R9X14A89BwAAA== \ No newline at end of file diff --git a/lib/shiliu.json b/lib/shiliu.json new file mode 100644 index 0000000..d8bfaa9 --- /dev/null +++ b/lib/shiliu.json @@ -0,0 +1,366 @@ +{ + "作者": "cc", + "站名": "石榴电影", + "首页": "电影", + "主页url": "https://hei19.com", + + "分类": "电影&剧集&综艺&动漫", + "分类值": "1&2&3&4", + + "分类url": "https://hei19.com/catalog?column={cateId}&sort=1&per_page=72&page={catePg}", + + "二次截取": "type=\"application/json\">&&", + "数组": "props.pageProps.mediaData.data", + "图片": "cover", + "标题": "name", + "副标题": "tag", + "链接前缀": "https://hei19.com/detail/", + "链接": "id", + + "搜索模式": "1", + "搜索url": "https://hei19.com/search?type=1&keywords={wd}&page={pg}", + "搜索二次截取": "type=\"application/json\">&&", + "搜索数组": "props.pageProps.searchMovieList.data", + "搜索图片": "pic", + "搜索标题": "name", + "搜索链接": "id", + "搜索副标题": "resolution", + "搜索链接前缀": "https://hei19.com/detail/", + + "影片年代": "props.pageProps.videoDetail.videoinfo.year", + "影片地区": "props.pageProps.videoDetail.videoinfo.area", + "影片类型": "props.pageProps.videoDetail.videoinfo.type", + "导演": "props.pageProps.videoDetail.videoinfo.director[].name(♥)", + "主演": "props.pageProps.videoDetail.videoinfo.starring[].name(♥)", + "简介": "props.pageProps.videoDetail.videoinfo.introduction", + + "线路标题": "播放列表", + + "播放二次截取": "type=\"application/json\">&&", + "播放列表": "props.pageProps.videoDetail.videoepisode.data", + "播放标题": "episode", + "播放链接": "url", + "筛选":{ +"1":[ + {"key":"class","name":"剧情","value":[ + {"n":"剧情","v":"type=1"}, + {"n":"惊悚","v":"type=2"}, + {"n":"动作","v":"type=5"}, + {"n":"科幻","v":"type=9"}, + {"n":"奇幻","v":"type=11"}, + {"n":"爱情","v":"type=24"}, + {"n":"喜剧","v":"type=26"}, + {"n":"冒险","v":"type=27"}, + {"n":"犯罪","v":"type=28"}, + {"n":"战争","v":"type=29"}, + {"n":"动画","v":"type=34"}, + {"n":"同性","v":"type=44"}, + {"n":"历史","v":"type=45"}, + {"n":"恐怖","v":"type=47"}, + {"n":"悬疑","v":"type=48"}, + {"n":"传记","v":"type=49"}, + {"n":"纪录片","v":"type=53"}, + {"n":"古装","v":"type=57"}, + {"n":"家庭","v":"type=58"}, + {"n":"古装","v":"type=57"}, + {"n":"伦理","v":"type=85"}]}, + + {"key":"area","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":"act","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":"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","v":"2016"}, + {"n":"2015","v":"2015"}, + {"n":"2014","v":"2014"}, + {"n":"2013","v":"2013"}, + {"n":"2012","v":"2012"}, + {"n":"2010","v":"2010"}, + {"n":"2009","v":"2009"}, + {"n":"2008","v":"2008"}, + {"n":"2007","v":"2007"}, + {"n":"更早","v":"lt_year"}]}, + + {"key":"by","name":"排序","value":[ + {"n":"最近热映","v":"rankhot"}, + {"n":"最近上映","v":"ranklatest"}, + {"n":"最受好评","v":"rankpoint"}]}], + +"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":"青春剧"}, + {"n":"家庭","v":"家庭剧"}, + {"n":"动作","v":"动作"}, + {"n":"情景","v":"情景"}, + {"n":"武侠","v":"武侠"}, + {"n":"科幻","v":"科幻"}, + {"n":"其他","v":"其他"}]}, + + {"key":"area","name":"地区","value":[ + {"n":"全部","v":""}, + {"n":"内地","v":"内地"}, + {"n":"中国香港","v":"香港"}, + {"n":"中国台湾","v":"台湾"}, + {"n":"泰国","v":"泰国"}, + {"n":"日本","v":"日本"}, + {"n":"韩国","v":"韩国"}, + {"n":"美国","v":"美国"}, + {"n":"英国","v":"英国"}, + {"n":"新加坡","v":"新加坡"}]}, + + {"key":"act","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":"罗晋"}]}, + + {"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","v":"2016"}, + {"n":"2015","v":"2015"}, + {"n":"2014","v":"2014"}, + {"n":"2013","v":"2013"}, + {"n":"2012","v":"2012"}, + {"n":"2010","v":"2010"}, + {"n":"2009","v":"2009"}, + {"n":"2008","v":"2008"}, + {"n":"2007","v":"2007"}, + {"n":"更早","v":"lt_year"}]}, + + {"key":"by","name":"排序","value":[ + {"n":"最近热映","v":"rankhot"}, + {"n":"最近上映","v":"ranklatest"}, + {"n":"最受好评","v":"rankpoint"}]}], + +"3":[ + {"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":"其他"}]}, + + {"key":"area","name":"地区","value":[ + {"n":"全部","v":""}, + {"n":"内地","v":"大陆"}, + {"n":"中国香港","v":"香港"}, + {"n":"中国台湾","v":"台湾"}, + {"n":"日本","v":"日本"}, + {"n":"欧美","v":"欧美"}]}, + + {"key":"act","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":"Angelababy","v":"Angelababy"}, + {"n":"易烊千玺","v":"易烊千玺"}, + {"n":"岳云鹏","v":"岳云鹏"}, + {"n":"王嘉尔","v":"王嘉尔"}, + {"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":"by","name":"排序","value":[ + {"n":"最近热映","v":"rankhot"}, + {"n":"最近上映","v":"ranklatest"}]}], + +"4":[ + {"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":"OVA版","v":"OVA版"}]}, + + {"key":"area","name":"地区","value":[ + {"n":"全部","v":""}, + {"n":"内地","v":"大陆"}, + {"n":"日本","v":"日本"}, + {"n":"美国","v":"美国"}]}, + + {"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","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":"更早","v":"更早"}]}, + + {"key":"by","name":"排序","value":[ + {"n":"最近热映","v":"rankhot"}, + {"n":"最近上映","v":"ranklatest"}]}]} +} diff --git a/lib/tuboshu.json b/lib/tuboshu.json new file mode 100644 index 0000000..bbe693e --- /dev/null +++ b/lib/tuboshu.json @@ -0,0 +1,14 @@ +{ + "搜索请求头参数": "电脑", + "搜索链接": "https://www.tbsdy.com/search.html?keyword={wd}&category=983920&data_type=987910", + "POST请求数据": "", + "搜索截取模式": "1", + "搜索列表数组规则": ".search_result_netdisk_list&&a", + "搜索片单是否Jsoup写法": "1", + "搜索片单图片": "img&&src", + "搜索片单标题": ".netdisk_item_detail_name&&Text", + "搜索片单链接": "a&&href", + "搜索片单副标题": "", + "搜索片单链接加前缀": "", + "搜索片单链接加后缀": "" +} \ No newline at end of file diff --git a/lib/voflix.js b/lib/voflix.js new file mode 100644 index 0000000..e50efd2 --- /dev/null +++ b/lib/voflix.js @@ -0,0 +1 @@ +bXViYW4ubXhwcm8u5LqM57qnLmRlc2MgPSAnLm1vZHVsZS1pbmZvLWl0ZW06ZXEoNCkmJlRleHQ7OzsubW9kdWxlLWluZm8taXRlbS1jb250ZW50OmVxKDEpJiZUZXh0Oy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQ6ZXEoMCkmJlRleHQnOwptdWJhbi5teHByby7kuoznuqcudGFiX3RleHQgPSAnYm9keS0tc21hbGwmJlRleHQnOwp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAndm9mbGl4JywKICAgIOaooeadvzogJ214cHJvJywKICAgIGhvc3Q6ICdodHRwczovL3ZvZmxpeC5mdW4nLAogICAgaG9tZVVybDogJy9sYWJlbC9uZXcuaHRtbCcsCiAgICB1cmw6Jy92b2RzaG93L2Z5Y2xhc3MtLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHRhYl9yZW1vdmU6WyflpLjlhYvnvZHnm5gnXSwKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyYmbGk7YSYmVGV4dDthJiZocmVmOy8oXFxkKykuaHRtbCcsCgkgICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDEsCiAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgIGpzOiAnZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BsYXlsZWZ0IGlmcmFtZSIpLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BsYXllciIpLmNsaWNrKCknLAogICAgICAgIH0KICAgIH0pLAoKICAgIC8vIHNlYXJjaFVybDonL3NlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0qKiZsaW1pdD01MCcsCiAgICBkZXRhaWxVcmw6ICcvZGV0YWlsL2Z5aWQuaHRtbCcsIC8v6Z2e5b+F5aGrLOS6jOe6p+ivpuaDheaLvOaOpemTvuaOpQogICAg5pCc57SiOiAnanNvbjpsaXN0O25hbWU7cGljOztpZCcsCn0= \ No newline at end of file diff --git a/lib/vsys.json b/lib/vsys.json new file mode 100644 index 0000000..e733976 --- /dev/null +++ b/lib/vsys.json @@ -0,0 +1,23 @@ + { + + "作者":"cc", + + "站名":"vs影视", + + "主页url":"https://www.ytshengde.com/", + + "简介":"+onclick=\"MyTheme.Layer.Text('剧情简介','&&','500','350')", + + "导演":"导演:&&

    ", + + "影片状态":"更新:&&

    ", + + "影片类型":"分类:&&", + + "线路数组":"#playlist&&[不包含:无尽#八戒][排序:秒播>爱坤>优质>量子]", + + "线路标题":">&&+线路", + + "分类url":"https://www.ytshengde.com/sanyisw/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;akx", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4#短剧$5"} diff --git a/lib/waiyu.json b/lib/waiyu.json new file mode 100644 index 0000000..2638290 --- /dev/null +++ b/lib/waiyu.json @@ -0,0 +1,575 @@ +{ + "classes": [ + + { + "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": "意大利语" + } + + + ], + + "cookie": "innersign=0;buvid3=2E536ADC-CD6D-46AB-A9FF-904395151EE369713infoc;b_nut=1669016569;i-wanna-go-back=-1;b_ut=7;_uuid=761F7F106-C575-884D-6C10A-92BC10A10D10FBC68934infoc;buvid4=5B25B999-AE15-E09A-A0CC-3661981B71BF70255-122112115-JOyWSaNZfI2kZmT1KYmcQA%3D%3D;fingerprint=6d9ef93c89a567d22b6a9c4104e6cc50;buvid_fp_plain=undefined;buvid_fp=6d9ef93c89a567d22b6a9c4104e6cc50;SESSDATA=2d6f63c8%2C1684568607%2C19eb6%2Ab1;bili_jct=21d538b01566c26afc81ff68c2ac7dca;DedeUserID=3493083203242585;DedeUserID__ckMd5=7b86f3894ed7f8c0;sid=ng0uyvaz;b_lsid=97FB69A2_1869DE8E2C5;bg_view_44176=720227", + + "filter": { + +"英语学习": [ +{"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": "法语基础" + }, + + { + "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": "德语基础" + }, + + { + "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": "韩语基础" + }, + + { + "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": "俄语基础" + }, + + { + "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"} +]} +] +}} diff --git a/lib/wandays.json b/lib/wandays.json new file mode 100644 index 0000000..baa64af --- /dev/null +++ b/lib/wandays.json @@ -0,0 +1,49 @@ + { + + "作者":"cc", + + "站名":"万达影视", + + "主页url":"https://web.w1988.cc/", + + "简介":"+", + + "导演":"cc", + + "主演":"各大网友/白嫖大王/想念式.悲傷", + + "影片类型":"未知", + + "影片地区":"未知", + + "影片年代":"无年份", + + //"二次截取":"
    ", //不需要二次截取就填空 + "bfyjiequshuzuqian": "", //播放剧集数组后关键词 + "bfbiaotiqian": ">", //播放剧集标题前关键词 + "bfbiaotihou": "<", //状播放剧集标题后关键词 + "bflianjieqian": "href=\"", //播放剧集链接前关键词 + "bflianjiehou": "\"" +} //播放剧集链接后关键词 diff --git a/lib/古风漫画.js b/lib/古风漫画.js new file mode 100644 index 0000000..9c75d2f --- /dev/null +++ b/lib/古风漫画.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/可可影视[优].js b/lib/可可影视[优].js new file mode 100644 index 0000000..436c62a --- /dev/null +++ b/lib/可可影视[优].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/可达影视.js b/lib/可达影视.js new file mode 100644 index 0000000..65bef2b --- /dev/null +++ b/lib/可达影视.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WPr+i+vuW9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly9rZWRheXMub3JnJywKICAgIC8vIHVybDonL3NoYWl4dWFuL2Z5Y2xhc3MtLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHVybDogJy9zaGFpeHVhbi9meWNsYXNzLWZ5ZmlsdGVyLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NvLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJhMlU3YlVCQ0czOFhYWEJ5SHNwUTd5cjd2YThWRlZDSklDMEZpcVVvUkVoV0xvQlFvQ0pJR1Frc2xBcUVpRUZxNkVCVHlNckVUM3FJR3o1a1o3dndBYzVmL0cvdll2M01NbnhCenhuRFFINW9OaGthTWlwZHp4cHZBckZGaFdMR1U5U2x0RkJraC8zaUE1N2Yrc1puQTQ0R2hCN3ljdUY5TVBHQW5HUE5GUUk5UDc2TXJRQ0hvMmYxSjFQNTNDVE1JZU41V3lyNjUwK2U1UWMveWQ1dldRUVptRUhETmIyYzBnNkJuZGlSdXg4NWhCZ0ZudjFKMEhnU2NoVlBXeHlQcjhMc2VZOGFybnAzYmgvRkNQSnRMNyt0cmM0U3RObEpXK2tTM2NvT2VGZGF2NkE0ZzBOM3Q4YnZiNHpQblZ1ejFyUE5vOWJLWWNlVjROcitWeks5RjllS1k5Ukc1N0ZJK0U3SEQrc3VnakZkWi9tTmRMT3BMdUdGKzZHRUttMlR0MUY1Y1pwdEVaeStiSkw5NkJRZFRvSHFKWENhRzNSNER6c0l4NXpwNjVnWjhaS3RmY3VrMS9jamNnTmM3M2JadWJ2WDEzSUJyNG8xVHdEV1RKN203STcybUcvQzhsWjM3NkprK3p3MTQzdGNmemgzbzg5eUFzdytmN1lXd25ya0IxN3k3eU8vK3RqSlhlbG5NWHIrV3dtV3lrRmlncndXenAzZjNJT01jcnhkM0E5dXROSU9Bai9mbk1jMGc0SnNTeVZnYkVScFRabTh3Rzd1QnZjRTBnOERlRVRaekF6M0l2NnlKR3p6djdKdnIzRzJHN1d5ZHZUeENuL0k5QS9iNGtmRmk0c1djKzRqN09EZUptNXdyNG9weDh6bHk1eVBqNWNUTE9TOGpYc1o1S2ZGU3prdUlsM0JPZlUzZTE2UytKdTlyVWwrVDl6V3ByOG43bXRUWDVIMFY5Vlc4cjZLK2l2ZFYxRmZ4dm9yNkt0NVhVVi9GK3lycXEzaGZSWDBWNzZ1b3IrSjlGZlZWdksraXZzN0hKeHN6R2JFdk45akcxTm5MeHF3RVVJbmtCWkFYU0txQVZDR3BCbEtOcEFaSURaSmFJTFZJNm9EVUlha0hVbytrQVVnRGtrWWdqVWlhZ0RRaGFRYlNqS1FGU0F1U1ZpQ3RTTnFBdENGcEI5S09wQU5JQjVKT0lKMUl1b0IwSWVrRzBvMmtCMGdQa2w0Z3ZVajZnUFFoNlFmU2oyUUF5QUNTUVNDRFR6YUZ2YmxqcGJkb1UyQit1aW5zMkVJaHUyMGZYRHN1QSt0TUI1MFQ4SWRwYk1FNjNyZDNrdmF1bHJEUjRQVFVrM25jK1lXd0JNT3BWeE9UZ1ljYkdTb3l4aHlGZkRmemVrWVVVaFJTRkZJVVVoUlNGRklVVWhSU0ZGSVUwcU5DdnA4SWpjd0dSU0JGSUVVZ1JTQkZJRVVnUlNCRklFVWdSU0E5Q3VTd0k1RGovcEFZcEJpa0dLUVlwQmlrR0tRWXBCaWtHS1FZcEVlRG5CcjFUd1FtUlNCRklFVWdSU0JGSUVVZ1JTQkZJRVVnUlNDOS9nbHl4aCtTZjRJVWdSU0JGSUVVZ1JTQkZJRTBSQ0JGSUVVZ3ZRbmsvSDlkejArM2pEMEFBQT09JywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLuWcsOWMun19LXt7Zmwu5o6S5bqPIG9yICJ0aW1lIn19LXt7Zmwu5Ymn5oOFfX0te3tmbC7or63oqIB9fS17e2ZsLuWtl+avjX19LS0tZnlwYWdlLS0te3tmbC7lubTku719fScsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfcGFyc2U6ICcubmF2LW0tYm94JiZsaTthJiZUZXh0O2EmJmhyZWY7Ly4qXC8oLio/KVwuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICfmnIDov5F85o6S6KGMJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHZhciBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKICAgICAgICBsb2coaHRtbCkKICAgICAgICB2YXIgdXJsID0gaHRtbC51cmw7CiAgICAgICAgdmFyIGZyb20gPSBodG1sLmZyb207CiAgICAgICAgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMScpIHsKICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTsKICAgICAgICB9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHsKICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpOwogICAgICAgIH0KICAgICAgICBsb2codXJsKQogICAgICAgIHZhciBwY29uZmlnID0ganNwLnBkZmgocmVxdWVzdChydWxlLnBhcnNlICsgdXJsKSwgJ2JvZHkmJnNjcmlwdCwwJiZIdG1sJykubWF0Y2goL2NvbmZpZyA9IHtbXHNcU10qP30vKVswXTsKICAgICAgICB2YXIgY29uZmlnID0ge307CiAgICAgICAgZXZhbChwY29uZmlnKTsKICAgICAgICBsZXQgcHVybCA9IEpTT04ucGFyc2UocmVxdWVzdChydWxlLnBhcnNlLnJlcGxhY2UoJz91cmw9JywgJ2FwaV9jb25maWcucGhwJyksIHsKICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgJ09yaWdpbic6IEhPU1QKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYm9keTogJ3VybD0nICsgY29uZmlnLnVybCArICcmdGltZT0nICsgY29uZmlnLnRpbWUgKyAnJmtleT0nICsgY29uZmlnLmtleSwKICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcKICAgICAgICB9KSkudXJsOwogICAgICAgIGlmICgvTkJZfEJUSlNPTnxDTDRLLy50ZXN0KGZyb20pKSB7CiAgICAgICAgICAgIGxldCBwbGF5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHB1cmwsIHsKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHBzOi8va2VkYXlzLm9yZycsCiAgICAgICAgICAgICAgICAgICAgJ0hvc3QnOiAnY2RuLnN1eHVuLnNpdGUnLAogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjMuMC4wLjAgU2FmYXJpLzUzNy4zNicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2UsCiAgICAgICAgICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZQogICAgICAgICAgICB9KSkubG9jYXRpb247CiAgICAgICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6IHBsYXksIGpzOiAnJ307CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IHBsYXkgPSBKU09OLnBhcnNlKHJlcXVlc3QocHVybCwgewogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cHM6Ly9rZWRheXMub3JnJywKICAgICAgICAgICAgICAgICAgICAnSG9zdCc6ICdjZG4uc3V4dW4uc2l0ZScsCiAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMy4wLjAuMCBTYWZhcmkvNTM3LjM2JwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZSwKICAgICAgICAgICAgICAgIHdpdGhIZWFkZXJzOiB0cnVlCiAgICAgICAgICAgIH0pKS5sb2NhdGlvbjsKICAgICAgICAgICAgbGV0IHZpZGVvID0gSlNPTi5wYXJzZShyZXF1ZXN0KHBsYXksIHsKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHBzOi8va2VkYXlzLm9yZycsCiAgICAgICAgICAgICAgICAgICAgJ0hvc3QnOiAnY2RuLnN1eHVuLnNpdGUnLAogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjMuMC4wLjAgU2FmYXJpLzUzNy4zNicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2UsCiAgICAgICAgICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZQogICAgICAgICAgICB9KSkubG9jYXRpb24gKyAnIy5tM3U4JzsKICAgICAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogdmlkZW8sIGpzOiAnJ307CiAgICAgICAgfQogICAgfSksCiAgICBkb3VibGU6IHRydWUsCiAgICDmjqjojZA6ICcubGF5b3V0LWJveDsudmxpc3QmJmxpOyo7KjsqOyonLAogICAg5LiA57qnOiAnLnZvZC1saXN0JiZ1bCYmbGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5pdGVtLXN0YXR1cyYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDMmJlRleHQ7cC5yb3cmJnNwYW4mJmEmJlRleHQnLAogICAgICAgIGltZzogJ2ltZy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJ3Aucm93JiZzcGFuOmVxKC0xKSYmVGV4dDtwLnJvdyYmc3BhbjplcSgyKSYmVGV4dDtwLnJvdyYmc3BhbjplcSgxKSYmVGV4dDtwLnJvdyYmc3BhbjplcSg0KSYmVGV4dDtwLnJvdyYmc3BhbjplcSgzKSYmVGV4dDsnLAogICAgICAgIGNvbnRlbnQ6ICcubW9yZS1ib3gmJlRleHQnLAogICAgICAgIHRhYnM6ICcucGxheWxpc3QtdGFiJiZ1bCYmbGknLAogICAgICAgIGxpc3RzOiAnLmV3YXZlLXBsYXlsaXN0LWNvbnRlbnQ6ZXEoI2lkKSYmbGknLAogICAgICAgIHRhYl90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF90ZXh0OiAnYm9keSYmVGV4dCcsCiAgICAgICAgbGlzdF91cmw6ICdhJiZocmVmJwogICAgfSwKICAgIOaQnOe0ojogJyonLAp9 \ No newline at end of file diff --git a/lib/哈皮影视[优].js b/lib/哈皮影视[优].js new file mode 100644 index 0000000..524f712 --- /dev/null +++ b/lib/哈皮影视[优].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/哔哩影视[官].js b/lib/哔哩影视[官].js new file mode 100644 index 0000000..2591d75 --- /dev/null +++ b/lib/哔哩影视[官].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/哔哩直播.js b/lib/哔哩直播.js new file mode 100644 index 0000000..76dd62e --- /dev/null +++ b/lib/哔哩直播.js @@ -0,0 +1 @@ +0YpWYvxVnkuDSerKOgJZW6ohsYoOru2nkfmA0JklCbbFiz4rWs1VLaN1xcKfsoRvOdMurZACT00Q6x9Y5UxTmLWg/oh8TJXB3HbH1eOS7nXr2D+dr3Koo49xiReor3VmdbRGXrrEoMuI2BVWqeNO12TW3jdDn/Oyy1YcKCQ/np8q6FWRldXwTNusm+PeT96k/Fj+8c26S82FvZBbvgkZfomm7x/kquitJpIpLBKCUMx4qrZifEolZm2wS1hp6+yIKC6paH2ZzkaohGuUx+O9vMlwEI7HhBzZwgUmXv+RYStrwsCoA2qvEktUbqPO2MPzkUyljJpClBVfD8x6W3suXQzHxewjDjRDm6XmyJIQDpIpkI2LRp+XxNDYz+hxhdT0RAH+rRisDbckvR5c+OPnnmA1niY5Bj6jxaMt8QK/EZKvnvCT5VB3h9sv8Q6Y1TJur66uVJM0x0LHo5NACnCBp/pDoYOW0UvLREEGb5wXkj0zOZYOcXUwZQY0lvbrXiqYxMwR8KN7gHuk4OenVKqoWAYM+LdMTYu0jdH/GmTJO6yQzwK99VD466DYKalannE3Ues1UeaPiY29xGLnSL4je3oSXiVT0BsKESsxccS+SdLXYi6Gpqu/ZJ38Kt+Hq11Ocmxiriir/m9B9OWe+MFXPYWyfj0zKw1KGv7kaT7cr+YFwaleYgnQahoalAxmmmOBZjzUj++KbMaQgqohlJYo3uDxKDYDdk+1qZwEy1tT1LShwYy5r1kHefEfHX9gKtiOau7gNs5MEZwWP1mIb+3Fcg0uwFPk0sHJQTuE+oT4HbIEoXav0c198d8gnixE1Y5DxNTOKzuXCR4v0m1LC0I3x6x9b1PCkPm3VQnnyFCIIEwrieJrkBxXrT4+xL++l8OYhT0GZiB6VTN/CD2iZ48v78Tx5MDQaOu1re/cItf1bFxgkGXRLnyGCwh9ejKz3IL19+dY5t89ES+xCqOPcpEwm1A3pKAYFGOtwbrmM9vtGooSt2enMJwe3H8kQjSW61/dmJwgwBpsDadqMj/YTYyJAF9HrysKUvD2W7j7BJ0ubUM7E/b/7nrtfS0urorXQZzrqTvH7dp5DlgQtFMzgWGCjrLFlEPn1UkxoZUuWxuByRINSOVIqDcwWqNl1c8uxtVykhue/VXZYv0iNmpJB/2KgXjeYGbHV7Ne9Hc1iT1dZ6KcMajWRa/GWCbP7YfxidMDYFcuSe+71r7Zdt/7Ck/4rhw1zpCvqK4TgCrLzKSDups1oy32Ie9YNdKj18Z0fsWYm8LqVrLO7GoWRgpN8XXrXdxYd5VuJF5uBJ6tajLNJVJkbIjtEDWDy/C028YGy3D8NbHumyb6rqzmZglFTx4Dgrqrgmo5Mk64beVZE4QMLAG+WEUkUkwexGo12oV+ggq9yCKKRwHQ/Vgzjp3tCvABstmmpZDD8e2V/IMs3ynXpVzoTEmTyT9oRh2z94OmkB/yMf6EfDgLs2gpZsYhWCx36lJEDdJhYw7U7hpRFGyx61cOCsnDVpa3UV9KG2tuK0wu8B0wRV+JLRRsBbmqSWoE4EVIVe15SzNg/OgCF7tq0VFpCd/NPEtgXw4QP9Bj704a/6zO0H8Hr6sg7sLSzBZQQdMKGMgS+DOgHW1Gt3M0ZeEMZIrUFAlMnWgF09SaKKKHEW1h4JnlJWWWn57MvACrtpagf6b7/CHMqNhz+1d/xjzL5Mc6NsgpdZBsvCMLDC40fZPNLojJR0twIrwOM/TSUKZJarNIYb1IMUFAPYRjqZPYtMqZ1130kTvmTaD/xUADjlR2COLylffrr1FF/wtvAhsELS8cw75J3hmWpm+nZoo/C1zpQM6x6HubPv/Kn4kwX+Bac/kJZ1FJXPzr4D7vc8cAycCBKD1p0Q/3E2YenczmeDYfRbVTiKGNs2IHlTuw7doluoFWzwfHCUd09d6TI0ebiKlwrqJW35ttYMVTZySKzB13gnA6/1D4Pih02ouPFf/ukdpEknCqOeCQdEG6BkQiSvis/hAICkvEcaCz2qJzTIaqoaDEBDUxy0HuLgxozfogpFSHMBRarrjnJmzmjHXC9O/WUPxMu8uHGxp+Nb9DFz7xbPjWLKwLe/JeYsA/o3PK6Pkv8dS/SbmxIkjRWi/a3lg3uvTH0sDFZhz7No0p5um/S9qkUrwov73sPC3uTlUQCBKgR/dYBI5hrx62j1P3PA/3ASBcQafcAEnL6XV920jAnqO8Bn2oAQqPAOmdAr5p19CEiWsiw0+AtK9OYlnW1Zs0Lab+kKMnozGMLA9NjK9ys5RxCm4ENbjj6UVF/RLu4qH/F8VMdL4FtxwTErJTHUSNUbsgkX9/m92RY3mca5dXS3EHO+NScMhxjyuRqJrzIxid4lM4xmGgkUo7aqX5Omp7YDHOTgMR055QebIbn4STgzbnKRcR4lBJJvBXTHoONIEwqCGxoFPVPQaGSlzTlp5Bd3ymCT1atpoLXbPCHKgbjV6t6T50tZEX3q5PQ4p1xxj2cv7/5GgDkiBykHRAFlEJcioCk71ruNOffkc6R0709TdO1MGdXLwWpbMpOzXHf6BvQVdosCAwc6fOCE3f1Lqt4FrmN3w0qqaBF8n16/sJewPn0RbV2o+3hLwdGLFmV8EaJgx/bjeOfqXD9z0G2qItSmLH5qFd398dqwiV5wYJGtqn1zKctoeYbSyYjXHfaEvRFmdlQDgEneys2/pFHYApb/0pi9pOnmNPzGRU52Lla/9ez6fUrVmWSGpTj22APpYphTZ/Dv3O/yVVcc9szYz8m5wDXV9SSDzqQSmZZm92yt3EnMjo/sh0amkUzDn2ABI8OqE8hsFO00CoqZ1dFAkjH4mJciK7cDYJRPqK/RPGVV/Z1tTgBNPXAwPT6G6xbBt2I5tCJfzzbtqvZ6ywWZjaohgXL946RFZJMsM+BdLqI/GA9/ys4hszQQJ+284o4VbWov8rsUlVxWfgzKFKQyJIHYheyzIKCXUv/ZxuusII8W4vKJJYns6o64nO+8JBnU3XpvoHbkAdhbjnRVzR0BzETij2laUbWDCJ32IWZkL/ND0HQuUHTjqVeiX6xRKK4kmgl6/rUUn5hMc9u8VFb8gJofY4uLHcg3Tq+wc79APoHkzDTrYHC1iaI6LDaYVdPDc23nPXeE1FqPpfglpj88Rl9U9AXHFirg+FTsePR+mEkGJcSkSBpbJF+UnGJLkIkU/GOWd7qTrNYVIlsMdsj5mGM92GoKELu4K2W8i5VZp5Stqj9GucZNm4bJp7yAIjTzfeUUWiDLMwB1pl/ddhbm/2rK+evIZgvS1III+A5hkpt1Yek4m6omx10NBMNGGG87y9JSzdibfWmUDaLKVbHx7Bb432VrWwl5uInBsObXu/BqG1y8RUpTrzSPLPF/7vB8B7veoNwaK1dLgYNTv/PARGzgsUV+3LR/81xx+vtXMZjILD8ilBflxjLyznqbxr//08HV6TE6mdsd25r8WZmku0zW64dIfxOQFNAn3XTK0NNLsYkym+IRMNFh2yzc93ciP2Z6DUjpdDS0WIFLBLj6+vlQWU7jBYc6G8PAR3byCytMma6UR+yA2bTXgLx0ZO/C6wCwm1sNif33c+Dy5S3XpFt/5+DpTC/uU2lDuC8SbW+l3/U7DWFlY1CNp5bDJUD2NF4SCr6jFFzqTG3E1Ld0hFQ0XLB4rplJu9ArAl/o5T/kfTufcCMbKHPlVdohvD1X4YRlYH5BoKm3dZspDoNqgzxDvrR4SsQ3uVPVVids5jt1oOQoI3gTVTtJRbZ3POBaDHNFPsYeFgmJqXLOwPSSXIf0OtsZIG7L3IPl5YXz4C6jZ0rGVolCt/JWGVsIGsyylkmgJsfN9gzL6JQ2qs9LkqJ+mKrKl7iJgbBjG4I4iuZo+ApDsDprCxBl60y6NU7WvGj2ePJEwLPFvAALUOQYR1bhVGVuCU7Uuo6sKvxEbqONTfc62gXa1Tl+iesh/x5lnEb1kT5VXE7/05nzcXA2Upc0jowx6SXg7R/X0LVqJ/MctiUkTv93/X0yKC7HGVW38trdeoe3rE7viLGmcgHccFM9jQdzNqNdZ3eqRgXg7MA/xLHAMnUGn52GrYPVqbsV4WgAc0esNQXM/EUISMG+Edw0UfElJbVfn0b08hrLc9ii2hya6p2UCexMz8+1onDOeRck+Gv2bLIiXi2csc7gjMQouQAKmO3cf5P52GpDWX7DrnCcNo/TPQ+i5Gyh1BLOZaH8AnFt+JXRiYmbGDJpIanxKSbjrosyl8cpdJHK/ab5S+Unhrv17WQKBpXxxXKyYn/hl/MsEffU6pl1hMVhml1JHK8AXArWcaKuFYx5ilOK3+Wmeb+AccSVJ2hFXl7sizHAWF8zc+p4QRP4YPWTeN6KL/WrQW55PtpDUg3yzDeINZAMtl5E6pMvKxk+mhrRWeP8vAybA2Xq5QR38/86tvKrYQyMBXTN5KGWZvYJnLmVHOs/JYQAFlkCq2LhdxcSGaG7IkvLzin+8lGVYgr9KjZWGYNodS3P0Itt+qrqMAis3K6GUeU8NX6Wlg1d3+sGR1+E7azIGxcfaha9i2EuBn1uHmJreOMyTMEGVjDfM0WQbS5I6QKOp89b0OzH8Ak8Op1Guy3q2vYwJVpjTWY3CV0mWIqksLgIE9/izgIcWkON+YL9r/mnGsicpAumatHKFFv+sndHPol9jBHC/bPDML4alV8i1ll6qyvRL60l+nFY8WQ33aExLtPXWRqZ7MKMTClEg0g+6S55AcM7I+VD00cQiczP7TOAxfPoubg06LY7D6GEW8gz4iSQLv/lPKlbYsvXVzv6TvHizuZoImr88wPV+UbRJ/aP0lD0IKxpnS2zp4yj4sZaF5dlztUPRJUIYBLqm7q9BCxN51qe+P988fuex4rhUGq/RMhKnfm9ww0pZW9hC832z1JWIA2bsujfWRopveGwhT8sOknkg3I4oq11rxxN4uWOjqLMxuxGeU6c44APrKgl5n8xIYARwoEDiuq79L0Z+Kg1tjj+HUKCnmvvNQ/s4WCeZFktF2qQVBh4tzAgL/lolEZR5WtKi5Zz5rfthE6qH/GgiQmG/wLUFVEV7e+k7dYNiBeqRYASm/JDUSTzjJsqjalFxDtLGzHgYdRQhusBQgh21WJ6KrJxxh7XMIuzkeaQR5+qYNlt2UfdyS8sKW8LPJiO9WtL4LgLkeY0Q+Pd8KziYX5+5GA2Vo3KUJaM5368QOKqQHTi0REfjIqvAJfpvdoc4vrVKZC8h4YcF4EG9EGSoMyOk78JdI9WKVwdJTr9zQWR1XJhww7bk51o4b8XP/HO4yj0m/8oHc9c7eOJbmpuDNHmrICf9fMOglngjFA1Jvb7IPDQNCGZD3VZNl5eiXPJ4isqRapukxjj9FZRB5DkTZIYnTAj/Bwt1Ky5HQ02vj6GCW7LXN7l1iYraNky2WQFEUMZZ1Wb8ssPir5BM4bzvzKLKTeM3DlRzO9SnckmWPIKibHk9ZwfQy6NPHvD7foAABTavhiCI1TvLeabNMSgxgkxWvRAp2enSQGBx0DDQeR/BEhbyFEh+ihd3brTnAurEIzykk8ZG08qjfdc3C0OCYfNkSfmAV95Vf5hY3C5WonY+ml1nnuZ4XUKs429Uno69sXfWYf7fO7tiSX+GUVviDIGtwM07qwdC8fTjsEuaebBuNNXuH7Z1vxCAFypM01ZcXyPzUXz6Ze9pm6vHlGQOXfWEC/ISiBxj358g5hsH5l+kK8PswD9bv6mmu+m4qirm4zCZcEIFfOHXy7NaNRst8fy9E3a65tyOWoRWdhh+Cn0lQE61Sfcd/GPJ4ZbH/qdjUAWjfg7YPhhvt3zanczymKl3gdYXdW8XVJ4bYrciaVEl8h0/nNMxots33/nwOGoln8UCiN70m6UCuWPezih5l/CdaS/9kylwwLSkMS0AKl8yfcymqes9gHm9bojnfdLO2XNW2RDCmQEt+lejnHDKQp9RHTaF0bDWz7nkdWFUP0z9FGxm5+IPspSu+oUh0WAxYi3QmTZhXHSa0Ur9b/4qHvSiH4R9hc4qMZB5vi1mmwA5V/IFLMzr0wmMyY5Tpsuel9HNa7cjAvaWGCDBLwDqtr924rxKeLSP2eLEko6qCdBlEJ7uSsK0ctenVoDGmHUUTVP3UgZujIgLSUC7q13SohYH61SRt4ezXd+PXYAjjh1UBiNtmijP2IxGhZDqz0dbG2nWZ7comDKNp0BKPu2Iu2G9O8eXJdUuT6RoapWBb7p5nyxc0oMu3oiXNvZvjLewP7fn5VMZxlrnmquoIPZXHr28NCzSF4ADUmJxNeT73YIR6WGiF8adY+UiEfg/dUm2KNTOwlBc2Z+jS/Ld8MEA5VeQv3bvxqNkBinLoBq6LmxarssQ50emdKXIwponcvB6XFGLdeZ372a9YOtj89A/5n9fs7e12voPvOjUgRqL5W/IGx3cZL5uwAbUJkbCVaucaS1W9t8oQL/3P39P2SbCy5ZRxdEZf67nzAmxIAT0X4JDZwQxKJs+oVVD5PMoydGWTkw3FQEI9ufsEUqFruPht2J6LKRlaefi8GCyJ5MFwAYhWBRUaY6tCbrvIjERnwEl/ONIYmgeVQ75f0rkfZtd+7QXhkz2Pi4N9jhMCOetRGiL80kMg3X9uFmp4SXGYOpRfOOPGyS5ztBAx4Ubyu3ZUNY+iyXzBiGPZK1oQxGjNExrmLNk8qSnDiHJDMca9POpKGUH/5OFLLZx0nf5A5GfMZ0Bl3g3EFFSqtduz2jrUZaAG+YBQWN0FCoFC8uKEQQk7mKmw5TvhFqhjP2MCsoG91Tz7xU1z5+uknkeK6LFLvORyzJyYznMIKnWxa0eYy/MpcVktnLLJeSO0YvcfJqb2MK6ZQWR52arVZDindTGF1xrTdm/cPKitq4hpFgtYObSVO9HLmrLA/awAOHX2+SEstxKtXOMC02a6lEcOZYTpQkOnwl0vMOQ/hlflVDRJN/wY1X6NQXofsomHEFQP6dvu4SqmRn6JE4z8RiQqBJCHSjl5w3m0cN8xnUkr8xzfQZ1V6qZJYwsGZfBHnvcOjiGa9n6I4mZmGzLK3ljwEfMf5VQnZOk/LUbNievlxursuEC2u9SFDo1hY3gXABg7SFr4kT+bki6IzXe8DU6Y2pS4S0Ee4hEr7+90m8m5Q3gkL+vxIUj9GWpb9kx+Dr95Uykr0UBYD56vJu7PTKiPSJEU0q6POdbzqmQi9OvrapEJOKvl4QeFQumyZuhs+kFBfdLeEmv/AS6e/ZxptIcKsgJ1cYNf1oLjT2zFuxb6gnpcRNOp0asBg/a615KhclEHaa/hLh66ZspjZduyeJumgRZvOO1Ha1tQqsp3Z+MvH3h9QeCTtMKqpW935JSV2qmyOmhgnE/4GWiAKratnCNQMVGRSpvhgw/rt+MhNUp49vf+KGl7dV5okfWc+rvWrEGcCKGP+pcK95tGNKxdnpz4Zol6UxeG0qJ4TDQO5LeuEpHRaM6wAJAkrupnXMdau2a4splbS8vJaFCOfKFsk7DQ7g9BPsvxjQg1K2WRsznNdW4I4my78G/tQn9QqCjNx+gwsd89DAzJOBdDItvkJK4YJVQCau/hiHYdRDROF9k+H0e+3hFkDHdVsraSbH1/XijGU4srzpnwRfvAc61CR4Yc5jD3TwqJ/ReuyEjXmR6saWF6/0CEm64B9kdb1mg5Nib1DfXScxYDfhVQUibpT2YqLHbPdFGXVmsYstLpz86AWbeJWJhPUUEpTO0nAx0xPBgutcX7vJbOTfJ7rZmoLprp3W54s/vXWs/bZbTlng7bA4z9dPHIV7AEBl+K7O3WIGCGbLctsNtKDz3SWBnZxqdkBOynrlv5goFD7plMBnkRUBBUm9GADWfeURaTooTwbFznP0UeQ4paMbWn92hskD6rHWAVuz9NRHUjKQLEbGc41O7uhBC+RoECY7t4v3AaacmhyQfHje0OL6PSUp396yIR8/L6IWeDKUEDVFZ4qcezP0mPzw7mmWzFcACb6LijDHS/M/6qLQiTr9cmvOo0YLrWZr6sCXlccq3i/hIrxCPDm7Ztp7XM4f9TXB4qdMeMWpSSF8OAAxWv33CL7QTq5rteEb682O61hx4goGIZHC0IRNNIg4LkNhhdVMYXOjgsWWl7BB5q+2L1bvy5HuLmKCkChmCjN+rr7VK4euJS496sjOK6q9FX/Do/rIBkyZRNJOW55ChZ0dbil+gffRzmHWWKoX5ElgvsdPU2JmJEPbRMm9V7U1voEqamayv+XP4JY0SzNggglcr2oPpVj+7VfoinNxJHgCdQtCm7PpQpx2m0vbqVj8aF/WrLguFXK8N3eOrPxIpptr5lduJP3TSo7fyJczKjfhBhqbirToJTMxy/EZCaO+7II8BXcpTQM5UGx5TSHvEExzFfv28uIfuKjYkto3LYt8vQnoeLsOxsJikOZqy92+U8DUO4hJeMjTQ2eC5BwBFcz/JSJzwEjipyoMUAuVfVA97Bofw6k5zMADQ13gXuYBGzqyvIqAZJss0/xedcv6nrC8o4kZ2DF2Q4s/SWHnvwPPZlcWV/X2yitit5Y/ARGLH+0A1pcwQrvqbhCNMGKKq4M+W8ytxrOt5MXQrQ4AXsFugcnr7VYWMdNDM0o84IqCknmK7fOmS4+KI07EF7KKvDDR9vP6t38Dxkbp7ve8FFRrSNUy9a/rx8YePjFlCs3l/QTE0xQWc8dV580akdebJ8kGP4ckHVtdkhoK0ho6TIScZmGsN/6sv5VzAzGiNsRdthZdV1X3bQ9vYbTKsrLVyIwMtdC+BdTd71rDp/9AqZjtga+oJH5TZ8dutEN/V1XU0MWU7p/r6QKYb/UNBQjb/JtxlohIcFMnm4S78xNenUEO1JvZYwmkiOhrH/+V2xQCn7AIGkOyXafh1FJY/uhKKdhFXSXxxnVOPSuEF9GzwUFM/UWPWgeIpOf9vtgEcM3H7/4zQ4CLUYvkij+Sd9HWwzWnQqTuym9Wi17lHVWmdr7IoUNhiYEjH82+8tXlEaVqTvNGh/lDQ1fglO32U8bo5sRWH+Mrnb6hjhQNpnP5hxGUftwje1NA55gclTbuGW1h2/W1KkziDF72VTLkF8MDa74rgXL8q7EHMGLE5OGzkGaO0SQ0UN2naT83YF41tWKqDuRydKP0JgcN4ssHmUiIG1zeBM2G9etKaduwTkiF2LUC5H+TrdhA02pQBtMW7aKhJn3hMlQT2QCRJJwUKg9DI28+cqi3fcUaR7+ZUqG57gIfXweChWSge2JfoxXLc2HPsmdBVkazKyENiEscuKcUB+0mFn4h/cpqC8/mzPsOJRWNrPkpMUTSFgo9+67tx6B/VYz6Nd5SmuEI+64+VGWR4gFOV8YJ5vaq2fIKSkYIoWGJh/+ZNcUM6njkySG6Lvq9APpUGKkq0kU7IVOhdldgDp0zSTkv350/Qz0zg5SraI0Ehv8HbspIrDeYX72peeirt23FT+SCGGOFcunmGfpvyLXcZTsE2+JRj+tsi9oAy2GTLhgnNkE/0vcrYBdQyMWHQF8sWUdfntIV1V8wfPwLy7O6PAFigfZn7Ll/ALwDu61h7DIuGJrHXvBiZrKVkE0aZ58XtlIThNG4jM3t0xOeizV+B6B7kJ73YrGcGwslyDLya+WcOdoanQ0H8WdXXK7LjHxngj1vjJrA3Nm99c0ATwIxKZkhAIPCz/zlERREK/3bhNurIyHqwpwm2ovL/mCHo04Rd30nnfc/qPVNdQE0V3vSA9qdLj3mCAbCY4JZNOMc+OmNyIx8eSPP4FRakrf9Nw/vPfVaAoeDGDcXlgq9ynpALwMVP1pbyAbK0PbtqjCwf/kIyCvr+gnD3tl7dvb1+DNX4UNhNykaKJkXr5bqUDWgmGEgbnTYvZyxjptZ06QlmA+ZYjTcWcrxTlbQ3ZaKkj/A/AqGzXRNIu4vQmhKbGtEX3SDjX1VvOf+RTWOhhnFNOIN5YnSUBkKDr9aHXAe2OTbiyN5cD9ahLhA5dyc42ChQ9Cmv5hXpCoUkONLEZ5s9PoKWKmYiO37LqGWnPWzHlpowsJLbn228D+IpF7ChLexoD3kZGhhfsUSsCN3Aq6LxBdNko8ElRV+PYGrvFfK6uzf2OWHU8y9gGeSmgiT3Qi4Y9xXhE1I+wVM9q0j7plppN1xK4o/IzMgBTcVm1vrQMqrx97Ld1pxi2JJ78gd6W2wCz4JyfHgxh/0vl3hVzxNGGqX03nl02d8fbqSN2Zf3fJB+z5naLQSbuuNS5c5QDoGQLrftFllArqFgL/sNYG1UF/MXBAk7bdhs9IC27CtL5K4ZzvNq94qo4w/ZW6MKmAZ7E9VxCAmjnZs+mqSO7leaLgydGcBsLigySSwpzIPZjgqRy/qkHaWUlCfiAWuotDPqsxrPy6cxsSmFtS8tHiJ7ZZUXCeZr2gPEZX2L/e1bfzbo4BysVh6YsTm/B0zRN2iAGD0X24DxA6vjrM54bZKvtxNoYn+NgenTZswWsB8rHopChtfT72bi5gxn+yJQr6BTTSmrP3qHd4YZVEtljsUpR50D5eBeJS9VtMwSsnWTqpPs1HlQwAD7goeFg8VK40Fapi6yZ5i2td4IOmO6GjvxscmT5C8zuvOXQe/g32gfZ/fLH7FMfwTtOierM//DsuDwoJm71PiS198pI0Uq/EqiM27LEXcX0ILZu3pb/eiqY748qBZeBpIxxw/dFNqOycSoXiflDW9rVun89ftJnn49+B9vUmeYmGHfLWOWFBzfWd77lweyEZZ/qg+4DFh4i4ng+MN9X1K3PgwtHigmpIDTcdPmgwywaK6hSyttTYI87yELlSc8mEoWKiSzKSaLkZY/7tU51DsXNzOXLcmpsM0o7AttyYhGiZ5zW+tMGGfT5UQxv4u0lh5gW5aLjHrTHuheH0J4T/DTHZDgFtMyIcZARHMZgy2tMFujOYV5Q3e+ELmCpnXOqlixr3zCmvogm4IMUmZ+UrtdNFvQ2Jtsc/PrK+G3PCM6LL9ymowmISykWZiSc5Zn6XF7mk/2fnjLfhj4ua+TcRRG3XViO6c4Rt/MbY+KUSO0nOk318jUBaZr4yT+yF4YQSb1kw1yqWLyYNvi8cTpTicH10TaD/8W6PZ9zuNdCNWW4DgWsz0D2qUTd0VV3XI1KvBhkMdfP+pOmGXiqBg2ZauqU/Bl7xSwawQLh67jIXkctqueyr1K0kir8c/iEYYLoIrAZ24/RmviLVKbRFV+cd9Fi/UyZjwrZcc+GfTS9rKvwC0MnvvUtwlqlzTQfASdUGQOZOmaR8ea2W255bbJMpEJYBCQfj+XyrzxJNro0Jdz7ChjmtH+6r/SSpMJlmJVEfmMwBb3tCCQvFeBvjw+LGcMPu7V0w9SgSLGElhRr1pPJ5BtDxEPXGFU1gNOFw9M6l4jNCa7jV3ERRjXL7iM2BxpAaeD19NeALebIxY3CU9lTlbPjyQqr/AWhj3RpsiB/EiwtwsBh0Sg9s/bC/w2ak1sDptG+2LydTVh+6p3Cma0OQbY/yfETOFEfkoaK10sW52pxOb+PuzT9rBCnlHNbEmqJunP+lSWS5/0m0zA1D5jWa7KSvMFgFNfRhMkuvCABtS4Pm5EtaL91tCynhAvpqAvYVoAI6m9Or/CIcrJ7P8k8DFRLI4VW99Oq0dH5k7gFhgznO1G83Lo6Fo3KijQRaP0Na7uyWRQiMiB9MJdWuY89F+oUrvHD8kY36MovdYzWKJzfskMzgLYNZs4dAQHXQK5C1DZbxbTEffL9kYd0E7CUg+dIIxYwI/HbtTUYP1wruGbBizxCn8Y0oV5xJdcyDYcvAUzm4RspjB+7lT9GR5t9FKMdkmsM49MsIxEB1Uql7DCNmoPppsrxzCocG6yvI+8UugcZv7NXCwcKEsNsKwz4+vqRSpNuPgF50LfwpMvwBVkjbNoXS18k1XvGylWqsHhQORr4awOosuj54vEiAfUVkjIJSO8CdFd3DS6m8YhqyEbWLNjKGZg2aVFNm481JEhcw9Q5ilUauVi0fjhUzzZed6LLO/XfY1Rdn6bANDg4dZY3JJ1UqAUILAlIBLpQiV5ZQA0wWmF85LJHhzb47mgZdvVzSN11KG+LDq7M1CpPW+HLkbCTVIz25UoRi1eEfQ6ViAFGYIWIqdDcSiLt7ue4/QgLueBKkCmUTwahcT8RZzv20r2VIKK39eWGeghVKpy/0Lg5Quc8hqUvITsBZh2EEl4VudR1fUQUX8XOIJLocplcPU5QSv5oHlHXph9MAa6F0MMGhD2/yhGUs57F05WUgxoCaKkTEb/nzjeMDesSO9KD4YGVJtKirRmNx4qbvdKoSpuBA8/oegy2KBdO30wAa//F1NWB8vrjjs6s1oue4OcPZBvM/62aJGmi+h3Ghklt2PW2zxO0wy9REpUAvyHdMZzmWehjY25/0ceC/DNpt06yXtylD8osLwiq4xf8KfWYRKP3zX4lvOh9KDnmWBfGpc28D5WJjvp8ZpICB9z36Gl0qFsQ3k5vWs6wKKHkvhGFYvQ7brbcJQbYV9V/9t/TTfyh/4RTyz7axv/A8jjadAQ8djAmfZBxt5cZ/eG4o3u+lhYiko8IgzXK5xgNul06z14Q1s/AsLJYvGVSbCf9DmvFwOKzkU85N7Uj1HtpltLENgGBdxjfYzk9FL8kvnTr/i24NkWS8D/cB0+3eVnjfGXbMmnSwz1vUjmkg84jPNZdCzkUYYEv0pgDBImZlJT9YKluISI22Zlg3mWY2H7okj+3PAxSK4wDJIukNZ936IXNT8lDVCsEMv2MlBX8gpUGf/G5BttcN7J0rPXRzXmUr4vvYfJb9QyakuY4nd9TG8GC2m1OD6Unzx8UTGTXFzRXdHj/BNQoKanK47imPKe4qqbJ3LVRccMi0eVAoQor8Gso84SDtWLNX6R1tyG4Og6xiUSDWDaGg33ZmFK150pIqcvnKUp7JPw+yBpodPIsy0pKjJjJV3sjxvWf7Vfv40c4WQ6gTRyRTXovprg2hMCx/cLNDV8W4woDo+YhDxNINu+rklzc2yP/QG7+mQDdCFugwu8v16H4LqtvKJquM2Hb488QI9sFeIVvJXphBWfTuEMjDJbwSmInRT+/wGDFT2jXUOlOQ7TZmMT9s3wrfbhz9kdYf9hF6XIBQf5O8wJ91a7ZMZAsTq7MgSD2zVWiQs1PC1fbCOzNeiwD33tt1Z55bnNDzJtOErQGEqRg3E4hH4czJ9kQ2ayyIV3rLtXLfMhBFxMaFIJBPz0V+/Y0PYwBxax1Q8SbpuHmj6eft8MAEUUyKbrcvetS1OXRAh/jSgL6gljsn2JiddhJsSiaohM9MPeUhGdhEe9sxyUnfXgTB+lfj1dMqRSmo3iHzdSDmN1tUtOoWml+NB5TU2scMDOQtPM79F8NY81msKkBXm8lPI4Tbk3ye/AHx5NyPkOo2gP2WYCtodzpTHxQSVctwvw7c1II7KKw7+i3mwlysq+xTsaXx1534kROq4g23SYM+UPpGxCCloNea5pKoN8TY4trZG8pJNq+p+uyJoC+o84TuJj++q+ndkBo/lsQVgQky3hj1yxCScm7bf7wEllKIGgjulRBbzluZPD4Rgt3ahx1cv5mgNNELPxbs8gvwEOwA/pNaG6982gvSGi2i3jpvyqJXrHLoi55T06/gw8S8aE4DFzKQsUm3EGHzV83cCI7zFVEvhg0KXyzqe9QGNUZcaEpHlAkmcfBza7zycdmXXm6NwWUjka1DRuC7KeAPuzwOu76mFtto4GFXo+CBOLvyDZII2NPdSuv3b+l0i+2UsHhhobvj3rS23AEibaOxd4sjDYF80v/XLmlbS6OibZ6Tw5xlMPYiy9Vqh6vGHWrL5VUi2TLgKJR2IomPTbeKF1FgJ5AktMDlBrJBawCzIz+l4UlpMC4AhrJ72q8aFfg6V7BH6B0QbEKTF1nHXoBCwcF+qzyJUd+eeTJs5rmtTugrOG9Ct+nYqGqPudckTTmQ3GgHeCEnr+EpXsU+mhcu/Fzwmuqzm6/S6OJT1K8SDMmB1FiMCI9rPxYyiNj54cXzj+CIgKiZubGMHf0zftWxontktyF8pqPEaBZU6higDfjPX/fxVUQTD1ll4L/IP7cU+FiaFf/VLqKZrwNQypsfQHZ7IDMP2+Igp9GwiiXInqKGfFx7VsC7ToiDsC6sMgbRgawEkPNker57xWVWHCKIjuwBLO0+XZVU9b9hFxccLDrMwZwHXty4nYYMUTy5kD4IOHwU2kumW5cqWErwjg+ntEqxoZLRlZUY1wck/AsBbN7doN3matBs5bBmK6Hpud5sHF/OoKSOWwCUD8I0pyRsur0BLQYkJ2DuoAk/KDKfs6zyEVTpV6LX8wf+0XfDYhjgjLgVOxVTRsSTEVeNDN3N9tHVH6QMqhr+CpCreYTJCDO0QLXQZpDc2TKOSvgYlaMD0+ZYypSKVBkKraKqvM61Zm8/Ao2lz7IoBC+Xh7Gho5RqIWePcsVU5X33GcBB2+wqlzv45FouwyUDOyXs3AQG4c64AK7tL8HIo33GAqCNkX3GS0CvDwhx8sge/9CghEAZLRj1Ik0UNvWyy08OdPT+LHf0V154v6sLxr1n62rTA4uuWUNQkKcFovwYec6vrR8TIsIMgObJ/MUmOxepZLmMArc9/Sv36NnJDogcpYqqdKXT4EpNr1AJEkBQv81X2q2phXzkn5ZXaXDnriwFtirWn1GT7gFl2ERkwuF3T/Pj199rNneCPzKfD3uv3B9TFWjwKaZEjK3Ydj67PT9C4RrMyFgTu1Zi/kj+Zcdfg4f5Jb2vDX+wgWQytesTRMeCocon6oHW6LIkRZEvKC9lYg/iW9FE+L1Le6CMw4FkMddn1I/sEhDjsWg9+zn9FQu29YeOH79NNDgRph65WHdrIXpZC8xJu46A3JK6fl735ZdLkzgGya8i8vST7gbBRY7MFGmXNXavJ1kYrBA/ORn69GPyqiYXh9jEflMou7AoHl/g15LIM3xxWyZL3AhPak7COc6ECwovb8G2b4CCGbFnkJRwezGvo+c7JVz53IDilSmbHnn0tNV4lCdHn0KRiR0wRBE4BA9sooF7woUgqvRfphhEHAWqakKG85CXi7VPQ0b8iEMBXDqLNNhPqLWqb8xKN+NmnGiIPWEtkgknyoBi/p0+6rw3ayNbPUuA1P7xs2ctv0yAKkpX6cEm5EoAe9HdvWBAdQtdB6MX0lGzfvrNFU8XRpRmqtRBmUoabqWrJm68i4jHHPxwIm54VfTX7bGevbn6lpn77kVtHfGZGt7NDxrBWwKB0Xc8JSU0XsunpCsVbA7a//J86fPiZiooEnKN9pEOHzSAhvTo18lxAVnUdhc3/V5CM3c7koumUUawxOtdkYMwGYMwJofZXiLcZdXeWeFI6K7i5C7U/7mshNVN/iU9/VaG124yxlaQDeaBbfKeZaSjz/ht1SaMmN4UliPwYxOe1gh/eL7MTfG9SdxL99El+mZ0TtVOYbtN9ofK7uPHn1q+rhMgsJrnWqfLgWa9S1tT0aWGCDyXGD+ZIqDnJ8WkHcc347bGrcFgMejPRBdNqhSrUMEcgWqhkmlXSvDenGQcbGB4k3JBJJvx+8x2P5Sxeo8z90k9Q/XCi19ZdakghOji7Kq4GaLelHSo2DorXR7m4haT1/wYAmSzTaDkfthwBT5eDUQa44T80VIqmwf0kHlnrx4HP9P9Rb82vQnlMtRdgTZ9stUlC0vYz7sm+kR+2QDNu9rMfmhe0wbnpV+Sf2vpvBzmwiZcNxfphJ84ZTRrlfOSSXUNMloQpridP9+IJa9im+34MoTiHS/eRCu \ No newline at end of file diff --git a/lib/哔哩直播[官].js b/lib/哔哩直播[官].js new file mode 100644 index 0000000..95800a0 --- /dev/null +++ b/lib/哔哩直播[官].js @@ -0,0 +1 @@ +LyoqCiAqIOW9seinhlRWIOW8ueW5leaUr+aMgQogKiBodHRwczovL3QubWUvZm9uZ21pX29mZmljYWwvCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Gb25nTWkvUmVsZWFzZS90cmVlL21haW4vYXBrCiAqIOearuearuiZvkRNQm94IOW8ueW5leaUr+aMgQogKiDorr7nva4gPiDnqpflj6PpooTop4ggPiDlvIDlkK8KICogaHR0cHM6Ly90Lm1lL3BpcGl4aWF3ZXJ1bgogKiB2b2RfYXJlYTonYmlsaWxpdmVkYW5tdScKICogQ29va2ll6K6+572uCiAqIENvb2tpZeiOt+WPluaWueazlSBodHRwczovL2docHJveHkubmV0L2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9VbmRDb3Zlci9QeXJhbWlkU3RvcmUvbWFpbi9saXN0Lm1kCiAqIENvb2tpZeiuvue9ruaWueazlTE6IERSLVBZIOWQjuWPsOeuoeeQhueVjOmdogogKiBDTVPlkI7lj7DnrqHnkIYgPiDorr7nva7kuK3lv4MgPiDnjq/looPlj5jph48gPiB7ImJpbGlfY29va2llIjoiWFhYWFhYWCIsInZtaWQiOiJYWFhYWFgifSA+IOS/neWtmAogKiBDb29raWXorr7nva7mlrnms5UyOiDmiYvliqjmm7/mjaJDb29raWUKICog5bqV5LiL5Luj56CBIGhlYWRlcnPnmoQKICogIkNvb2tpZSI6IiRiaWxpX2Nvb2tpZSIKICog5omL5Yqo5pu/5o2i5Li6CiAqICJDb29raWUiOiLlsIbojrflj5bnmoRDb29raWXpu4/otLTlnKjov5kiCiAqLwoKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WTlOWTqeebtOaSrVvlrphdJywKICAgIGhvc3Q6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbScsCiAgICBob21lVXJsOiAnL3hsaXZlL3dlYi1pbnRlcmZhY2UvdjEvc2Vjb25kL2dldFVzZXJSZWNvbW1lbmQ/cGFnZT0xJnBhZ2Vfc2l6ZT0zMCZwbGF0Zm9ybT13ZWInLC8v55So5LqOIuWIhuexu+iOt+WPliLlkowi5o6o6I2Q6I635Y+WIgogICAgdXJsOiAnL3hsaXZlL3dlYi1pbnRlcmZhY2UvdjEvc2Vjb25kL2dldExpc3Q/cGxhdGZvcm09d2ViJnBhcmVudF9hcmVhX2lkPWZ5Y2xhc3MmYXJlYV9pZD1meWZpbHRlciZzb3J0X3R5cGU9b25saW5lJnBhZ2U9ZnlwYWdlJywKICAgIGNsYXNzX25hbWU6ICfnlJ/mtLsm572R5ri4JuaJi+a4uCbljZXmnLrmuLjmiI8m5aix5LmQJueUteWPsCbomZrmi5/kuLvmkq0m6IGK5aSp5a6kJuefpeivhibotZvkuosm5biu5oiR546pJuS6kuWKqOeOqeazlSbotK3niaknLAogICAgY2xhc3NfdXJsOiAnMTAmMiYzJjYmMSY1JjkmMTQmMTEmMTMmMzAxJjE1JjMwMCcsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgZmlsdGVyX3VybDogJ3t7ZmwuYXJlYX19JywKICAgIGZpbHRlcl9kZWY6IHsKICAgICAgICAxMDoge2FyZWE6ICc2MjQnfSwKICAgICAgICAyOiB7YXJlYTogJzg2J30sCiAgICAgICAgMzoge2FyZWE6ICczNSd9LAogICAgICAgIDY6IHthcmVhOiAnMjM2J30sCiAgICAgICAgMToge2FyZWE6ICcyMSd9LAogICAgICAgIDU6IHthcmVhOiAnMTkwJ30sCiAgICAgICAgOToge2FyZWE6ICc3NDQnfSwKICAgICAgICAxNDoge2FyZWE6ICc4MTgnfSwKICAgICAgICAxMToge2FyZWE6ICczNzYnfSwKICAgICAgICAxMzoge2FyZWE6ICc1NjInfSwKICAgICAgICAzMDE6IHthcmVhOiAnMzAxMDAwJ30sCiAgICAgICAgMTU6IHthcmVhOiAnJ30sCiAgICAgICAgMzAwOiB7YXJlYTogJzMwMDAwMCd9CiAgICB9LAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQTYxYVcyOWkyWlgrS3lVLzl5aHd1THJlcXJ2aVRpYzlYWjJxVEJSTmxBZVAycHEwMHFuTTlLU2pHVVV0UVdFd0dIT3pzVEVHWHpEZ093YmIyTnhCeWs4Wm5YMDVUL2tMc3c2dzExNkh5cnhaOGtNVjY1eDlXWmZ2KzliZTU2OUw3cVdYdi8zcjBoL1cvbWZwNWRMcTkydXJTNThzdlYvOTR4cjhqOFZqYktzUC8vL0w2bmMvckUwZmUyLy9ITDJ3SWhmMnovQ2ZwUjgvbWYwcXMxdnNObXFkeHRqeDhkem04N2kwK1R4bW5lWlkvazZlaCtkbXc2MnQ4U1B5dXl1QUJ1dTB6RUxEdWNIdDllazMxdTlZcGlyT1EzTmIwQjljK3ZGM1AvN3VreVhqbWZhVHZMTks2ektjRjZWam5BT3R2SEFpZGpPc25oUDlzN25WWXl5aitiTjNMejkvbzk3U1A3LzYrcWUvbVkycnR1clZIdUt0THR1OGhvR3RRbnR1OXZ2MWpPSnlJcDgyUmZoYTlDZHE1Q0JhV1c0a0oxbSsxNU54OVA2eUh2djFtMSs5TXVhL0x4djZyV3pFNmxaa1pZdHRxdjBIOVV0V0tDTE9CcXlTRitjNVZydFdTL2JwOTgzaENhdHZxTVV1NitpOC9tcGwvbXVBckRGVjRja0VHdzNON2o1YXlXSjZ1eXlidHE3M2VTS3B6QUd2M24vK21EY0dJbGxrR3dPMUZWOUFUOG5iSlZqTHpMdXdMblNDOXI3WmpmQkMzZXp1aWQwdHRWdWZUalZlRG9sQm5QVUdQUExnOXFxVWMra0ZXaHNwV0lRYzk4UndINzJsaCtmN3gxWXh5dVA3SW4rUDRTWG0wek96bTJDbGtkcWIyK1hJdGNZSHM1ZGs4UWg2VTV0WklpZEdPWSthay9oL2tHYXhFdjZ1SjRPVTVxMmNyQlJFODFhWlNmRllPMkZZSkRpS1JSOXhQbDJOZksvRmFwZld1TWlpMTdveS9ENlBYdkJqaWJYeUxOUEJSQ1VsR3pxQnZjcjZoSGU3YUE0NjRoUk5pblJTdThMdjF5dTNDcmRXZUVjWkFzUkh6Wkk1S0RxaTUvZnA5R0MxYzlrOGRNNUtNdFZPalVudm4vOUZtWUllV25jOHZHMDd2NUpIc3g3NGw3OTBoTTBmMUc0MCszMm9WVlp1aWVRZHJsZzdnbzB1WmJISDdrdjRxbjhoVzNIL3hMT2RIUHhCcVpqZHNCeWQ0UlBlaFR4ajBSdUlNTzVVKy9mZGYvNncrZzFrSVM4M1dTdGo3Ui9qTXlROU1pa2V6b3I3TVNUZW0vZmZmZnQrVFQxRWN5aGVBbS9EU0hvWkFSY0I0R29VY2dqTVpqK2gzdllTaDkvR2VSa2lIYmZ5cXBxREpFZjJKNUEvdkpubjRVdjFza2RQTGJiUy9EREVtajBXZTFCbWwwNkZ6MVorOW5yK3N6ZWdwK1NOTTN0UlYyRjUyc0JCdGQ4OExwY0RlMG1NeFllRU9INEExSkJOQmIya0hPYmxCMVV2SDFYQ2V3bXVRSm14V2hzcVRXU3hla25oaThHUVplT3N0UTdBaFp0eGpoNVdWZWdqRHJZR09abTQ1L2RGam1qbTl4QUgxeTc1VTVQdnAzazV6dUtLQm4zTE9zZFliTnNxWHVyODh4RTB0VUl4Q0ozYURJMU1JOCtpSTRpcFZlNHF4SEVIM2FRY3JPb1JTVXlDWXZOWEhmaXFFL3VyVDE4WnYzanpKVUkzR2RNY1RZQy9XT2FHNVdzdllWbHprclpqNWliMGNYZ0d3T0VZM3UwbStBK0pHbTg1eklZM1NNMzJwa29kcXh6RHdmM1V6TmN6eWtDV2JWWFQvS0R0U0J5M2U3RVlaKzVDZ3ZXUUdnb0Jxc2lOSy9uWTRsVlZDQVpKZFhaU1lVZFQ5S21WMWZpMDJJK3VSUDFJOUsrUWZZbmJwcmdFaGFLY3JVMkEzVENrYkhWd3laUm5iWWF6R1FKeUIrSEJIU0RPQ0lWNDRSeHlYbU9wUWJRRzBBTVlXQ0lsamxSQ0c4dEI2aEk3aG9rVTdPanZ3d05ldk9BbDFFZ2V3aktQWVo0ZjI4dnNORlZTa04ydGZQME9jbCtVdGpIM0Z5RmJqbTVaNlVqbE1JRTNQZ25CQ2d3c05nTEowU2R6c09mWW1adVk1YzRobEJ4TFplU3RvczJBWHlmNHIzNi85bUxsMi9lcjMvMFhRb2gvTGpvOXp5TTZnUlpsS0NwVFZSbFNVZlhvRkdmYlc2ejNNSU50ekFkUzcrbGp5QlZVb3dSaTJwZnNNR1BIWXY5WVhQYUEvVFhGK2loUzNkeVkvVHl3R2o5QnlVMm9TUXdPWVNkVzZRbEpTU2ZWbDIrK0JObW12ZW9oWXRET3MwTGRvVTBOSDhVNVNNTzBQRTlZc1cxWW82M3p5cXIrdlFFQ3M2V2tPY2p6OWhoNEFSR05iRElhc1NWV0w2bHpPbWdROFZhNEFwLytmUmcyaC92bVpKTzFjcXl1dUNWSVVGY1VSeklWZzd4aWcwMk04ckpqbGxiZXVzcXg2aldrdUJhYVFSL1JhOUdFZFZDVTUxWFpiS0NaUU1yMkticy9RSU1Pb0Rrc1FBQWRPd3o2U2NFY2hSbUViZ3Evckh3QmZZQTRINEJ5RjRrNERrWVZ6d01NeG9ZZnJNS0FqWGJCczFDUG9MR3RScFNON25EblJFeU9ENjN5UGV0dUFUUFBjb1VYVlpZRVBiVDhtL1p6WTRVdGdXVlNYNmtJNjdYdElCU2lPSVdmT2hjV1llOGpxalJEZ0tJV2tGS3J6WnJiamxRS2tDQ0w5QVlySDl2akQzVERRdW8zVzdNYnBLdXdwdG9na1pCaTBMVExHMks3azhLTjBRWWd6c294QnhRYmhHRFlEdkRzSlg4NEZZa2UrQWZZamovc3p0SVdzMVVETnpRYlVFaU9CaWxvRUdMb0RiVGM5SkhjQWJmRENzUkpXenMvUUxTR3RaR3pkdTdoei9ZQkVyaVBNTklzczIxMDdrOE1XS2VjakFCbWNidEVMblh1eEdYZm5xeXNxdDFIWU56czE2eDgwVzVuZEw5SmlhbHd3c3ZIY3RLeFFxaWFTVGNtbjZKeVVtSmJleUp4Q1ZWZzRBaGsvdUlUUDlGQkRsQVhnSktDYm90bG0raTZvS082d2lpZGlYVGhsUWp2WjJGYnJMYk95d2x3UDd0OVFoK1NSSi95SnBzVWJOS3ZKblg1QkdndER1b0FHV2IvMXM2SGJBcWZJUG5RMm9kOEZtZGhMVmNDcE51MWJvYjhvZnBQckJObER5MUh0THdrSmEyem92eHc0aWg1UHprd2dHNVlSa1lPOVJFZzRvUUtKeWY4a2xaamh2NUt5NUVEQjVrL0FNTGpsU3F2b0FlSU8yMDI2RVpZNWw0MkMyZ21DZER0OG5nR0NNdEdsdGdEM3l0WU8yT2VydU04Z1k4ZlZhdHo2UzM4L09md0pyUlFabGRWYk1BZ01uVy9iZTAvc0s1YW40ZUlsSnRUczVmOTZHVTN3ZXJhRlNTNDFrY0JvdW10M1FtN1RjeWtrRElUakFNVUFaQmtreFN3c2NPeEJzbWpsZFUvci8wRWoza0lrTXdVL3pTMWxCVDErR2hIT2NOd3g4QnUyc3VDTytQN3dGWEE5ckJLczMrakhpTFJFOG1oemRTNE8rOC9FSWFML09BaC9DQk96MjI1RTcvUzllMTJFNEFhM2RuU0RFUHZKclV4SS9ScFlhU3hSYUFZbFpLVFBDOWY4Y002SklkN0dmQkxpU2tLNVUxWjJRS2VrSEdzTHBxMXZRRm9lYk9ibm5VeEtIRUpqVVl1WkhiRVl2ZUE5eS9Gd1FhN3JUbTZVVXJJOVRyMG10QUpPVnp1SjZ0aHc1NzlkL0lCazRFa1lTbkV6bFVJREFxMVVhaVFnWndjaWNITzI3V1hyNy85aStxalBlVGs4L1ZYSzg3YTlPbzlySHl4OGtvK1BRRGNPUTgyU0RBL1hYMy8rWXZYSUNuL2lOcEo1NmxNYlZzYmFiTjNCM1dnOG9BY3BueTJNRE9WMENEUk0xdXN1OHVHZFhNUXd2UW1HZUJzTUJmd2hlaXk4eXByeG1ZMXJ0WkFVRDZjRlBFN0ZoM3dlTmJ4akk4MkhBY0Y2SGFCOUFDb1FMUkEwcGpkRkMrck14Y3ZLVHA0RlBEV3B2aFNHd090elF2SEo4N2E5UlBSZVhoazgwUGpqSlVhR0ZsU0hNVXh5Q1pkdmdiSlRMRjFEVUpjaHNMVzhHUmhmSUk5aDJuSURsc254azZndzFjYm9RY2tVM0JoazZoVkdmREdRT0d6UWJBUjlDeVV3ZXhNYXlHRnlJN2pWL3l4QStBcUlnMVpDVGtLMnVmNng3b0FSVHBhUFM0WHE1MmJvN0ttS1Q4OVhpWXYyOUhwNTFocExHOHJMSzYwajg4Z2duOTR6UzdDSUFGRS85eFJrbDdDanp4M2FSOGg5dGNoQW83TmVZbktZTGVITE5PMC9WQTd0MG94cUROTUNaS29yY3dVNVM0ZDR0OGJjS1F5c0FUYnZMYTVxamRpeDRBcUtiUGJ4ckFFRjlidU9Icnl1U20wbHFHUllhTnRlUkVDVmEyZW9QSjRHalIrVWVISlkrMU1OOTE1NFFsNFNXeWxJUU05V1BHRTFhZndiVXUzVnBMZGdteS9OTHY2REkxdzJCUm5XZmVRbkU0U2ZEU0hPYXR3RDg1eGxKMC9RSnNadXh0Mk9KOElRSFozQjRsbDdaYmxKcllMdEtrRXI4ZGE4TGVnY1NtTnpjK2ZuSEtlbkZETlRoSmtjNTAvNHRrSTBkQjJGQjZLV2p0NjVzMjI3M21hN2RsbGxNZy9za3hMaFltY3VzdndKcmgrd1V3Z0l0OWgxWmJESEhRSDVpdjBQODhLZ1YyZ0YzYkV6eUFTYUJZL2x0clZEYk5Camd0RThrWmNKNTF2MDNQdjZTblB3dUJFdElXelBMVG5OQWNjL015aUkrQVA2ejZNQWFJZ1dRS3pROWQ2aUhpY1hWY1pPSzZlZHVYTjIzOTk5UUphUkt1WUZkZEhWa2pWczRlZ1BPQTdZRE1mM1lvMEtnT2luM2c4Snc3V25VZUI1S3pQMmduejVFTVFWMDJQaHk3WWFZUzF3bFkraklzamxXbVZ4bUJ4M0YwRUNlanpXZ3BRQ0tES0p0ZklJMnNoWHROcm9vTTlxNlNPODN6a01nZGtodFg0WVBVSHJLVk9LSU9VREVKWE1QZ01OWkJDU2J0R1dnSERoZUdtK1hvTTdSaEwzZWxrQ1pCeXRwZGNibGxWR0Y2eGxZODA5dnhrQ0JMRFNmSkVUWWo3c1FnL0lscXI2VW5YTnBPYk04SDkrYWR2TVdyazlLbC9DdDI1Ykp6eCtEYWUzUkdZRncySVozMUJRNUJ5VFl5QlQwUnhBRjA1YUV0c3JRa3RPVlhHLzBhcnFEdGRwT1Q2WmovR3NtT0k4aGRmb0c0bG9LazJDWHpFVTZkc21KbG5JMTFZd0NBdFhyME9NZzN6Y0ZHODJjeTJ1OGR1VHpIaERGSmxsU1BZbEJ5UEhYY1RIaGM5amFISGF1VFViY1lMd0RYbW9LcHVNMzFlbWpBNzhzTzkwNTNranVYMTZ2ZC9lTEg2L3BzWDlqL1d2a2Z3SnJkZkE3c1MxS285dEhmSVhFRjNndlh6LzBZQTJWTS9zZktab1JZYkpCb2F1bkcrclgxSXF1bWh4Wk1Ka1FNMWQ0QnBTd3IyS21kZGdraFBpNU9VYnBVOEJxV2dKaS9ld2hoV09JeGt2RXlRS3Q2SDJKaVRDaitzWUlCMFhkakMvSnNYUC92aC9iK2pqM3owSm5XcWZ1ZGl3T0Zxd2lUVG14RnNjSW5VbmI0QUNHaUYxTjc4anV2MEF6YnVnT2F4Q2hkcTVSNXlPMmxUeXVIcFRIL1o1M254ZlN0ZjgrRDhaSXVaTGJ1VGpHZWhIME5GcEQxazMvV21Ebmc1eWFKSnd3VlFyUnA4Z2kwUGUvSXVwb0hKUTY3VlpmakFoTmtkR3NUQllYcVYyT0FRUkI1M1dPY0lXTmJLNDFrUWJjMm1WL0ppRUpNUnZBZ2d3WlhqTEd1dEEydXB3SkZ6dHZnK3lVQXFpclo2c3RubnBSNVFpR3lsUWVjaHV4T3NuaDd1K0RERkNmZUVzMkFVaFEyTUNBSFJwN2dWT29SeFdUUWhON2YxVlpoZThkcy8vZHQzZi9wdlZXM2swSmdYVGtBTjJEMTN1WVc5QXBHNGN0d0Q2a0s4SXJEWlBtV3RJY1R1M1EvL3NmYjl1eit2cWp3TmtsWExTTVVxOUZqNmdzZDE3MEFPTkVvRjJSN2E4aG92UUQya1JmM0ZxN2V2MzJGMFNMbm5uMlM2d3d0MS9IU0JLR201MGJZSkszckRNb29tZ3o3MURjL3lNMzNEVXp5QXdudjNMYW5PQU4zMTFQdzVES3l0dmdVcmFEd1RQL2NJMExLWW1rRUYvaHBYNzE0d3dzNlo3dGtDaTJiN2F5QmtvT1VGNDljS0VRTDJxZXJVS1c3WE0xMHlnV1p0WlBuWmhjeW9jMjYvNGZ6UXBqMkFFYzIrK3ViSFQvYzlsY1ZtdjhZeTJKVFEzaStSWkoyNkdPeUxQTjUyRTd6a2tTaGZ4MDhTREhvZTBXRzFQVVJCd3BMMmQyVW5hQ0IrbW1UMVowdCtLalhHYWF1S3NwSElPeUJEMWpyQWVCQVN2VS93eHk0d29uV0ZOOWVHMHZMdVovcEFUdFRHNGp3SDZvU05rMndTRVZtOGh5YXkyZ2JpdlEyV2pyR00rb2dvUUlDV24xU2dYV2FOTTdPSExpRmZRTWp3Rml2My85YmhteUVaR2VFRHBKQmhBWnRJZytTODN2N0VxM0ZtbTR0NDgybC9wRER6d0RQZGJzNUlBUGpFN0t2VThmbnBad0MySWxrd2s4MU5EYk96VlRTcmx0RHRmYWFPeTVIWFJLeUpEejNvRjlGQW0raTJmS3BpMXJqVWdwNnBTWVVlQ0NJR2ZRNGtEczVPU2Q0K1dIT2E2VGVGMHpQb0JUUHgrUFNJWUdGd29vMnlSK0lteDNmYnNxVHZRZzExNCsxNnJycUlORURCc0M1cDVtQnNGOUdpcy9PRGo1OGdBbVI2by8veEUwU1RUcnZrajUvd1RyZno0LzhCRGUycjJBY3JBQUE9JywKICAgIGRldGFpbFVybDogJ2h0dHBzOi8vbGl2ZS5iaWxpYmlsaS5jb20vZnlpZCcsLy/kuoznuqfor6bmg4Xmi7zmjqXpk77mjqUoanNvbuagvOW8j+eUqCkKICAgIC8vIGRldGFpbFVybDonaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD1meWlkJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJywvL+S6jOe6p+ivpuaDheaLvOaOpemTvuaOpShqc29u5qC85byP55SoKQogICAgLy8gc2VhcmNoVXJsOicveC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP19fcmVmcmVzaF9fPXRydWUmcGFnZT1meXBhZ2UmcGFnZV9zaXplPTQyJm9yZGVyPW9ubGluZSZwbGF0Zm9ybT1wYyZoaWdobGlnaHQ9MSZzaW5nbGVfY29sdW1uPTAma2V5d29yZD0qKiZzZWFyY2hfdHlwZT1saXZlJmR5bmFtaWNfb2Zmc2V0PTAmcHJlbG9hZD10cnVlJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/c2VhcmNoX3R5cGU9bGl2ZSZrZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAiVXNlci1BZ2VudCI6ICJQQ19VQSIsCiAgICAgICAgIlJlZmVyZXIiOiAiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tIiwKICAgICAgICAvLyAiQ29va2llIjoiJGJpbGlfY29va2llIgogICAgICAgICJDb29raWUiOiAiaHR0cHM6Ly9naHByb3h5Lm5ldC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRm9uZ01pL0NhdFZvZFNwaWRlci9tYWluL3R4dC9jb29raWUudHh0IgogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBsaW1pdDogOCwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICAvLyBwbGF5X2pzb246W3tyZTonKicsIGpzb246e2p4OjAsIHBhcnNlOjEsaGVhZGVyOkpTT04uc3RyaW5naWZ5KHsidXNlci1hZ2VudCI6Ik1vemlsbGEvNS4wIChMaW51eDsgVTsgQW5kcm9pZCA5OyB6aC1DTjsgTUkgOSBCdWlsZC9QS1ExLjE4MTEyMS4wMDEpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS81Ny4wLjI5ODcuMTA4IFVDQnJvd3Nlci8xMi41LjUuMTAzNSBNb2JpbGUgU2FmYXJpLzUzNy4zNiJ9KX19XSwKICAgIC8vIHBsYXlfanNvbjpbe3JlOicqJywganNvbjp7ang6MCwgcGFyc2U6MSxoZWFkZXI6SlNPTi5zdHJpbmdpZnkoeyJ1c2VyLWFnZW50IjoidWNfdWEifSl9fV0sCiAgICAvLyBwbGF5X2pzb246MCwKICAgIGxhenk6IGBqczoKICAgICAgICBsZXQgaWRzID0gaW5wdXQuc3BsaXQoJ18nKTsKICAgICAgICBsZXQgZGFuID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YxL2RtL2xpc3Quc28/b2lkPScgKyBpZHNbMV07CiAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgIGxldCBpdXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjEvUm9vbS9wbGF5VXJsP2NpZD0nICsgaWRzWzFdICsgJyYnICsgaWRzWzBdOwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpdXJsKTsKICAgICAgICBsZXQgalJvb3QgPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgIGxldCBqbyA9IGpSb290WydkYXRhJ107CiAgICAgICAgbGV0IGphID0gam9bJ2R1cmwnXTsKICAgICAgICBsZXQgcHVybCA9ICcnOwogICAgICAgIGlmIChqYS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHB1cmwgPSBqYVswXVsndXJsJ10KICAgICAgICB9CiAgICAgICAgcmVzdWx0WydwYXJzZSddID0gMDsKICAgICAgICByZXN1bHRbJ3BsYXlVcmwnXSA9ICcnOwogICAgICAgIHJlc3VsdFsndXJsJ10gPSB1bmVzY2FwZShwdXJsKTsKICAgICAgICByZXN1bHRbJ2hlYWRlciddID0gewogICAgICAgICAgICBSZWZlcmVyOiAnaHR0cHM6Ly9saXZlLmJpbGliaWxpLmNvbScsCiAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84Ni4wLjQyNDAuMTk4IFNhZmFyaS81MzcuMzYnCiAgICAgICAgfTsKICAgICAgICByZXN1bHRbJ2Rhbm1ha3UnXSA9IGRhbjsKICAgICAgICBpZiAoL2g1Ly50ZXN0KGlkc1swXSkpIHsKICAgICAgICAgICAgcmVzdWx0Wydjb250ZW50VHlwZSddID0gJyc7CiAgICAgICAgICAgIGlucHV0ID0gcmVzdWx0CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzdWx0Wydjb250ZW50VHlwZSddID0gJ3ZpZGVvL3gtZmx2JzsKICAgICAgICAgICAgaW5wdXQgPSByZXN1bHQKICAgICAgICB9CiAgICBgLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAogICAgLy8g5LiA57qnOidqc29uOmRhdGEubGlzdDt0aXRsZTtzeXN0ZW1fY292ZXI7dW5hbWU7cm9vbWlkJywKICAgIOS4gOe6pzogYGpzOgogICAgICAgIHZhciBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBodG1sID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLmxpc3Q7CiAgICAgICAgaHRtbC5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgbGV0IHBpYyA9IGl0LnN5c3RlbV9jb3ZlcjsKICAgICAgICAgICAgaWYgKHBpYy5zdGFydHNXaXRoKCcvJykpIHsKICAgICAgICAgICAgICAgIHBpYyA9IHVybGpvaW4yKGlucHV0LCBwaWMpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aXRsZSwKICAgICAgICAgICAgICAgIGltZzogcGljLAogICAgICAgICAgICAgICAgZGVzYzogJ/CfkYEnICsgaXQud2F0Y2hlZF9zaG93LnRleHRfc21hbGwgKyAnICDwn4aZJyArIGl0LnVuYW1lLAogICAgICAgICAgICAgICAgdXJsOiBpdC5yb29taWQKICAgICAgICAgICAgfSkKICAgICAgICB9KTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICBgLAogICAgLy8g5LqM57qnOicqJywKICAgIOS6jOe6pzogImpzOmxldCBhaWQ9aW5wdXQubWF0Y2goL1xcLyhcXGQrKS8pWzFdO2xvZyhhaWQpO2xldCBodG1sPXJlcXVlc3QoJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjEvUm9vbS9nZXRfaW5mbz9yb29tX2lkPScrYWlkKTtsZXQgam89SlNPTi5wYXJzZShodG1sKS5kYXRhO2xldCB0aXRsZT1qb1sndGl0bGUnXTtsZXQgcGljPWpvWydrZXlmcmFtZSddO2xldCBkZXNjPWpvWydkZXNjcmlwdGlvbiddO2xldCBkaXJlPWpvWyd1aWQnXTtsZXQgdHlwZU5hbWU9am9bJ2FyZWFfbmFtZSddO2xldCByZW1hcms9J+WcqOe6v+S6uuaVsDonK2pvWydvbmxpbmUnXTtsZXQgdm9kPXt2b2RfaWQ6YWlkLHZvZF9uYW1lOnRpdGxlLHZvZF9waWM6cGljLHR5cGVfbmFtZTp0eXBlTmFtZSx2b2RfYXJlYTonYmlsaWxpdmVkYW5tdScsdm9kX3JlbWFya3M6cmVtYXJrLHZvZF9hY3Rvcjon55u05pKt6Ze0aWQtJythaWQsdm9kX2RpcmVjdG9yOmRpcmUsdm9kX2NvbnRlbnQ6ZGVzY307dm9kWyd2b2RfcGxheV9mcm9tJ109J0Lnq5knO3ZvZFsndm9kX3BsYXlfdXJsJ109J2Zsdue6v+i3r+WOn+eUuyRwbGF0Zm9ybT13ZWImcXVhbGl0eT00XycrYWlkKycjZmx257q/6Lev6auY5riFJHBsYXRmb3JtPXdlYiZxdWFsaXR5PTNfJythaWQrJyNoNee6v+i3r+WOn+eUuyRwbGF0Zm9ybT1oNSZxdWFsaXR5PTRfJythaWQrJyNoNee6v+i3r+mrmOa4hSRwbGF0Zm9ybT1oNSZxdWFsaXR5PTNfJythaWQ7Vk9EPXZvZDsiLAogICAgLy8g5pCc57SiOidqc29uOmRhdGEucmVzdWx0LmxpdmVfcm9vbTt0aXRsZTtjb3Zlcjt1bmFtZTtyb29taWQnLAogICAg5pCc57SiOiBganM6bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7bGV0IG1zZz1KU09OLnBhcnNlKGh0bWwpLm1lc3NhZ2U7aWYobXNnIT09IjAiKXtWT0RTPVt7dm9kX25hbWU6S0VZKyLinqIiK21zZyx2b2RfaWQ6Im5vX2RhdGEiLHZvZF9yZW1hcmtzOiLliKvngrks57y65bCRYmlsaV9jb29raWUiLHZvZF9waWM6Imh0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2hqZGhueC9kcl9weS9tYWluLzQwNC5qcGcifV19ZWxzZXtsZXQgdmlkZW9zPVtdO2xldCB2b2RMaXN0PUpTT04ucGFyc2UoaHRtbCkuZGF0YS5yZXN1bHQubGl2ZV9yb29tO3ZvZExpc3QuZm9yRWFjaChmdW5jdGlvbih2b2Qpe2xldCBhaWQ9dm9kWyJyb29taWQiXTtsZXQgdGl0bGU9IuebtOaSremXtO+8miIrdm9kWyJ0aXRsZSJdLnJlcGxhY2UoXCc8ZW0gY2xhc3M9ImtleXdvcmQiPlwnLCIiKS5yZXBsYWNlKCI8L2VtPiIsIiIpO2xldCBpbWc9Imh0dHBzOiIrdm9kWyJ1c2VyX2NvdmVyIl07bGV0IHJlbWFyaz12b2RbIndhdGNoZWRfc2hvdyJdWyJ0ZXh0X3NtYWxsIl0rIiAgIit2b2RbInVuYW1lIl07dmlkZW9zLnB1c2goe3ZvZF9pZDphaWQsdm9kX25hbWU6dGl0bGUsdm9kX3BpYzppbWcsdm9kX3JlbWFya3M6cmVtYXJrfSl9KTtWT0RTPXZpZGVvc31gLAogICAgLy8g6aKE5aSE55CGOidpZihydWxlX2ZldGNoX3BhcmFtcy5oZWFkZXJzLkNvb2tpZS5zdGFydHNXaXRoKCJodHRwIikpe3J1bGVfZmV0Y2hfcGFyYW1zLmhlYWRlcnMuQ29va2llPWZldGNoKHJ1bGVfZmV0Y2hfcGFyYW1zLmhlYWRlcnMuQ29va2llKTtzZXRJdGVtKFJVTEVfQ0ssY29va2llKX07bG9nKHJ1bGVfZmV0Y2hfcGFyYW1zLmhlYWRlcnMuQ29va2llKScsCn0= \ No newline at end of file diff --git a/lib/哔嘀影视.js b/lib/哔嘀影视.js new file mode 100644 index 0000000..de6ac1a --- /dev/null +++ b/lib/哔嘀影视.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/哔嘀影视[优].js b/lib/哔嘀影视[优].js new file mode 100644 index 0000000..f7dfe34 --- /dev/null +++ b/lib/哔嘀影视[优].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/5VY63PaVhb/nr9C6+6ACTYCiaddbweEeIPMyxjSTEZIAgkEEpJAiIxnPN1N+pikSTfZpk3T6bTTNtlt0iSzbfPYpPlnLD8+9V/YK4l3nHZXH2zde37nnN8999xzD4JhSL/2if70rydf/wyxiiLKGzCsqqqrTmuyq8PAZwakBEl9noG2oItnIPAonMIzG5Bdv3FT/2xff/n4+O7lcwcvPjtvXzPlrCArQDxvTGsBY4ogjhEwbGBS8oZdlLiuspogiiXHJs8ogEGH35KYXp+Rrem1iyxD0owkb1xcKcuMtB5uMl1lZWMbu1AO7+05Ng0QoGYoujqkQrGrsH7t4dHNe0cvP9G/3P/txe23SYiVmMbWu/ZV11nHu/a/HL337PDBt8evvtAvfQc7znnOb1o0VqwVHT/59/HL+/qdR0Ad2jKev0ArkBMyWU5XAPUlHqwSlmGS5+GGJpJN5h1FE5mthkbxpCxPkX8EbGgNjlcYaUHBwF+82OBd/HBv7zQtmyklJYbc27PeNYaUJu91bW/v3B+7PG83XU4ZLlGxBhcs8elszFnjbeL59xgtmAUmE145GZ48TqSCepKlbKEUR5HKoE9xWLOViXYrMMtEEkKebaR3hL6khNVRmo+km4VqnmvulGsDtkQRmhsL99yKNMy2Q54Q5iHIUtmPeX0elAk1Qg2O6hI7IYLoNIh8tq4GR3xLawt11V3jPP3mKBEdKjINM4VaLlip7DbqaBRTGH80gdXQukJGg+3abo0NetulaMeJ9sK+bNAv5bNEtc13k/1sJ9IoaDG0wKZ3hvwgkKaxekel8UglLY5yiEj0d2O7tVSGzpV6pNxPyrTKtALRRq8fi6YRlGSpAko0CMG9M2qlhoF4iYspXH6nHQwEygSBBnqjHFsVevFAJkEyJU0IyO1MOl7cYZTkLtypl+hIsKLxaDzIlkawzOYHNVlstytRSW1FtpH8sOQcsKisUFlMJtCw2goFQ+5eXdhB5Wacr2czIX9RIZ3NGhrP5HmRpPkGWS3wFTRCBxOdTKMlsb3YoFrJqTG2wqDNQcpHhkUiK4NQbyc90nCnT1B+me7skBIczymJOk4VMhrbbg2RaDA9qA3VrAdpNWtyV4OTlV2l28swGgrHxB0J1zr5uuxuBGUsGxy2yhgu1vDuMIJQKUarEqXMoF7NNRJlWvRUBxGkSOCSxiAllZNScCHJIhG+FHVqHiyQjokaWlWDiV3Ky1fTagYv9tvutBJASgFnkS/F5RQbidLuYLsoJ3C434ul4jxSG0VGTk9P64R3kj7EV8CbrWSoVsaFIVeE03i7ParhsNyhC9HsQKaILF+mG5lUpoWBORXZjlPhZCVfhKW2FIhjUk9sF9NNPDhUM0xKKzhTQwYLkAMxj6PwwAcKnh9Gk95aJeHbdlOEv1NUggwME5Vuo1TbpeOcLKXjjWgIG9W5dFpSqZjYqe1q2VRLqvRrXJf2I7Av7RODOSeCwJFsOhD28eFoP5zxc6wvyKoxqrmLSLV+OE3HgjlvUhI6cNlP1kZYGGAzfHlEhStu3sPIDKjgYiHMbneabl8pgrG4ZyiheZJxC20PvqPWQQbR28wuzvFgL+P13WCr2NpNFrbLlbKc8OX4vpR27vbTg+1GPZ+opNLOqM9NlwN0OxNLY3GMdSIeusOnAqU8qw5825VRM+YcwEhPycnbDAvL3XwlkxqJMO3cdrLOWN3H8/F6F450I+Gmms2HOn014U6VmhqJF5PZZH6bEDGljYLgup3hEpbMu4l8iRPUMp5MIAM1Wy2Sea3m1nJ5KtuLRcU+mccKYFils/4UJhKVAsb6oh08mSSSlJuNRDxYp51NEkLezQ4jbizeJpJM0xhg5qBaNAYjDI8nwCDfbHrZUTGBRGkYJ2M9JxaTqkkB5ZpDOhLyh4Qe5WMagUhguAtSZIRLuWI6FOKcGipTrUGglqT4Nj8khv1QL7OdTedYYthDBAQPxCWyVS3JpNJbmmsocDQ3GDXUcFWpqUVkWAUFcmtrsSzTTGNjfCUbjxsM+CGoqqDm29cgoyaDgdu+twbDh3f2Dz99dHTzZ3BbTxU8pyp4FhXA3a5/eHeqg0x0aKHbZPvksp7+0b3DFz9M4egbXKxBxjVhzIN/WwdPH+hfvNS/vXvy+WUgqmtAIEjg0t+y2APhwfO78zS8E7tNsttUSK7Vn1m3+D99qF97NK/im6h0mFPg9+8e/frxPNw/gbNkdxEO0Le+O/nqnwbahO/N7wpZN3ojj2Hzs4f69e/160Yvon9w+ejxf44efHGy/6GFNq/hC12yYxid3x7bUuhtVkht0yDYpmuzTWnbppTs8+ati9tt89gQG2rz2nw2/1gug5uZYsvje98cwGfPjm/2BYy1IGR5QZfu6Y/3D6/fOfrpGwvd63NUu2iqbEDuZfirH072v5qHT7q6uQSGYfusw7MDYlkikszgoM8bEzKeJYjZBo7F430QeVK7IJKSDGgrUp+xZnlyBNLqzy2jDS0qoN1rrq46INDZXTxzZo4BdPzxE/3ap5DI0ZD+7JfjX2/o7z+fyo0O1ZBsQakikXOZTlYn3Wq2eqFcyDgmTajRNlvY1Xdpp2PTbDQdm3O+KKErCzzj4oXmKkAC2etE9Jc39A+vHt765eTWT6fzofqSBIJR4jpMluN5TgYeo6TCuLqCuvpGf69pzXs3zMqK5AWWjBU4Ifu6Hfx9TedNxg3dBc8n+7ePX72vP3xmSEDfffz1lWIivI74/PqND/SnV357ceXo5leHH1wHa/X4D57+S39w6/ij9w5e3jl4+lx/ePnk798tsuvQvgQps4AgJmmiIqSKrmzUZzmebfBUxnQpV4IZLkX46OsfD159aTHQ91+c/OOV/vx74BBFLAZH978HxIyov7x/ePUbg8qja/rlz6c2VJYDP4tWx2RcPANqEQu9DaGIYy6tjWfGFxRkEMrxeBajvRmzGXZiWBEygspIGAmyzVjDYrTHqLmAGxFqM9p8dIwIlJVGcJyzE8tyvy5bsXKvQR6/Y8kI0DIMMPS8qTBumjOGq2+yb27EmkFibTkSAg3O5VTPGLpwLLK2AAJNKA1IzeHAjGu7TcmBWcSMSJzOFmw1IDwduihOZBlJYYbK/5YbC8Ys/Lw9gAZ2yqI425LFHVnSXTbNc13GOKXmL1dwuGBz4h1l69RDZiBsctMULpMyROCEmjLwfyG95wmZDhazf57IqT/Vp6w8AU8QDYT8SMAbChlM/P6ALxQJh4MhP4758EAE8eN4MBgLhULeGOKLebFIxIt6sZA/4PX4sWjU58EjYB7FY+5oIBA2KXsCITTksy+eSP3aJ8c/Pzl++OTw8XvGubNK4JVnJ5euHt3+GwTK60IgwfV2eim21utw0aRCugAKnS9G0HxkgHAp52WR55SyaRkIXaDvZoZEY9W+ZndAf9ragtY90DumxASa8+fc511gQzrgQtkwRdbgjeVx7GEBYLiWGFkEbiermOBcEgPuNIpZtU/2x424KKEDXC98WwEH7qLKKWxicrWatx8wR3MSQykbUIPkZWbvjbwM9/NJwjWgGQeuS/F9mpFX7YY/u2O5wv0O//+bltl8zLZhYYMBRUCWIhVO6C5q/EGI5yos1xX7yvRz1uRpDY2+ZWHK7J+my1gqUWaD4Z7Zn5SjPce44+A6HFid3xrRQt9spKzFgyw8/Pje8dXr+uVL+o/Pxq3StSs6yPsfbx+8vGrqWBDQ5bgkQV2nSImWN13Gv3WQ4O3Ns5tcp2mzGUm+LksUGJ8dd0IHT/ePnt9dULTZ5jRZ1GYrgXJoGTB0xfEEabMZ38omdp5fMe3MArVifvxb2YBWQAbyEIuM9VwdZd1jva/MArUC7E+w6x16newrAjTxOY8DiUUZwM1NYKluQJENpreKOqbmZ5Mex+t+wN4r5mdBaOUtWesKogwKp7XgukBrrysoZF22mBkYqxk1jIObm0XngaACKybyLaOvXDeGBu4t0K9B5Mp832l1twtBh8xX96aLXue6RlFar4PcbdtsZhRn0X9NvrQXe/8FnyMTdqYVAAA= \ No newline at end of file diff --git a/lib/嘀哩嘀哩.js b/lib/嘀哩嘀哩.js new file mode 100644 index 0000000..6d7ef34 --- /dev/null +++ b/lib/嘀哩嘀哩.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/5WTzXLTMBDHz8lT6MDUckikfjBMx8Fw4UIP9FA6HAiTkW0lVpAlI8n5KM0MD8CNCxcOnIBX6IWXoeU1kGQH0iZhBs3YsrT//e2uvDpNJjQ1iGjNxgIWVUIEKualkujn1YdfV1+74F0b2GFIMjR0biIQZGza6+mCcL6398JuBd32Muy3p0QBVXEK4sbl5tuXm88/rIPnWZXnMMOp3bv+9P764/f63ZhyqR0+N6aMMJ7NZihjnLnn8AilsmhkleJWhZnI6ByVeYmnMsM6lzPMMjxapNzWgksypnbhJpSbgje+mhKV5udbCd607ohnGe501t09e1gSpV0JSJBpQlSPGVpowFk0NnA/jLiBx2Gf1Gfj5lzRUR/DwSC7H65oLU4uFhG4N9HIyDOjmBhDGIL4sT27VotTA5zQHuXJ2elz5CNCRd9WVBvIRFmZEBXEpDnECpScLKgaos6TGNpX+AiHrw5e2z9Sg+x5WY7DIfvpdtkIQL+mIlWL0oA4BsFBEPrYrVpfCapTUlJol6HdXgLKNQVbXQ93uCZE04cPntJUZjXHg9qOgQeoOKqOMTKuIm9rumY1XOqJzBYWuCrcyfobIs5sPKtyYqRLzgwMBiLYonQRz32KouL8tn0kFYArHJCjGns3KU9ygthPyP64At6J5IYr0QuoyPRLZnIY+HqDcBvRjb+52SonkglXbdcxtuB9L0qhJaeIyzFsnHcoE0XJm03Tsr175Vvsz0VeH5N5BPa7G9v+Uq5quLx0601Rc3H2bweuM2v6y7fRv6MbyvkzfTL37bAjk/8K73qytbSo5W8Fh7N2DQUAAA== \ No newline at end of file diff --git a/lib/在线之家.js b/lib/在线之家.js new file mode 100644 index 0000000..f0479b8 --- /dev/null +++ b/lib/在线之家.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/3VWW2/byBV+dn4FnyypskSRFHWx1igo2bpY97vkIMiOxKFIaURSwyFF0RHQl11ssX1IgaLYItuHFkWal3ZRoOjFRTd/Jo43/6JDSrLjbHcAUTPn8p1z5pw5M0t7AvT4h9e/vX31PR9/d/Oru5s/x2VoTZkzJhSXAQGncBUWIsfHPeiSXC53T+MOtHsKv6eEck8cgBlsI0hRrp8wdBCNIHjKhG6/fXN38/bdv7++/es/QicB6/2bP7z//VvK23uxJ7MsoxoWOQ2phJjWKcuu1+u453rzuKURuBcKJJgfiYD41FjuRWyMqATrGLKlGmtW2UwRsCxlo2iIQBxXyRLtJXcUMPEd5U5Y9v03392+fH378ru737y5/erLu7/95+4vrz784pcfSz/fwceurxUUBxiC7XY3n2wOs8AeXfhD2ZhgBukk4GwgwNvtI+sUq5y0KtJhRPmxwDugn++VWXGaifJ5jQwEFsmlMpY6Q04fzoR+oZooTggut/laf4TlcrM4gFy7V1qYdbHG6wlke+Wo65adlt2BvNrLZ6rNTVRU6tms6KbTRtaTdLnVvxpxSHCqpVTTwAV7wgsr1ah2+2WFJxfgUmgVzmkkMyXbFAR3WZv2tM5ITRTFUn2hVqv9fl905Om52yuNzxs4y2/aeU/qzMS6RbKLxmw8tjwxoXfTF2ZFcvO8AmVp7FaBpFxaybyYIrLtjF3vYpqftBqu4DnieriuT2vplFtWJHdxXkmko+NMbz1vNxyuIyZ1Kd2W9bZCSul8p1riLga6ASFJt1XYMoYkdakr7aQzixayaunCnBV4o5FZtjZK3Z2dZ3taYqO022wBq5yRLLN8pUCMpORCT4ZusjQuNgqO3OdTFbYwn9XGaY213HVxHR1epWWVWxuzOpddOWpT8zpq6crr2CyeeXZeq3ckgfBzAw6LnskqtnexTNoDEwz5MkiiVrvOeS2thktyX+gPQAobZnoJEW5zHWioYrTgWBOuMSgqorJarZowqastrtaAnmGlR6skxgMFpQajUraKok51JY5EaDVamdEcFkcLNXEBRFHMRglRF42r80TN1KURENarYrLEbybDvFLP6CYmmXwNopoLkFRWp5wAu00gd5sI1J0V9EpZEWXTY+QpleR07giLUr5fV/vdaCPVby5GBVjWM6VW26xGi1l4Psum5KY3dCtdV0IrmuJ2Fy2vSqjaJz1kX3m1emIwvFptGqWB2bKUrietUBWwBUVIDKYLZ5Wwi5W+jVSVI9JCSy9RRvFWAr/uTwvjOSg6bVKpJ0pX0WxfGZtdNMuyTm+4RpbaQkgwJKHcHo8zWXvAuei8J60uWVWVl9m2vR5nCp4jL9RVQ23NsFFkm1GxqKsN60Ktc/MhTLDl6VDIgEFNQs0aHPE1KDfbrY4Arhz6S2hRdjlmzaY7pofw7OyhJxEweQ7dKbLloJ396V+3X3x9999f37365sUPb7/48Oqf726Cxd3vvr+9eb3j7LV9VQyXhkM1nz5SDZ0woY+1/fUjgGf39t+//Pbu7388XT7q2zsit++nOwkmZKO4RWwtRlsf0ixyfIy0HDg+DlpxLo6At0EGkI+P/f4dM7A203SAcnFTm8YIbeP79k41VAyVQ8OFQIbYOt23dX+E+hbEMWkGdRKiVuvNfKV28bwv7TX2foc6UIEYYipSbnZ7O9529+e7csp8PrdOnxwd+VeH35Tp1XHZbTbiJsAWDGO4sqFFwppu2iQSXwIyVcMsZkwENrQLx3/287Mw/UQ+YyNPuWeR3B6IdmeK48PF6fRAVbCxPJD9uU/XFCYcEKA+xRuTMGf0AuRCERro0dHRDsfW6cUITBimywglbxmILMj8X1X+J1QnwIKp5DmcGvIOJwDaO8AuBTvzYmkm2Tjxow34O5ggcB8Io8eWWaTpUHjhf5PBV9wr+5EdtP2oNQWvNxThsJUU6eSjNB7GRxk+8sfj9N5n92TP/TStO6oFpzEF0hzFljROvyx04GgzEFzcn4oE9zkVmWLDsmL72/1TIfomCcqLRgGWDwK2OcPU35imU1Ebw9g+Oivk3+E/Cs7f6KNtUB5HCBK6F5aNiMPTbQm251BYwfsl4D0PmNdBcW1zQXXda/sH53GZhq5DTPQBNcqEtqFI8EC6V/ITT5V8WtwykUbCISqCoQN9gAfXCFya/iMsFFAUAzNhn6xRWsJN5OjkswArjqA+I2ou4GjUZMLl91k/CjCiZ0yXYE2fBbVeUAEu+LUXOFzRSdgHeao9o5q7WQDBPTvxv4mgPIP6vK/AHfTcPWUSuywETyDfVNyyJ1ZgKkxdPGHCAXHnHxOjeOkIw+78i36q8JOygTvpyM5U4DQ1fHBqdw4eDsjuLH1+8mT7P0WRFOXZCgAA \ No newline at end of file diff --git a/lib/夕云影视.js b/lib/夕云影视.js new file mode 100644 index 0000000..8d268da --- /dev/null +++ b/lib/夕云影视.js @@ -0,0 +1 @@ +dmFyIHJ1bGU9ewogIHRpdGxlOiAi5aSV5LqRIiwKICBob3N0OiAiaHR0cHM6Ly93d3cueHl4eS5saXZlIiwKICB1cmw6ICIvaW5kZXgucGhwL3ZvZC9zaG93ZnlmaWx0ZXIuaHRtbCIsCiAgc2VhcmNoVXJsOiAiL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwiLAogIHNlYXJjaGFibGU6IDIsCiAgcXVpY2tTZWFyY2g6IDAsCiAgZmlsdGVyYWJsZTogMSwKICBmaWx0ZXI6ICJINHNJQUFBQUFBQUFBKzJZVzA4YlZ4U0YvOHM4SS9tTURUYk9XKzczK3oxVkh0elVhbEVwbFlCV1FsR2tKQVNDdVRaUllwZExLRlV4aGdpd1NYTXBwaloveGpOai80dU9NelA3N0xPTUtoN2FQTzNIV2QrZWMxbm5uSmxaODlDS0srdklWdyt0NzdNajFoSExtUmozZHZhc0xtc2c4ME9XWC8rYzZmOHArN2x3b0MyUHJiZEcxOXV5ZnhIcit5Ym1OL0tvSzJEdTFscWp2dUxsbmpQYzNVdTQ4ZmRLYzd0aTRrU0tzRFAyc2JHWEI2enY5cDdVV3d0MXdBbmQ5OFN2aldvT2NEY2IyblJ6WWhsd2orNTdkdHlaZXdjNHFlOSt1dW5sWDVnNHp2RG9wUHQwQWJDZW1QdmtGL2N4VEN6T0pqWlo5bXB2QWFjSk55c3ovdHhnYU5weloveGxhMzREc0sxeDhibXp1d2M0cm5HdTVJNk9RZC9hRnEvMG91UHV1RGJWbTlqcHZGc3ZpWk5mOHRzSHpQcWVYRy9VbGdEN0k3L2ZMZ2oycEw4Qm5lVXB2U2ZwK2wvMkpJd3VhdnhCZjJab0tCWnE1aERNa2xBekp3RWxnV1p1UGJNazFFd2pZU3lCWmk0RmRCUm81dm1DamdMTjNBN1FTcUJSSzh0di9kRkJLNEZtN2xnb0NUVHFxTDd0dmZyZzFIYWdMNUxac1hhMlI2RXEwUGhTTzBzVlo3cktIai9SOVdHVzJsa3R0ZWJIb3o0eWc5bE1MSlNpaXRiYXZQdFgyYWdJSldwanJ1THUxczAyQW9rV3NUN3JMTmFNaWxDaVhuN2J3SXBRSW1jTFJYZHAwNmdJSmFyNHM0SnRoQkpWNUN2TzVJcno1bmV6aUZRYXpjYW0rNmJZTE80M3Fndm1tRGlnK2M5VW5PcWFPZjlBb2lmUjFBNk9MSlQwMkY5M2p2MDFyL0NINkU3dCs0dGpka1FxOVZYYzkrYTJ2Tnk4MlIycDlFN1pmK2JWQ203ZVhGcXRIcndMZzA0N04yR3p2TlZjZjZ3M0lWMGZhaE11MXZ6NnFJdit6TUMzc1ZCaUJtSkZLTkVXZTdlS0ZhRkVpMXFvT1RNRkxOSXEyNG9kUllIRXRpSldoQkpiem82S1FOSlBnVThkY3c2a2c0MFBLZzQ0L2J2dkczdC9zTk1mWFIvRytMankzMGxoQnlQWnpHRHNzOEJvQW1tQzB6alNPS2MyVXB0VGhWUXhhcWVCMm1sT2U1SDJjcHBDbXVJMGlUVEphUS9TSGs3Uks1dDdaYU5YTnZmS1JxOXM3cFdOWHRuY0t4dTlzcmxYQ3IxUzNDdUZYaW51bFVLdkZQZEtvVmVLZTZYUUs4VzlVdWlWNGw0cDlFcHhyeFI2cGJoWENyMVMzQ3VGWHZtQ2NWeTJDbTU1aGgyWDZQb3d4K1VvSGNiczhIQjJNSGFVeURFZ3g0Z2NCM0tjeUFrZ0o0aWNCSEtTeUNrZ3A0aWNCbktheUJrZ1o0aWNCWEtXeURrZzU0aWNCM0tleUFVZ0Y0aGNCSEtSeUNVZ2w0aGNCbktaeUJVZ1Y0aGNCWEtWeURVZzE0aGNCM0tkeUEwZ040amNCSEtUeUMwZ3Q0amNCbktieUIwZ2Q0amNCWEtYeUQwZzk0allRTmpoQUtJUFZRS0lQb3pkUVBRaDdnR2lEMzhTaUg1b3BJRG9oMDB2RVAyUVNnUFJEN2ZvcEJ2bjI1MTk2VlRuOVBtbWEvTjh1OU01dC9DeFZYZ2Z0ZjcxU0d5NHo3K0RYdURUdVVhMTZsWmVzWUx2K29hSGVFR3ovTXlQK3F4ZzZNR1BnOW4yY081M1dZbjBmL0NISUtGbjYzOXcreC9WTEZDMS94RG94ZlcvUDlyZnl5YldLK3h1bHRvZjNDWm12d0ErZkhKVzg0RDFXZ2YvRndDelh3Q0x0VWExQkZoSkhKVTRLbkZVNHFqRVVZbWpFa2NsamxvU1J5V09XaEpISlk1S0hQM3ljYlE3eWVLb3BERkpZNUxHSkkxSkdwTTBKbWxNMHBpa01VbGprc1lralRFaWFleC9UV01wU1dPU3hpU05TUnFUTkNacFROS1lwREZKWTVMR0pJMUpHcE0wOXFYVDJLTi9BQkcwcnJyT09RQUEiLAogIGZpbHRlcl91cmw6ICJ7e2ZsLuWcsOWMun19e3tmbC7nsbvlnot9fXt7Zmwu5o6S5bqPfX17e2ZsLuWIhuexu319e3tmbC7or63oqIB9fXt7Zmwu5a2X5q+NfX17e2ZsLuW5tOS7o319IiwKICBmaWx0ZXJfZGVmOiB7CiAgICAyMDogewogICAgICDliIbnsbs6ICIvaWQvMjAiCiAgICB9LAogICAgMzk6IHsKICAgICAg5YiG57G7OiAiL2lkLzM5IgogICAgfSwKICAgIDQ2OiB7CiAgICAgIOWIhuexuzogIi9pZC80NiIKICAgIH0sCiAgICA0NzogewogICAgICDliIbnsbs6ICIvaWQvNDciCiAgICB9CiAgfSwKICBoZWFkZXJzOiB7CiAgICAiVXNlci1BZ2VudCI6ICJNT0JJTEVfVUEiCiAgfSwKICB0aW1lb3V0OiA1MDAwLAogIGNsYXNzX3BhcnNlOiAiLm5hdmJhci1pdGVtcyYmbGk6Z3QoMCk6bHQoOCk7YSYmVGV4dDthJiZocmVmO2lkLyhcXGQrKS5odG1sIiwKICBjYXRlX2V4Y2x1ZGU6ICIiLAogIHBsYXlfcGFyc2U6IHRydWUsCiAgbGF6eTokanMudG9TdHJpbmcoKCk9PnsKICAgIGlucHV0ID0ge3BhcnNlOjEsdXJsOmlucHV0LGpzOicnfTsKICB9KSwKICBkb3VibGU6IHRydWUsCiAg5o6o6I2QOiAiKiIsCiAg5LiA57qnOiAiLm1vZHVsZS1pdGVtcyBhO2EmJnRpdGxlO2ltZyYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmIiwKICDkuoznuqc6IHsKICAgIHRpdGxlOiAiaDEmJlRleHQiLAogICAgaW1nOiAiLmltZyYmZGF0YS1vcmlnaW5hbCIsCiAgICBkZXNjOiAiIiwKICAgIGNvbnRlbnQ6ICIubW9kdWxlLWluZm8taW50cm9kdWN0aW9uLWNvbnRlbnQmJnAmJlRleHQiLAogICAgdGFiczogIi5tb2R1bGUtdGFiLWl0ZW0iLAogICAgbGlzdHM6ICIubW9kdWxlLXBsYXktbGlzdC1jb250ZW50OmVxKCNpZCkmJmEiLAogICAgbGlzdF90ZXh0OiAiYm9keSYmVGV4dCIsCiAgICBsaXN0X3VybDogImEmJmhyZWYiCiAgfSwKICDmkJzntKI6ICJib2R5IC5tb2R1bGUtaXRlbTsubW9kdWxlLWNhcmQtaXRlbS10aXRsZSYmVGV4dDsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZjsubW9kdWxlLWluZm8taXRlbS1jb250ZW50JiZUZXh0Igp9 \ No newline at end of file diff --git a/lib/多多追剧.js b/lib/多多追剧.js new file mode 100644 index 0000000..e02badd --- /dev/null +++ b/lib/多多追剧.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/2VRS07DMBDd9xRZoKYtTSy2iUJVcQEk6K5SZepp4tZxI9tpGlAPwI4VCz4LEAIOwBZ6mha4Bfm4KIEnS7Zn5r3xPC+wMETMwPCMi4aRQVHFwDHMzdNNtr7W75vLF7NbpLavD9v7dZb7fr7e3H7oaDCXKosFSkXSQShJEpuQ2cxWC10QC5bl0TjAnANDk3TMsJTWJI2wD3agQqYLEZKAxTgYlITygqwqivJeQrxOR5MIKEyZppSXrAUlVeGaLOUElnYURAhP8RLJ2PdBql5IiXfQrCpvr+4+3x4zylTOucOoVC7HIbgRHbvAXUpq6vgst+1AewKYgJCO9jSHOZAgrL4PXJmZ5vHRaNDXAqtyK2wZRVjI3H87TGNqlUKjUQg8Nhh1cbN5CkuV74GAiYtawyHZb1eHZfg8dYy9qbTV/EQJyv1Wq214h5W3UB7F6vfHd9Cd9Qg7FL9XEOrx8mXOH43/kxaD1mpWjfpp1e42Vj/N1OjviAIAAA== \ No newline at end of file diff --git a/lib/多多追剧[优].js b/lib/多多追剧[优].js new file mode 100644 index 0000000..9360dae --- /dev/null +++ b/lib/多多追剧[优].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/2VRS07DMBDd9xRZoKYtTaxuE5Wq4gJI0BVFlamniVvHjWynH1APwI4VQnwWIAQcgCXQy9ACtyAfFyXwZMn2+L03npkJFoaIGBhN47RkxFBUMXAMc/VwFa+v5dvq7Onw4/XyyKyn7+vnu/XtMiZ8P16srt911B9LFcd8pULpIDSdTm1CRiNbTTQhEix+R30fcw4MDeZ9hqW0BvMQe2D7KmCaiJAELPp+JxNkF2TlkdJbU9Ks1bSIgMKUaUl2iVNQkjcu2FJOYGaHfojwEM+QjDwPpGoFlDQb5bzz+vzm8+U+lgzlmDuMSuVyHIAb0r4L3KWk4I6Pk941dE8AExDS0Y1NYHYkCKvtAVdm7Lm32+u0tcEi29K29EIsZDIEO5hH1MqMer0AeGQw6uJy+QBmKtl9AQMXVbpdsl3NF8vwydwxtobSVuN9JSj3KpWq0dzJ/YXyMFK/Y99AZ9YlbJBOLxUU49nPnD8e/ytNCy1wFqXiaVGtlxY/83+wQ40CAAA= \ No newline at end of file diff --git a/lib/大全[央].js b/lib/大全[央].js new file mode 100644 index 0000000..a4d6215 --- /dev/null +++ b/lib/大全[央].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/大米动漫[漫].js b/lib/大米动漫[漫].js new file mode 100644 index 0000000..4376390 --- /dev/null +++ b/lib/大米动漫[漫].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/31QwUrDQBC9+xUhQtrUbkL1luJf6MmKTLPbZGE3G3entVH6A+IveBCEFjyJtyL4M7b9DTdpxJRKB5bdmffezJudgHb0WDDn3Hk4cmysFy/r56/IaclprlWrWxWRo2C2tnqdb94/Vo+L9efblT3XNZ4qgxZOEXMThSEFyakMYiXDmjDWwuImVXfhqIgFGEPqGBU5JMw+ghSlqOmGgY7Ty0oUbpOw0yHkoKhqe5ODNqXVIIPJEDThyKRxBO+D512wKZZ3qtmoH7YHA3riNzt8L582y3lU/0QZbrW5Gzlu2qv1gVTUfhjh2UgRhGRbdrt/Gi6TUhEIuC+EAup5FBCI0jzhGYgmlTITV9xm09JyxG7bPf+/kb/o6UH0zN/3FasMWYb78zLUNo2Rq2xfhTA0TYnNqymEGAliZxvBDe5wcwEFKaulpWNOfQfcij7rHs1+AF8IfAF7AgAA \ No newline at end of file diff --git a/lib/天天影视.js b/lib/天天影视.js new file mode 100644 index 0000000..43ca139 --- /dev/null +++ b/lib/天天影视.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV5e0sjfnYsSqn4yYxXGRvGU0EsnBMoiT6ao4fLhV8U7QZte2m6GqtInzYZq5fcJmcypyYYnCT84RO2cLGVnB6IxDtgSiBa3bhs0wRDXi/AXlJWBpoL4+zlIvyM/VoTKJWAJiyAwkm6L2kBVhY1lOSwVsu30RylBGfcK+kSkE6B8sVQYRnxTT+VfQnrgzuQQXCdVAmL4ssCafo21tihqeyL9D9QYyub4QgeGxIulLwenNWDIk6JS6QLrfJi4Xyk6T3N0S97TtNJsKKDcvPw2WhEa31mLx79UorN5XUrOlfnDGIlinpUqnC371D2bVx9FkceyFAqA3yjpfXnmDKTO6H2nJxOn4s9gzhWWtM/MhrunrnqOPBQvKZkgaRn6yMrTzSEqj7+u+7nAMYNvWPOh60dBMSx+KycFKUs0qqZGViNrSwmB/8PD3RKinScyHAlxA85CFusBmx0jprjGYd0ofl9svW8zWwywfKQzOC8cQvvvWe3JmyqXniIk2G7SbCaobUomX8sU6kDVRu6Ir3GOMqSEilGfiyvN/RZZkJbegjrDtC9BRwXnjUYzS40BadgLSv6ktayr0R9mVsJTiQgzIXy79JIUIUUDsXQVl5fmhmVUGTPcW3iQYp3j/ZuqMVbi7aIik2DYAYhW6cz4Tl6/cBqx1DjlwPdnJYqqR9fjtR9Gze4BuLy4Sflr1NR+m7MrpJ8xSz46AMEDKJJ7TDGbqGVQNk0to9jT8WK8pnKxovhBRcXeeDnoQOHaI98xnz0e+epepDOgm20Qu38KudhKZ34iFWWr2nb5Y3WLhs+iUxClKSCm/hV9Q5s5UHzaylmMMPpboVxU8hqSaud6e+yuhsOdpH8HByzKNBZv0QdOXWrODdst6SsisY5RYeumZTslYINXlybITJe+Wvf2s+U4zGv4v98TcKCNr6CM8V/+NFPR938YuNvW5fT63V67ejGAWf6PyjuMdiDx1bc4q23sXbRKtTi0gguJwFFzqZrnL+BXMzJ6lG6lpWBBKLf10/33QiujBTiXiunl1Q5AgTp3P7XmRb7jNCxas+i7xsTsGKvrW8cwSL332PW/+NqvKipdHPuHKLNotDIAiwuDT2kwnedf1QQBDi7cgSZh8kIeIiycxiQU53s/XGwj4dsDytGSSuqF0F3L1c47njG9jB00NCyLnNuPMWDvhsq7/b/TcuJE7v5untd3g/m3ewmn4IQKqwxomFYcRvf8O1gI6RJh9dJhU2KuISaz+MiwCUWPd2W49k27WSBlqX1M97LFs2XOFMZFMI9DiRrn+NjrFPBQxKEj4KvIIvkmfjAH3NTOzKjniGdtyi3srwTw+8fylpErHv44fzgml6BrT11Ek+0g3Ayo64ZJMLJOBl5SZRKsI67St7xIS+QXIGGtEhdmOjUzn7kt+qx2jHeU/xN/zL3TP3PDRpU+QazobFmmeEm4MK8XoWqTSttw9XARhnwx9kr76SnrPQfxG+umlp/YOMuskIyddid8OeKD4BGPizsiQ2PMRW9WZ1mB6sfHgu+el9nhpcjL2BBkGdP2LsvlVB+hR1oI3tPBoTRE2aG49ynvBEseQRyfCxSy2GRQYl0LDGkKXZRQWdM1qVqLACM+KHeGRKb7gpxPX84Fhus8SW7xNBTn7N0ZiILoeTpHro5eoY4X2/h+48lU85QVcuzIHmpQYcQo= \ No newline at end of file diff --git a/lib/天龙影院.js b/lib/天龙影院.js new file mode 100644 index 0000000..532f067 --- /dev/null +++ b/lib/天龙影院.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/31UX2/TVhR/z6ewNMlJuvlf2q1ZsgoxaQ8gBg+sT9MUbuzrxmDHrn2NGrJIRUKFbECzrdtAoIlVbO00tqYS0yBJy5ep4+RbcO71depSUT9Y95zzO79z7rnnnJvIF/zQxsKS0M4J8KGQNFy/IuSj/ma0uXf0uqeUFtRFVVPiFy+OXq3H3Xv5jxiSWMTGFPj8r+nh4+hgf/p4m5vi/WH02/fUdrA/2dng2oYbENA1CPGCiqI4crnkIFfWXScDuBgAJJUxMrAPinZ+OcC+dH4FN0ke7F9e+fzCpS9qy+fzHR5w9Ev87DZYQmJK5VmCDnZDCPmxqqppBAcv+zYAFQ4KE+mSFRDFbJmWTbAvN4hjc3uiqSWwdtu0ZR0RfMHodCQmIR+j9FxvpSfdRkEAQiLZmAAHFSWz5aEVLHFDCyNQ80gGJsiyk+y4KgC73uAJX2WCMjcnzb4ZWzbjxAnV6eNoiWo1tPQbiX9FULMXm8GYjqVdayKHvmu89R88nxh1d6ZPNsR4OJp0B2L03e549DePlMCT0miLolYWS6q4UD5ZOQObFd5b9NMWQUpKyLzSF2S28glbOWsrqVlbSc3aFk74QQIdZurwW3k2atU85AdwK+KHOHFkCp48bUnoSN1oypo2X1r8RF5r3VL0QFPOWcYSv4+NbrUqwrXrQSV3E6bmhu4adGwuXr1yWWZkBR+vhjggBavphaQoO4jojYJCwTQFqIU8d26pAL/iZ0rxa+2bYjVhgiSAiBHKcK7mLFMoKM58WP7W8RYUmVBSiioWoZKMnc6rcH2NvqbArwYndhtG18l1BGwH+Ay8xvF0/OVZNT5M3a/x6tmWY8EMfcqb1A1Zx5gIyBPV+OHu5EEPqjjHC0W3xGAHFLINUyVZBDvVxrwofoXXSNVyVkQx8PVq4KFmBa8W1CK3IFFs+NhMSQb3GUk7pyhR70G8068mW2X26un+keswggYnka2m6UqSjerYpuwlzg6swPPkMO7enRFAKtTds3RRTNNiuKNXw8mft8ebm5M3/Wr0+uXR8KAaPe1H9wfV8Wgr+uFRNdobwWnGZOBAp1TvBJfS6KfSkrTiGQmjsyHvNajZy8b/rh8Nj6ulu00C25NmmSwayWoS351F8rKugzeT//fGP/fj4Z3jcqM6Xc22JcOJPWoW++zudPtRFlsjwAZ4E+JKknUqvfGP/4y3DpMYwnS9Czsmuvfr5PfdGQltHhpRhtVv4UCiMqX5wDJojRhL4vhOdApMw9ddo5WJmuCnPx2OH/5xEp8sguMeBCxDRc/vxL2NU9iaBzBrja7qdNewWeg9jV9u81nIbEHoYxip3Fsma0hzbgcAAA== \ No newline at end of file diff --git a/lib/奇珍异兽[官].js b/lib/奇珍异兽[官].js new file mode 100644 index 0000000..99f774b --- /dev/null +++ b/lib/奇珍异兽[官].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTon5aWH54+N5byC5YW9W+WumF0nLAogICAgaG9zdDonaHR0cHM6Ly93d3cuaXFpeWkuY29tJywKICAgIGhvbWVVcmw6JycsCiAgICAvLyBkZXRhaWxVcmw6J2h0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vYWxidW1zL2FsYnVtL2F2bGlzdGluZm8/YWlkPWZ5aWQmc2l6ZT0yMDAwJnBhZ2U9MScsCiAgICBkZXRhaWxVcmw6J2h0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vdmlkZW8vdmlkZW8vdmlkZW9pbmZvd2l0aHVzZXIvZnlpZD9hZ2VudF90eXBlPTEmYXV0aGNvb2tpZT0mc3Via2V5PWZ5aWQmc3Vic2NyaWJlPTEnLAogICAgc2VhcmNoVXJsOidodHRwczovL3NlYXJjaC52aWRlby5pcWl5aS5jb20vbz9pZj1odG1sNSZrZXk9KiomcGFnZU51bT1meXBhZ2UmcG9zPTEmcGFnZVNpemU9MjQmc2l0ZT1pcWl5aScsCiAgICBzZWFyY2hhYmxlOjIsCiAgICBtdWx0aToxLAogICAgZmlsdGVyYWJsZToxLAogICAgZmlsdGVyOnsnMSc6IFt7J2tleSc6ICdtb2RlJywgJ25hbWUnOiAn57u85ZCI5o6S5bqPJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+eDreaSreamnCcsICd2JzogMTF9LCB7J24nOiAn5aW96K+E5qacJywgJ3YnOiA4fSwgeyduJzogJ+aWsOS4iue6vycsICd2JzogNH1dfSwgeydrZXknOiAneWVhcicsICduYW1lJzogJ+WFqOmDqOW5tOS7vScsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICcyMDIzJywgJ3YnOiAyMDIzfSwgeyduJzogJzIwMjInLCAndic6IDIwMjJ9LCB7J24nOiAnMjAyMScsICd2JzogMjAyMX0sIHsnbic6ICcyMDIwJywgJ3YnOiAyMDIwfSwgeyduJzogJzIwMTknLCAndic6IDIwMTl9LCB7J24nOiAnMjAxOCcsICd2JzogMjAxOH0sIHsnbic6ICcyMDE3JywgJ3YnOiAyMDE3fSwgeyduJzogJzIwMTYtMjAxMScsICd2JzogJzIwMTFfMjAxNid9LCB7J24nOiAnMjAxMC0yMDAwJywgJ3YnOiAnMjAwMF8yMDEwJ30sIHsnbic6ICc5MOW5tOS7oycsICd2JzogJzE5OTBfMTk5OSd9LCB7J24nOiAnODDlubTku6MnLCAndic6ICcxOTgwXzE5ODknfSwgeyduJzogJ+abtOaXqScsICd2JzogJzE5NjRfMTk3OSd9XX0sIHsna2V5JzogJ2lzX3B1cmNoYXNlJywgJ25hbWUnOiAn5YWo6YOo6LWE6LS5JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WFjei0uScsICd2JzogMH0sIHsnbic6ICfkvJrlkZgnLCAndic6IDF9LCB7J24nOiAn5LuY6LS5JywgJ3YnOiAyfV19LCB7J2tleSc6ICd0aHJlZV9jYXRlZ29yeV9pZCcsICduYW1lJzogJ+WcsOWMuicsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfljY7or60nLCAndic6IDF9LCB7J24nOiAn6aaZ5riv5Zyw5Yy6JywgJ3YnOiAyODk5N30sIHsnbic6ICfnvo7lm70nLCAndic6IDJ9LCB7J24nOiAn5qyn5rSyJywgJ3YnOiAzfSwgeyduJzogJ+mfqeWbvScsICd2JzogNH0sIHsnbic6ICfml6XmnKwnLCAndic6IDMwOH0sIHsnbic6ICfms7Dlm70nLCAndic6IDExMTV9LCB7J24nOiAn5Y2w5bqmJywgJ3YnOiAyODk5OX0sIHsnbic6ICflhbblroMnLCAndic6IDV9XX0sIHsna2V5JzogJzE4MDAxJywgJ25hbWUnOiAn57G75Z6LJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WWnOWJpycsICd2JzogOH0sIHsnbic6ICfniLHmg4UnLCAndic6IDZ9LCB7J24nOiAn5Yqo5L2cJywgJ3YnOiAxMX0sIHsnbic6ICfmnqrmiJgnLCAndic6IDEzMX0sIHsnbic6ICfniq/nvaonLCAndic6IDI5MX0sIHsnbic6ICfmg4rmgponLCAndic6IDEyOH0sIHsnbic6ICfmgZDmgJYnLCAndic6IDEwfSwgeyduJzogJ+aCrOeWkScsICd2JzogMjg5fSwgeyduJzogJ+WKqOeUuycsICd2JzogMTJ9LCB7J24nOiAn5a625bqtJywgJ3YnOiAyNzM1Nn0sIHsnbic6ICflpYflubsnLCAndic6IDEyODR9LCB7J24nOiAn6a2U5bm7JywgJ3YnOiAxMjl9LCB7J24nOiAn56eR5bm7JywgJ3YnOiA5fSwgeyduJzogJ+aImOS6iScsICd2JzogN30sIHsnbic6ICfpnZLmmKUnLCAndic6IDEzMH1dfSwgeydrZXknOiAnMjczOTYnLCAnbmFtZSc6ICfop4TmoLwnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5beo5Yi2JywgJ3YnOiAyNzM5N30sIHsnbic6ICfpmaLnur8nLCAndic6IDI3ODE1fSwgeyduJzogJ+eLrOaSrScsICd2JzogMzAxNDl9LCB7J24nOiAn572R57uc55S15b2xJywgJ3YnOiAyNzQwMX1dfV0sICcyJzogW3sna2V5JzogJ21vZGUnLCAnbmFtZSc6ICfnu7zlkIjmjpLluo8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn54Ot5pKt5qacJywgJ3YnOiAxMX0sIHsnbic6ICflpb3or4TmppwnLCAndic6IDh9LCB7J24nOiAn5paw5LiK57q/JywgJ3YnOiA0fV19LCB7J2tleSc6ICd5ZWFyJywgJ25hbWUnOiAn5YWo6YOo5bm05Lu9JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJzIwMjMnLCAndic6IDIwMjN9LCB7J24nOiAnMjAyMicsICd2JzogMjAyMn0sIHsnbic6ICcyMDIxJywgJ3YnOiAyMDIxfSwgeyduJzogJzIwMjAnLCAndic6IDIwMjB9LCB7J24nOiAnMjAxOScsICd2JzogMjAxOX0sIHsnbic6ICcyMDE4JywgJ3YnOiAyMDE4fSwgeyduJzogJzIwMTcnLCAndic6IDIwMTd9LCB7J24nOiAnMjAxNi0yMDExJywgJ3YnOiAnMjAxMV8yMDE2J30sIHsnbic6ICcyMDEwLTIwMDAnLCAndic6ICcyMDAwXzIwMTAnfSwgeyduJzogJzkw5bm05LujJywgJ3YnOiAnMTk5MF8xOTk5J30sIHsnbic6ICc4MOW5tOS7oycsICd2JzogJzE5ODBfMTk4OSd9LCB7J24nOiAn5pu05pepJywgJ3YnOiAnMTk2NF8xOTc5J31dfSwgeydrZXknOiAnaXNfcHVyY2hhc2UnLCAnbmFtZSc6ICflhajpg6jotYTotLknLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5YWN6LS5JywgJ3YnOiAwfSwgeyduJzogJ+S8muWRmCcsICd2JzogMX0sIHsnbic6ICfku5jotLknLCAndic6IDJ9XX0sIHsna2V5JzogJ3RocmVlX2NhdGVnb3J5X2lkJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WGheWcsCcsICd2JzogMTV9LCB7J24nOiAn5riv5YmnJywgJ3YnOiAxNn0sIHsnbic6ICfpn6nliacnLCAndic6IDE3fSwgeyduJzogJ+e+juWJpycsICd2JzogMTh9LCB7J24nOiAn5pel5YmnJywgJ3YnOiAzMDl9LCB7J24nOiAn5rOw5YmnJywgJ3YnOiAxMTE0fSwgeyduJzogJ+WPsOa5vuWcsOWMuicsICd2JzogMTExN30sIHsnbic6ICfoi7HliacnLCAndic6IDI4OTE2fSwgeyduJzogJ+WFtuWugycsICd2JzogMTl9XX0sIHsna2V5JzogJzE4MDAzJywgJ25hbWUnOiAn57G75Z6LJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+iHquWIticsICd2JzogMTE5OTJ9LCB7J24nOiAn5Y+k6KOFJywgJ3YnOiAyNH0sIHsnbic6ICfoqIDmg4UnLCAndic6IDIwfSwgeyduJzogJ+atpuS+oCcsICd2JzogMjN9LCB7J24nOiAn5YG25YOPJywgJ3YnOiAzMH0sIHsnbic6ICflrrbluq0nLCAndic6IDE2NTR9LCB7J24nOiAn6Z2S5pilJywgJ3YnOiAxNjUzfSwgeyduJzogJ+mDveW4gicsICd2JzogMjQwNjR9LCB7J24nOiAn5Zac5YmnJywgJ3YnOiAxMzV9LCB7J24nOiAn5oiY5LqJJywgJ3YnOiAyNzkxNn0sIHsnbic6ICflhpvml4UnLCAndic6IDE2NTV9LCB7J24nOiAn6LCN5oiYJywgJ3YnOiAyOTB9LCB7J24nOiAn5oKs55aRJywgJ3YnOiAzMn0sIHsnbic6ICfnvarmoYgnLCAndic6IDE0OX0sIHsnbic6ICfnqb/otoonLCAndic6IDE0OH0sIHsnbic6ICflrqvlu7cnLCAndic6IDEzOX0sIHsnbic6ICfljoblj7InLCAndic6IDIxfSwgeyduJzogJ+elnuivnScsICd2JzogMTQ1fSwgeyduJzogJ+enkeW5uycsICd2JzogMzR9LCB7J24nOiAn5bm05LujJywgJ3YnOiAyN30sIHsnbic6ICflhpzmnZEnLCAndic6IDI5fSwgeyduJzogJ+WVhuaImCcsICd2JzogMTQwfSwgeyduJzogJ+WJp+aDhScsICd2JzogMjQwNjN9LCB7J24nOiAn5aWH5bm7JywgJ3YnOiAyNzg4MX0sIHsnbic6ICfnvZHliacnLCAndic6IDI0MDY1fSwgeyduJzogJ+erluefreeJhycsICd2JzogMzI4Mzl9XX1dLCAnMyc6IFt7J2tleSc6ICdtb2RlJywgJ25hbWUnOiAn57u85ZCI5o6S5bqPJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+eDreaSreamnCcsICd2JzogMTF9LCB7J24nOiAn5aW96K+E5qacJywgJ3YnOiA4fSwgeyduJzogJ+aWsOS4iue6vycsICd2JzogNH1dfSwgeydrZXknOiAneWVhcicsICduYW1lJzogJ+WFqOmDqOW5tOS7vScsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICcyMDIzJywgJ3YnOiAyMDIzfSwgeyduJzogJzIwMjInLCAndic6IDIwMjJ9LCB7J24nOiAnMjAyMScsICd2JzogMjAyMX0sIHsnbic6ICcyMDIwJywgJ3YnOiAyMDIwfSwgeyduJzogJzIwMTknLCAndic6IDIwMTl9LCB7J24nOiAnMjAxOCcsICd2JzogMjAxOH0sIHsnbic6ICcyMDE3JywgJ3YnOiAyMDE3fSwgeyduJzogJzIwMTYtMjAxMScsICd2JzogJzIwMTFfMjAxNid9LCB7J24nOiAnMjAxMC0yMDAwJywgJ3YnOiAnMjAwMF8yMDEwJ30sIHsnbic6ICc5MOW5tOS7oycsICd2JzogJzE5OTBfMTk5OSd9LCB7J24nOiAnODDlubTku6MnLCAndic6ICcxOTgwXzE5ODknfSwgeyduJzogJ+abtOaXqScsICd2JzogJzE5NjRfMTk3OSd9XX0sIHsna2V5JzogJ2lzX3B1cmNoYXNlJywgJ25hbWUnOiAn5YWo6YOo6LWE6LS5JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WFjei0uScsICd2JzogMH0sIHsnbic6ICfkvJrlkZgnLCAndic6IDF9LCB7J24nOiAn5LuY6LS5JywgJ3YnOiAyfV19LCB7J2tleSc6ICd0aHJlZV9jYXRlZ29yeV9pZCcsICduYW1lJzogJ+WcsOWMuicsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICflm73lhoUnLCAndic6IDIwMzIzfSwgeyduJzogJ+WbveWklicsICd2JzogMjAzMjR9XX0sIHsna2V5JzogJzE4MDA0JywgJ25hbWUnOiAn57G75Z6LJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+S6uuaWhycsICd2JzogNzB9LCB7J24nOiAn576O6aOfJywgJ3YnOiAzMzkwOH0sIHsnbic6ICfljLvnlpcnLCAndic6IDMzOTI0fSwgeyduJzogJ+iHqueEticsICd2JzogMzM5MzN9LCB7J24nOiAn6JCM5a6gJywgJ3YnOiAzMzk0NX0sIHsnbic6ICfotKLnu48nLCAndic6IDMzOTUzfSwgeyduJzogJ+e9quahiCcsICd2JzogMzM5NjB9LCB7J24nOiAn56ue5oqAJywgJ3YnOiAzMzk2N30sIHsnbic6ICfngb7pmr4nLCAndic6IDMzOTc0fSwgeyduJzogJ+WGm+S6iycsICd2JzogNzJ9LCB7J24nOiAn5Y6G5Y+yJywgJ3YnOiA3NH0sIHsnbic6ICfmjqLpmaknLCAndic6IDczfSwgeyduJzogJ+ekvuS8micsICd2JzogNzF9LCB7J24nOiAn56eR5oqAJywgJ3YnOiAyODExOX0sIHsnbic6ICfml4XmuLgnLCAndic6IDMxMH1dfSwgeydrZXknOiAnMjg0NjcnLCAnbmFtZSc6ICflh7rlk4HmlrknLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAnQkJDJywgJ3YnOiAyODQ2OH0sIHsnbic6ICfnvo7lm73ljoblj7LpopHpgZMnLCAndic6IDI4NDcwfSwgeyduJzogJ+aOoue0oumikemBkycsICd2JzogMjg0NzF9LCB7J24nOiAn5aSu6KeG6K6w5b2VJywgJ3YnOiAyODQ3Mn0sIHsnbic6ICfljJfkuqznuqrlrp7popHpgZMnLCAndic6IDI4NDczfSwgeyduJzogJ+S4iua1t+e6quWunumikemBkycsICd2JzogMjg0NzR9LCB7J24nOiAn5pyX5oCd5paH5YyWJywgJ3YnOiAyODQ3Nn0sIHsnbic6ICdDTkVYJywgJ3YnOiAyODQ3N30sIHsnbic6ICfkupTmmJ/kvKDlpYcnLCAndic6IDI4NDc4fSwgeyduJzogJ0lNRycsICd2JzogMjg0Nzl9LCB7J24nOiAnTkhLJywgJ3YnOiAyODQ4MH0sIHsnbic6ICfniLHlpYfoibrlh7rlk4EnLCAndic6IDMxMjgzfSwgeyduJzogJ05ldGZsaXgnLCAndic6IDMxMjg2fV19LCB7J2tleSc6ICcyOTA3NicsICduYW1lJzogJ+eJh+enjScsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfnuqrlvZXnlLXlvbEnLCAndic6IDI5MDc3fSwgeyduJzogJ+ezu+WIl+e6quW9leeJhycsICd2JzogMjkwNzh9LCB7J24nOiAn572R57uc57qq5b2V54mHJywgJ3YnOiAyOTA4Mn0sIHsnbic6ICfnuqrlrp7moI/nm64nLCAndic6IDI5MDgzfV19LCB7J2tleSc6ICczMTI5NCcsICduYW1lJzogJ+aXtumVvycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICflvq7nuqrlvZUnLCAndic6IDI5MDc5fSwgeyduJzogJ+mVv+e6quW9lScsICd2JzogMjkwODB9LCB7J24nOiAn55+t57qq5b2VJywgJ3YnOiAyOTA4MX1dfV0sICc0JzogW3sna2V5JzogJ21vZGUnLCAnbmFtZSc6ICfnu7zlkIjmjpLluo8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn54Ot5pKt5qacJywgJ3YnOiAxMX0sIHsnbic6ICflpb3or4TmppwnLCAndic6IDh9LCB7J24nOiAn5paw5LiK57q/JywgJ3YnOiA0fV19LCB7J2tleSc6ICd5ZWFyJywgJ25hbWUnOiAn5YWo6YOo5bm05Lu9JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJzIwMjMnLCAndic6IDIwMjN9LCB7J24nOiAnMjAyMicsICd2JzogMjAyMn0sIHsnbic6ICcyMDIxJywgJ3YnOiAyMDIxfSwgeyduJzogJzIwMjAnLCAndic6IDIwMjB9LCB7J24nOiAnMjAxOScsICd2JzogMjAxOX0sIHsnbic6ICcyMDE4JywgJ3YnOiAyMDE4fSwgeyduJzogJzIwMTcnLCAndic6IDIwMTd9LCB7J24nOiAnMjAxNi0yMDExJywgJ3YnOiAnMjAxMV8yMDE2J30sIHsnbic6ICcyMDEwLTIwMDAnLCAndic6ICcyMDAwXzIwMTAnfSwgeyduJzogJzkw5bm05LujJywgJ3YnOiAnMTk5MF8xOTk5J30sIHsnbic6ICc4MOW5tOS7oycsICd2JzogJzE5ODBfMTk4OSd9LCB7J24nOiAn5pu05pepJywgJ3YnOiAnMTk2NF8xOTc5J31dfSwgeydrZXknOiAnaXNfcHVyY2hhc2UnLCAnbmFtZSc6ICflhajpg6jotYTotLknLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5YWN6LS5JywgJ3YnOiAwfSwgeyduJzogJ+S8muWRmCcsICd2JzogMX0sIHsnbic6ICfku5jotLknLCAndic6IDJ9XX0sIHsna2V5JzogJ3RocmVlX2NhdGVnb3J5X2lkJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+S4reWbveWkp+mZhicsICd2JzogMzd9LCB7J24nOiAn5pel5pysJywgJ3YnOiAzOH0sIHsnbic6ICfpn6nlm70nLCAndic6IDExMDZ9LCB7J24nOiAn5qyn576OJywgJ3YnOiAzMDIxOH0sIHsnbic6ICflhbblroMnLCAndic6IDQwfV19LCB7J2tleSc6ICczMDIxOScsICduYW1lJzogJ+eJiOacrCcsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfliqjnlLsnLCAndic6IDMwMjIwfSwgeyduJzogJ+eJueaRhCcsICd2JzogMzAyMjN9LCB7J24nOiAn5biD6KKL5oiPJywgJ3YnOiAzMDIyNH0sIHsnbic6ICfnibnliKvnr4cnLCAndic6IDMyNzgyfSwgeyduJzogJ+WKqOaAgea8q+eUuycsICd2JzogMzI3ODN9LCB7J24nOiAn5Yqo55S755S15b2xJywgJ3YnOiAzMjc4NH0sIHsnbic6ICfnq5bniYjop4bpopEnLCAndic6IDMyNzg1fSwgeyduJzogJ+i9u+WKqOeUuycsICd2JzogMzM0ODJ9LCB7J24nOiAn55+t5YmnJywgJ3YnOiAzMzQ4M31dfSwgeydrZXknOiAnMzAyMjUnLCAnbmFtZSc6ICfpo47moLwnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5pCe56yRJywgJ3YnOiAzMDIzMH0sIHsnbic6ICfng63ooYAnLCAndic6IDMwMjMyfSwgeyduJzogJ+WCrOazqicsICd2JzogMzAyMzN9LCB7J24nOiAn5rK75oSIJywgJ3YnOiAzMDIzNH0sIHsnbic6ICflirHlv5cnLCAndic6IDMwMjM3fSwgeyduJzogJ+acuuaImCcsICd2JzogMzAyNDF9LCB7J24nOiAn5oGL54ixJywgJ3YnOiAzMDI0M30sIHsnbic6ICfnp5HlubsnLCAndic6IDMwMjQ1fSwgeyduJzogJ+Wlh+W5uycsICd2JzogMzAyNDd9LCB7J24nOiAn5o6o55CGJywgJ3YnOiAzMDI0OH0sIHsnbic6ICfmoKHlm60nLCAndic6IDMwMjQ5fSwgeyduJzogJ+aXpeW4uCcsICd2JzogMzAyNTJ9LCB7J24nOiAn5Y6G5Y+yJywgJ3YnOiAzMDI1NH0sIHsnbic6ICfnvo7po58nLCAndic6IDMwMjU1fSwgeyduJzogJ+iBjOWcuicsICd2JzogMzAyNTZ9LCB7J24nOiAn5YG25YOPJywgJ3YnOiAzMDI1OH0sIHsnbic6ICfms6HpnaInLCAndic6IDMwMjY1fSwgeyduJzogJ+WGkumZqScsICd2JzogMzAyNjd9LCB7J24nOiAn56ue5oqAJywgJ3YnOiAzMDI2OH0sIHsnbic6ICflkIjlrrbmrKInLCAndic6IDMwMjcwfSwgeyduJzogJ+atpuS+oCcsICd2JzogMzI3OTJ9LCB7J24nOiAn546E5bm7JywgJ3YnOiAzMjc5M31dfSwgeydrZXknOiAnMzI3OTUnLCAnbmFtZSc6ICfmlrDnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn6L275bCP6K+05pS557yWJywgJ3YnOiAzMjc5Nn0sIHsnbic6ICfmvKvnlLvmlLnnvJYnLCAndic6IDMyNzk3fSwgeyduJzogJ+a4uOaIj+aUuee8licsICd2JzogMzI3OTh9LCB7J24nOiAn5Y6f5YibJywgJ3YnOiAzMjc5OX1dfV0sICc2JzogW3sna2V5JzogJ21vZGUnLCAnbmFtZSc6ICfnu7zlkIjmjpLluo8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn54Ot5pKt5qacJywgJ3YnOiAxMX0sIHsnbic6ICflpb3or4TmppwnLCAndic6IDh9LCB7J24nOiAn5paw5LiK57q/JywgJ3YnOiA0fV19LCB7J2tleSc6ICd5ZWFyJywgJ25hbWUnOiAn5YWo6YOo5bm05Lu9JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJzIwMjMnLCAndic6IDIwMjN9LCB7J24nOiAnMjAyMicsICd2JzogMjAyMn0sIHsnbic6ICcyMDIxJywgJ3YnOiAyMDIxfSwgeyduJzogJzIwMjAnLCAndic6IDIwMjB9LCB7J24nOiAnMjAxOScsICd2JzogMjAxOX0sIHsnbic6ICcyMDE4JywgJ3YnOiAyMDE4fSwgeyduJzogJzIwMTcnLCAndic6IDIwMTd9LCB7J24nOiAnMjAxNi0yMDExJywgJ3YnOiAnMjAxMV8yMDE2J30sIHsnbic6ICcyMDEwLTIwMDAnLCAndic6ICcyMDAwXzIwMTAnfSwgeyduJzogJzkw5bm05LujJywgJ3YnOiAnMTk5MF8xOTk5J30sIHsnbic6ICc4MOW5tOS7oycsICd2JzogJzE5ODBfMTk4OSd9LCB7J24nOiAn5pu05pepJywgJ3YnOiAnMTk2NF8xOTc5J31dfSwgeydrZXknOiAnaXNfcHVyY2hhc2UnLCAnbmFtZSc6ICflhajpg6jotYTotLknLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5YWN6LS5JywgJ3YnOiAwfSwgeyduJzogJ+S8muWRmCcsICd2JzogMX0sIHsnbic6ICfku5jotLknLCAndic6IDJ9XX0sIHsna2V5JzogJ3RocmVlX2NhdGVnb3J5X2lkJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WGheWcsCcsICd2JzogMTUxfSwgeyduJzogJ+a4r+WPsCcsICd2JzogMTUyfSwgeyduJzogJ+mfqeWbvScsICd2JzogMzMzMDZ9LCB7J24nOiAn5qyn576OJywgJ3YnOiAxNTR9LCB7J24nOiAn5YW25a6DJywgJ3YnOiAxMTEzfV19LCB7J2tleSc6ICcxODAxNCcsICduYW1lJzogJ+exu+WeiycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmkq3miqUnLCAndic6IDE1NX0sIHsnbic6ICforr/osIgnLCAndic6IDE1Nn0sIHsnbic6ICfmuLjmiI8nLCAndic6IDE1OH0sIHsnbic6ICfmmZrkvJonLCAndic6IDI5Mn0sIHsnbic6ICfmm7LoibonLCAndic6IDI5M30sIHsnbic6ICfohLHlj6Pnp4AnLCAndic6IDIxMTh9LCB7J24nOiAn55yf5Lq656eAJywgJ3YnOiAyMjI0fSwgeyduJzogJ+ernuaKgCcsICd2JzogMzAyNzh9LCB7J24nOiAn54ix5aWH6Im65Ye65ZOBJywgJ3YnOiAzMDI3OX0sIHsnbic6ICfnq57mvJQnLCAndic6IDMzODYwfV19LCB7J2tleSc6ICczMzE2MicsICduYW1lJzogJ+mimOadkCcsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfpn7PkuZAnLCAndic6IDMzMTYzfSwgeyduJzogJ+iInui5iCcsICd2JzogMzMxNzJ9LCB7J24nOiAn5paH5YyWJywgJ3YnOiAzMzE3M30sIHsnbic6ICfnvo7po58nLCAndic6IDMzMTgyfSwgeyduJzogJ+S8pueQhicsICd2JzogMzMxODR9LCB7J24nOiAn55u45LqyJywgJ3YnOiAzMzE5M30sIHsnbic6ICfnuqrlrp4nLCAndic6IDMzMTk1fSwgeyduJzogJ+eUn+a0uycsICd2JzogMzMxOTZ9LCB7J24nOiAn5Lqy5a2QJywgJ3YnOiAzMzE5N30sIHsnbic6ICflsJHlhL8nLCAndic6IDMzMTk4fSwgeyduJzogJ+i0oue7jycsICd2JzogMzMxOTl9LCB7J24nOiAn5YGl5bq3JywgJ3YnOiAzMzIwMH0sIHsnbic6ICfml7blsJonLCAndic6IDMzMjAzfSwgeyduJzogJ+aXhea4uCcsICd2JzogMzMyMDV9LCB7J24nOiAn5pWZ6IKyJywgJ3YnOiAzMzIwNn0sIHsnbic6ICflhbblroMnLCAndic6IDMzMjIwfSwgeyduJzogJ+eIseaDhScsICd2JzogMzMzMTZ9LCB7J24nOiAn5pCe56yRJywgJ3YnOiAzMzMxN30sIHsnbic6ICfnm4rmmbonLCAndic6IDMzMzE4fSwgeyduJzogJ+iBjOWcuicsICd2JzogMzMzMTl9LCB7J24nOiAn6K+t6KiAJywgJ3YnOiAzMzUzMH0sIHsnbic6ICfovqnorronLCAndic6IDMzNTMxfSwgeyduJzogJ+a8lOiusicsICd2JzogMzM4NDN9XX1dLCAnNSc6IFt7J2tleSc6ICdtb2RlJywgJ25hbWUnOiAn57u85ZCI5o6S5bqPJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+eDreaSreamnCcsICd2JzogMTF9LCB7J24nOiAn5aW96K+E5qacJywgJ3YnOiA4fSwgeyduJzogJ+aWsOS4iue6vycsICd2JzogNH1dfSwgeydrZXknOiAneWVhcicsICduYW1lJzogJ+WFqOmDqOW5tOS7vScsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICcyMDIzJywgJ3YnOiAyMDIzfSwgeyduJzogJzIwMjInLCAndic6IDIwMjJ9LCB7J24nOiAnMjAyMScsICd2JzogMjAyMX0sIHsnbic6ICcyMDIwJywgJ3YnOiAyMDIwfSwgeyduJzogJzIwMTknLCAndic6IDIwMTl9LCB7J24nOiAnMjAxOCcsICd2JzogMjAxOH0sIHsnbic6ICcyMDE3JywgJ3YnOiAyMDE3fSwgeyduJzogJzIwMTYtMjAxMScsICd2JzogJzIwMTFfMjAxNid9LCB7J24nOiAnMjAxMC0yMDAwJywgJ3YnOiAnMjAwMF8yMDEwJ30sIHsnbic6ICc5MOW5tOS7oycsICd2JzogJzE5OTBfMTk5OSd9LCB7J24nOiAnODDlubTku6MnLCAndic6ICcxOTgwXzE5ODknfSwgeyduJzogJ+abtOaXqScsICd2JzogJzE5NjRfMTk3OSd9XX0sIHsna2V5JzogJ2lzX3B1cmNoYXNlJywgJ25hbWUnOiAn5YWo6YOo6LWE6LS5JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WFjei0uScsICd2JzogMH0sIHsnbic6ICfkvJrlkZgnLCAndic6IDF9LCB7J24nOiAn5LuY6LS5JywgJ3YnOiAyfV19LCB7J2tleSc6ICd0aHJlZV9jYXRlZ29yeV9pZCcsICduYW1lJzogJ+WcsOWMuicsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICflhoXlnLAnLCAndic6IDIyMX0sIHsnbic6ICfmuK/lj7AnLCAndic6IDIyMH0sIHsnbic6ICfmrKfnvo4nLCAndic6IDIxOX0sIHsnbic6ICfml6Xpn6knLCAndic6IDIxOH0sIHsnbic6ICfmi4nnvo4nLCAndic6IDIxN30sIHsnbic6ICfkuprmtLLlnLDljLonLCAndic6IDIxNn0sIHsnbic6ICfpnZ7mtLInLCAndic6IDIxNX1dfSwgeydrZXknOiAnMTgwMDknLCAnbmFtZSc6ICfor63np40nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5pmu6YCa6K+dJywgJ3YnOiA5MX0sIHsnbic6ICfnsqTor60nLCAndic6IDkyfSwgeyduJzogJ+mXveWNl+ivrScsICd2JzogOTN9LCB7J24nOiAn6Iux6K+tJywgJ3YnOiA5NH0sIHsnbic6ICfml6Xor60nLCAndic6IDk1fSwgeyduJzogJ+mfqeivrScsICd2JzogOTZ9LCB7J24nOiAn5YW25a6DJywgJ3YnOiA5N31dfSwgeydrZXknOiAnMjM1NTQnLCAnbmFtZSc6ICfpn7PkuZDnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5Y2V5puyTVYnLCAndic6IDIzNTU2fSwgeyduJzogJ+WNleabsueOsOWcuicsICd2JzogMjM1NTd9LCB7J24nOiAn5ryU5ZSx5LyaJywgJ3YnOiAyMzU1OH0sIHsnbic6ICfmlrDpl7snLCAndic6IDIzNTU5fSwgeyduJzogJ+iuv+iwiCcsICd2JzogMjM1NjB9LCB7J24nOiAn6Z+z5LmQ6K6w5b2VJywgJ3YnOiAyMzU2MX0sIHsnbic6ICfpn7PkuZDlkajovrknLCAndic6IDIzNTYyfSwgeyduJzogJ+mfs+S5kOiKguebricsICd2JzogMjM1NjN9LCB7J24nOiAn5b2x6KeG5Y6f5aOwJywgJ3YnOiAyMzU2NH0sIHsnbic6ICfpn7PkuZDnn63niYcnLCAndic6IDIzNTY1fSwgeyduJzogJ+WFtuS7licsICd2JzogMjM1NjZ9XX1dLCAnMTYnOiBbeydrZXknOiAnbW9kZScsICduYW1lJzogJ+e7vOWQiOaOkuW6jycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfng63mkq3mppwnLCAndic6IDExfSwgeyduJzogJ+WlveivhOamnCcsICd2JzogOH0sIHsnbic6ICfmlrDkuIrnur8nLCAndic6IDR9XX0sIHsna2V5JzogJ3llYXInLCAnbmFtZSc6ICflhajpg6jlubTku70nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAnMjAyMycsICd2JzogMjAyM30sIHsnbic6ICcyMDIyJywgJ3YnOiAyMDIyfSwgeyduJzogJzIwMjEnLCAndic6IDIwMjF9LCB7J24nOiAnMjAyMCcsICd2JzogMjAyMH0sIHsnbic6ICcyMDE5JywgJ3YnOiAyMDE5fSwgeyduJzogJzIwMTgnLCAndic6IDIwMTh9LCB7J24nOiAnMjAxNycsICd2JzogMjAxN30sIHsnbic6ICcyMDE2LTIwMTEnLCAndic6ICcyMDExXzIwMTYnfSwgeyduJzogJzIwMTAtMjAwMCcsICd2JzogJzIwMDBfMjAxMCd9LCB7J24nOiAnOTDlubTku6MnLCAndic6ICcxOTkwXzE5OTknfSwgeyduJzogJzgw5bm05LujJywgJ3YnOiAnMTk4MF8xOTg5J30sIHsnbic6ICfmm7Tml6knLCAndic6ICcxOTY0XzE5NzknfV19LCB7J2tleSc6ICdpc19wdXJjaGFzZScsICduYW1lJzogJ+WFqOmDqOi1hOi0uScsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICflhY3otLknLCAndic6IDB9LCB7J24nOiAn5Lya5ZGYJywgJ3YnOiAxfSwgeyduJzogJ+S7mOi0uScsICd2JzogMn1dfSwgeydrZXknOiAnMTgwNjEnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5Zac5YmnJywgJ3YnOiAxMjk2fSwgeyduJzogJ+eIseaDhScsICd2JzogMTI5N30sIHsnbic6ICfliqjkvZwnLCAndic6IDEyOTh9LCB7J24nOiAn5aWH5bm7JywgJ3YnOiAxMjk5fSwgeyduJzogJ+aDiuaCmicsICd2JzogMTMwMH0sIHsnbic6ICfmgqznlpEnLCAndic6IDEzMDF9LCB7J24nOiAn6Z2S5pilJywgJ3YnOiAxMzAyfV19XX0sCiAgICAvLyB1cmw6J2h0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vc2VhcmNoL3JlY29tbWVuZC9saXN0P2NoYW5uZWxfaWQ9ZnljbGFzcyZkYXRhX3R5cGU9MSZpc19wdXJjaGFzZT0mbW9kZT0yNCZwYWdlX2lkPWZ5cGFnZSZyZXRfbnVtPTQ4JnRocmVlX2NhdGVnb3J5X2lkPScsCiAgICB1cmw6J2h0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vc2VhcmNoL3JlY29tbWVuZC9saXN0P2NoYW5uZWxfaWQ9ZnljbGFzcyZkYXRhX3R5cGU9MSZwYWdlX2lkPWZ5cGFnZSZyZXRfbnVtPTQ4JywKICAgIGZpbHRlcl91cmw6J2lzX3B1cmNoYXNlPXt7ZmwuaXNfcHVyY2hhc2V9fSZtb2RlPXt7ZmwubW9kZX19JnRocmVlX2NhdGVnb3J5X2lkPXt7ZmwudGhyZWVfY2F0ZWdvcnlfaWR9fSZtYXJrZXRfcmVsZWFzZV9kYXRlX2xldmVsPXt7ZmwueWVhcn19JywKICAgIC8vIHVybDonaHR0cHM6Ly9wY3ctYXBpLmlxaXlpLmNvbS9zZWFyY2gvdmlkZW8vdmlkZW9saXN0cz9jaGFubmVsX2lkPWZ5Y2xhc3MmcGFnZU51bT1meXBhZ2UmcGFnZVNpemU9MjQmZGF0YV90eXBlPTEmc2l0ZT1pcWl5aScsCiAgICBoZWFkZXJzOnsKICAgICAgICAnVXNlci1BZ2VudCc6J01PQklMRV9VQScKICAgIH0sCiAgICB0aW1lb3V0OjUwMDAsCiAgICBjbGFzc19uYW1lOifnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjmvKsm57u86Im6Jumfs+S5kCbnvZHnu5znlLXlvbEnLAogICAgY2xhc3NfdXJsOicxJjImMyY0JjYmNSYxNicsCiAgICBsaW1pdDoyMCwKICAgIC8vIHBsYXlfcGFyc2U6dHJ1ZSwKICAgIC8vIOaJi+WKqOiwg+eUqOino+aekOivt+axgmpzb27nmoR1cmws5q2kbGF6eeS4jeaWueS+vwogICAgLy8gbGF6eTonanM6aW5wdXQ9Imh0dHBzOi8vY2FjaGUuanNvbi5pY3UvaG9tZS9hcGk/dHlwZT15cyZ1aWQ9MjkyNzk2JmtleT1mbm9yeUFCREVGSk5QUVYyNjkmdXJsPSIraW5wdXQuc3BsaXQoIj8iKVswXTtsb2coaW5wdXQpO2xldCBodG1sPUpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpO2xvZyhodG1sKTtpbnB1dD1odG1sLnVybHx8aW5wdXQnLAogICAgLy8g5o6o6I2QOicubGlzdF9pdGVtO2ltZyYmYWx0O2ltZyYmc3JjO2EmJlRleHQ7YSYmZGF0YS1mbG9hdCcsCiAgICAvLyDkuIDnuqc6J2pzb246LmRhdGEubGlzdDsubmFtZTsuaW1hZ2VVcmw7LmxhdGVzdE9yZGVyOy5hbGJ1bUlkJywKICAgIOaOqOiNkDonJywKICAgIC8vIOaOqOiNkDonanM6bGV0IGQ9W107ZmV0Y2hfcGFyYW1zLmhlYWRlcnNbInVzZXItYWdlbnQiXT1QQ19VQTtwZGZoPWpzcC5wZGZoO3BkZmE9anNwLnBkZmE7cGQ9anNwLnBkO2xldCBodG1sPWZldGNoKEhPU1QsZmV0Y2hfcGFyYW1zKTtsZXQgbGlzdHM9cGRmYShodG1sLCIucXktbW9kLWxpIik7bGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdCl7dHJ5e2xldCB0aXRsZT1wZGZoKGl0LCJwLnN1YiYmdGl0bGUiKTtsZXQgZGVzYz1wZGZoKGl0LCIucXktbW9kLWxhYmVsJiZUZXh0Iik7bGV0IHBpY191cmw9cGQoaXQsImltZyYmc3JjIik7ZC5wdXNoKHt0aXRsZTp0aXRsZSxkZXNjOmRlc2MsaW1nOnBpY191cmx9KX1jYXRjaChlKXt9fSk7cmVzPXNldFJlc3VsdChkKTsnLAogICAg5LiA57qnOidqczpsZXQgZD1bXTtpZihNWV9DQVRFPT09IjE2Iil7aW5wdXQ9aW5wdXQucmVwbGFjZSgiY2hhbm5lbF9pZD0xNiIsImNoYW5uZWxfaWQ9MSIpLnNwbGl0KCJ0aHJlZV9jYXRlZ29yeV9pZCIpWzBdO2lucHV0Kz0idGhyZWVfY2F0ZWdvcnlfaWQ9Mjc0MDEifWVsc2UgaWYoTVlfQ0FURT09PSI1Iil7aW5wdXQ9aW5wdXQucmVwbGFjZSgiZGF0YV90eXBlPTEiLCJkYXRhX3R5cGU9MiIpfWxldCBodG1sPXJlcXVlc3QoaW5wdXQpO2xldCBqc29uPUpTT04ucGFyc2UoaHRtbCk7aWYoanNvbi5jb2RlPT09IkEwMDAwMyIpe2ZldGNoX3BhcmFtcy5oZWFkZXJzWyJ1c2VyLWFnZW50Il09UENfVUE7anNvbj1KU09OLnBhcnNlKGZldGNoKGlucHV0LGZldGNoX3BhcmFtcykpfWpzb24uZGF0YS5saXN0LmZvckVhY2goZnVuY3Rpb24oZGF0YSl7aWYoZGF0YS5jaGFubmVsSWQ9PT0xKXtkZXNjPWRhdGEuaGFzT3duUHJvcGVydHkoInNjb3JlIik/ZGF0YS5zY29yZSsi5YiGXFx0IjoiIn1lbHNlIGlmKGRhdGEuY2hhbm5lbElkPT09Mnx8ZGF0YS5jaGFubmVsSWQ9PT00KXtpZihkYXRhLmxhdGVzdE9yZGVyPT09ZGF0YS52aWRlb0NvdW50KXtkZXNjPShkYXRhLmhhc093blByb3BlcnR5KCJzY29yZSIpP2RhdGEuc2NvcmUrIuWIhlxcdCI6IiIpK2RhdGEubGF0ZXN0T3JkZXIrIumbhuWFqCJ9ZWxzZXtpZihkYXRhLnZpZGVvQ291bnQpe2Rlc2M9KGRhdGEuaGFzT3duUHJvcGVydHkoInNjb3JlIik/ZGF0YS5zY29yZSsi5YiGXFx0IjoiIikrZGF0YS5sYXRlc3RPcmRlcisiLyIrZGF0YS52aWRlb0NvdW50KyLpm4YifWVsc2V7ZGVzYz0i5pu05paw6IezICIrZGF0YS5sYXRlc3RPcmRlcisi6ZuGIn19fWVsc2UgaWYoZGF0YS5jaGFubmVsSWQ9PT02KXtkZXNjPWRhdGEucGVyaW9kKyLmnJ8ifWVsc2UgaWYoZGF0YS5jaGFubmVsSWQ9PT01KXtkZXNjPWRhdGEuZm9jdXN9ZWxzZXtpZihkYXRhLmxhdGVzdE9yZGVyKXtkZXNjPSLmm7TmlrDoh7Mg56ysIitkYXRhLmxhdGVzdE9yZGVyKyLmnJ8ifWVsc2UgaWYoZGF0YS5wZXJpb2Qpe2Rlc2M9ZGF0YS5wZXJpb2R9ZWxzZXtkZXNjPWRhdGEuZm9jdXN9fXVybD1NWV9DQVRFKyIkIitkYXRhLmFsYnVtSWQ7ZC5wdXNoKHt1cmw6dXJsLHRpdGxlOmRhdGEubmFtZSxkZXNjOmRlc2MscGljX3VybDpkYXRhLmltYWdlVXJsLnJlcGxhY2UoIi5qcGciLCJfMzkwXzUyMC5qcGc/Y2FwbGlzdD1qcGcsd2VicCIpfSl9KTtzZXRSZXN1bHQoZCk7JywKICAgIC8vIOS4gOe6pzonanM6bGV0IGQ9W107aWYoTVlfQ0FURT09PSIxNiIpe2lucHV0PWlucHV0LnJlcGxhY2UoImNoYW5uZWxfaWQ9MTYiLCJjaGFubmVsX2lkPTEiKS5zcGxpdCgidGhyZWVfY2F0ZWdvcnlfaWQiKVswXTtpbnB1dCs9InRocmVlX2NhdGVnb3J5X2lkPTI3NDAxIn1lbHNlIGlmKE1ZX0NBVEU9PT0iNSIpe2lucHV0PWlucHV0LnJlcGxhY2UoImRhdGFfdHlwZT0xIiwiZGF0YV90eXBlPTIiKX1sZXQgaHRtbD1mZXRjaChpbnB1dCxmZXRjaF9wYXJhbXMpO2xldCBqc29uPUpTT04ucGFyc2UoaHRtbCk7aWYoanNvbi5jb2RlPT09IkEwMDAwMyIpe2ZldGNoX3BhcmFtcy5oZWFkZXJzWyJ1c2VyLWFnZW50Il09UENfVUE7anNvbj1KU09OLnBhcnNlKGZldGNoKGlucHV0LGZldGNoX3BhcmFtcykpfWpzb24uZGF0YS5saXN0LmZvckVhY2goZnVuY3Rpb24oZGF0YSl7aWYoZGF0YS5jaGFubmVsSWQ9PT0xKXtkZXNjPWRhdGEuaGFzT3duUHJvcGVydHkoInNjb3JlIik/ZGF0YS5zY29yZSsi5YiGXFx0IjoiIn1lbHNlIGlmKGRhdGEuY2hhbm5lbElkPT09Mnx8ZGF0YS5jaGFubmVsSWQ9PT00KXtpZihkYXRhLmxhdGVzdE9yZGVyPT09ZGF0YS52aWRlb0NvdW50KXtkZXNjPShkYXRhLmhhc093blByb3BlcnR5KCJzY29yZSIpP2RhdGEuc2NvcmUrIuWIhlxcdCI6IiIpK2RhdGEubGF0ZXN0T3JkZXIrIumbhuWFqCJ9ZWxzZXtpZihkYXRhLnZpZGVvQ291bnQpe2Rlc2M9KGRhdGEuaGFzT3duUHJvcGVydHkoInNjb3JlIik/ZGF0YS5zY29yZSsi5YiGXFx0IjoiIikrZGF0YS5sYXRlc3RPcmRlcisiLyIrZGF0YS52aWRlb0NvdW50KyLpm4YifWVsc2V7ZGVzYz0i5pu05paw6IezICIrZGF0YS5sYXRlc3RPcmRlcisi6ZuGIn19fWVsc2UgaWYoZGF0YS5jaGFubmVsSWQ9PT02KXtkZXNjPWRhdGEucGVyaW9kKyLmnJ8ifWVsc2UgaWYoZGF0YS5jaGFubmVsSWQ9PT01KXtkZXNjPWRhdGEuZm9jdXN9ZWxzZXtpZihkYXRhLmxhdGVzdE9yZGVyKXtkZXNjPSLmm7TmlrDoh7Mg56ysIitkYXRhLmxhdGVzdE9yZGVyKyLmnJ8ifWVsc2UgaWYoZGF0YS5wZXJpb2Qpe2Rlc2M9ZGF0YS5wZXJpb2R9ZWxzZXtkZXNjPWRhdGEuZm9jdXN9fXVybD1NWV9DQVRFKyIkIitkYXRhLmFsYnVtSWQ7ZC5wdXNoKHt1cmw6dXJsLHRpdGxlOmRhdGEubmFtZSxkZXNjOmRlc2MscGljX3VybDpkYXRhLmltYWdlVXJsLnJlcGxhY2UoIi5qcGciLCJfMzkwXzUyMC5qcGc/Y2FwbGlzdD1qcGcsd2VicCIpfSl9KTtzZXRSZXN1bHQoZCk7JywKICAgIC8vIOS4gOe6pzonanNvbjouZGF0YS5saXN0Oy5uYW1lOy5pbWFnZVVybDsucGxheVVybDsubGF0ZXN0T3JkZXInLAogICAgLy8g5LqM57qnOntpc19qc29uOjEsInRpdGxlIjoiZGF0YS50aXRsZTtkYXRhLm1vdmllY2F0ZWdvcnlbMF0rZGF0YS5tb3ZpZWNhdGVnb3J5WzFdIiwiaW1nIjoiZGF0YS5jZG5jb3ZlciIsImRlc2MiOiJkYXRhLmFyZWFbMF07ZGF0YS5kaXJlY3RvclswXSIsImNvbnRlbnQiOiJkYXRhLmRlc2NyaXB0aW9uIiwidGFicyI6ImRhdGEucGxheWxpbmtfc2l0ZXM7ZGF0YS5wbGF5bGlua3NkZXRhaWwuI2lkdi5xdWFsaXR5IiwibGlzdHMiOiJkYXRhLnBsYXlsaW5rc2RldGFpbC4jaWR2LmRlZmF1bHRfdXJsIn0sCiAgICAvLyDkuoznuqc6e2lzX2pzb246MSwidGl0bGUiOiJkYXRhLm5hbWUrZGF0YS5zdWJ0aXRsZTtkYXRhLmxhdGVzdE9yZGVyIiwiaW1nIjoiZGF0YS5pbWFnZVVybCIsImRlc2MiOiJkYXRhLmNhdGVnb3JpZXM7ZGF0YS5hcmVhcyIsImNvbnRlbnQiOiJkYXRhLmRlc2NyaXB0aW9uIiwidGFicyI6ImRhdGEubmFtZSIsImxpc3RzIjoiZGF0YS5wbGF5bGlua3NkZXRhaWwuI2lkdi5kZWZhdWx0X3VybCJ9LAogICAg5LqM57qnOicnLAogICAg5LqM57qnOidqczpsZXQgZD1bXTtsZXQgaHRtbD1yZXF1ZXN0KGlucHV0KTtsZXQganNvbj1KU09OLnBhcnNlKGh0bWwpLmRhdGE7Vk9EPXt2b2RfaWQ6IiIsdm9kX3VybDppbnB1dCx2b2RfbmFtZToiIix0eXBlX25hbWU6IiIsdm9kX2FjdG9yOiIiLHZvZF95ZWFyOiIiLHZvZF9kaXJlY3RvcjoiIix2b2RfYXJlYToiIix2b2RfY29udGVudDoiIix2b2RfcmVtYXJrczoiIix2b2RfcGljOiIifTtWT0Qudm9kX25hbWU9anNvbi5uYW1lO3RyeXtpZihqc29uLmxhdGVzdE9yZGVyKXtWT0Qudm9kX3JlbWFya3M9Iuexu+WeizogIisoanNvbi5jYXRlZ29yaWVzWzBdLm5hbWV8fCIiKSsiXFx0IisoanNvbi5jYXRlZ29yaWVzWzFdLm5hbWV8fCIiKSsiXFx0IisoanNvbi5jYXRlZ29yaWVzWzJdLm5hbWV8fCIiKSsiXFx0Iisi6K+E5YiG77yaIisoanNvbi5zY29yZXx8IiIpKyJcXG7mm7TmlrDoh7PvvJrnrKwiK2pzb24ubGF0ZXN0T3JkZXIrIumbhijmnJ8pL+WFsSIranNvbi52aWRlb0NvdW50KyLpm4Yo5pyfKSJ9ZWxzZXtWT0Qudm9kX3JlbWFya3M9Iuexu+WeizogIisoanNvbi5jYXRlZ29yaWVzWzBdLm5hbWV8fCIiKSsiXFx0IisoanNvbi5jYXRlZ29yaWVzWzFdLm5hbWV8fCIiKSsiXFx0IisoanNvbi5jYXRlZ29yaWVzWzJdLm5hbWV8fCIiKSsiXFx0Iisi6K+E5YiG77yaIisoanNvbi5zY29yZXx8IiIpK2pzb24ucGVyaW9kfX1jYXRjaChlKXtWT0Qudm9kX3JlbWFya3M9anNvbi5zdWJ0aXRsZX1WT0Qudm9kX2FyZWE9KGpzb24uZm9jdXN8fCIiKSsiXFxu6LWE6LS577yaIisoanNvbi5wYXlNYXJrPT09MT8iVklQIjoi5YWN6LS5IikrIlxcbuWcsOWMuu+8miIrKGpzb24uYXJlYXN8fCIiKTtsZXQgdnNpemU9IjU3OV83NzIiO3RyeXt2c2l6ZT1qc29uLmltYWdlU2l6ZVsxMl19Y2F0Y2goZSl7fVZPRC52b2RfcGljPWpzb24uaW1hZ2VVcmwucmVwbGFjZSgiLmpwZyIsIl8iK3ZzaXplKyIuanBnP2NhcGxpc3Q9anBnLHdlYnAiKTtWT0QudHlwZV9uYW1lPWpzb24uY2F0ZWdvcmllcy5tYXAoZnVuY3Rpb24oaXQpe3JldHVybiBpdC5uYW1lfSkuam9pbigiLCIpO2lmKGpzb24ucGVvcGxlLm1haW5fY2hhcmFjdG9yKXtsZXQgdm9kX2FjdG9ycz1bXTtqc29uLnBlb3BsZS5tYWluX2NoYXJhY3Rvci5mb3JFYWNoKGZ1bmN0aW9uKGl0KXt2b2RfYWN0b3JzLnB1c2goaXQubmFtZSl9KTtWT0Qudm9kX2FjdG9yPXZvZF9hY3RvcnMuam9pbigiLCIpfVZPRC52b2RfY29udGVudD1qc29uLmRlc2NyaXB0aW9uO2xldCBwbGF5bGlzdHM9W107aWYoanNvbi5jaGFubmVsSWQ9PT0xfHxqc29uLmNoYW5uZWxJZD09PTUpe3BsYXlsaXN0cz1be3BsYXlVcmw6anNvbi5wbGF5VXJsLGltYWdlVXJsOmpzb24uaW1hZ2VVcmwsc2hvcnRUaXRsZTpqc29uLnNob3J0VGl0bGUsZm9jdXM6anNvbi5mb2N1cyxwZXJpb2Q6anNvbi5wZXJpb2R9XX1lbHNle2lmKGpzb24uY2hhbm5lbElkPT09Nil7bGV0IHFzPWpzb24ucGVyaW9kLnNwbGl0KCItIilbMF07bGV0IGxpc3RVcmw9Imh0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vYWxidW0vc291cmNlL3N2bGlzdGluZm8/Y2lkPTYmc291cmNlaWQ9Iitqc29uLmFsYnVtSWQrIiZ0aW1lbGlzdD0iK3FzO2xldCBwbGF5RGF0YT1KU09OLnBhcnNlKHJlcXVlc3QobGlzdFVybCkpLmRhdGFbcXNdO3BsYXlEYXRhLmZvckVhY2goZnVuY3Rpb24oaXQpe3BsYXlsaXN0cy5wdXNoKHtwbGF5VXJsOml0LnBsYXlVcmwsaW1hZ2VVcmw6aXQuaW1hZ2VVcmwsc2hvcnRUaXRsZTppdC5zaG9ydFRpdGxlLGZvY3VzOml0LmZvY3VzLHBlcmlvZDppdC5wZXJpb2R9KX0pfWVsc2V7bGV0IGxpc3RVcmw9Imh0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vYWxidW1zL2FsYnVtL2F2bGlzdGluZm8/YWlkPSIranNvbi5hbGJ1bUlkKyImc2l6ZT0yMDAmcGFnZT0xIjtsZXQgZGF0YT1KU09OLnBhcnNlKHJlcXVlc3QobGlzdFVybCkpLmRhdGE7bGV0IHRvdGFsPWRhdGEudG90YWw7cGxheWxpc3RzPWRhdGEuZXBzb2RlbGlzdDtpZih0b3RhbD4yMDApe2ZvcihsZXQgaT0yO2k8dG90YWwvMjAwKzE7aSsrKXtsZXQgbGlzdFVybD0iaHR0cHM6Ly9wY3ctYXBpLmlxaXlpLmNvbS9hbGJ1bXMvYWxidW0vYXZsaXN0aW5mbz9haWQ9Iitqc29uLmFsYnVtSWQrIiZzaXplPTIwMCZwYWdlPSIraTtsZXQgZGF0YT1KU09OLnBhcnNlKHJlcXVlc3QobGlzdFVybCkpLmRhdGE7cGxheWxpc3RzPXBsYXlsaXN0cy5jb25jYXQoZGF0YS5lcHNvZGVsaXN0KX19fX1wbGF5bGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdCl7ZC5wdXNoKHt0aXRsZTppdC5zaG9ydFRpdGxlfHwi56ysIitpdC5vcmRlcisi6ZuGIixkZXNjOml0LnN1YnRpdGxlfHxpdC5mb2N1c3x8aXQucGVyaW9kLGltZzppdC5pbWFnZVVybC5yZXBsYWNlKCIuanBnIiwiXzQ4MF8yNzAuanBnP2NhcGxpc3Q9anBnLHdlYnAiKSx1cmw6aXQucGxheVVybH0pfSk7Vk9ELnZvZF9wbGF5X2Zyb209InFpeWkiO1ZPRC52b2RfcGxheV91cmw9ZC5tYXAoZnVuY3Rpb24oaXQpe3JldHVybiBpdC50aXRsZSsiJCIraXQudXJsfSkuam9pbigiIyIpOycsCiAgICAvLyDkuoznuqc6J2pzOmxldCBkPVtdO2xldCBodG1sPXJlcXVlc3QoaW5wdXQpO2xldCBqc29uPUpTT04ucGFyc2UoaHRtbCkuZGF0YTt2b2Q9e3ZvZF9pZDoiIix2b2RfdXJsOmlucHV0LHZvZF9uYW1lOiIiLHR5cGVfbmFtZToiIix2b2RfYWN0b3I6IiIsdm9kX3llYXI6IiIsdm9kX2RpcmVjdG9yOiIiLHZvZF9hcmVhOiIiLHZvZF9jb250ZW50OiIiLHZvZF9yZW1hcmtzOiIiLHZvZF9waWM6IiJ9O3ZvZC52b2RfbmFtZT1qc29uLm5hbWU7dHJ5e2lmKGpzb24ubGF0ZXN0T3JkZXIpe3ZvZC52b2RfcmVtYXJrcz0i57G75Z6LOiAiKyhqc29uLmNhdGVnb3JpZXNbMF0ubmFtZXx8IiIpKyJcXHQiKyhqc29uLmNhdGVnb3JpZXNbMV0ubmFtZXx8IiIpKyJcXHQiKyhqc29uLmNhdGVnb3JpZXNbMl0ubmFtZXx8IiIpKyJcXHQiKyLor4TliIbvvJoiKyhqc29uLnNjb3JlfHwiIikrIlxcbuabtOaWsOiHs++8muesrCIranNvbi5sYXRlc3RPcmRlcisi6ZuGKOacnykv5YWxIitqc29uLnZpZGVvQ291bnQrIumbhijmnJ8pIn1lbHNle3ZvZC52b2RfcmVtYXJrcz0i57G75Z6LOiAiKyhqc29uLmNhdGVnb3JpZXNbMF0ubmFtZXx8IiIpKyJcXHQiKyhqc29uLmNhdGVnb3JpZXNbMV0ubmFtZXx8IiIpKyJcXHQiKyhqc29uLmNhdGVnb3JpZXNbMl0ubmFtZXx8IiIpKyJcXHQiKyLor4TliIbvvJoiKyhqc29uLnNjb3JlfHwiIikranNvbi5wZXJpb2R9fWNhdGNoKGUpe3ZvZC52b2RfcmVtYXJrcz1qc29uLnN1YnRpdGxlfXZvZC52b2RfYXJlYT0oanNvbi5mb2N1c3x8IiIpKyJcXG7otYTotLnvvJoiKyhqc29uLnBheU1hcms9PT0xPyJWSVAiOiLlhY3otLkiKSsiXFxu5Zyw5Yy677yaIisoanNvbi5hcmVhc3x8IiIpO2xldCB2c2l6ZT0iNTc5Xzc3MiI7dHJ5e3ZzaXplPWpzb24uaW1hZ2VTaXplWzEyXX1jYXRjaChlKXt9dm9kLnZvZF9waWM9anNvbi5pbWFnZVVybC5yZXBsYWNlKCIuanBnIiwiXyIrdnNpemUrIi5qcGc/Y2FwbGlzdD1qcGcsd2VicCIpO3ZvZC50eXBlX25hbWU9anNvbi5jYXRlZ29yaWVzLm1hcChmdW5jdGlvbihpdCl7cmV0dXJuIGl0Lm5hbWV9KS5qb2luKCIsIik7aWYoanNvbi5wZW9wbGUubWFpbl9jaGFyYWN0b3Ipe3ZvZF9hY3RvcnM9W107anNvbi5wZW9wbGUubWFpbl9jaGFyYWN0b3IuZm9yRWFjaChmdW5jdGlvbihpdCl7dm9kX2FjdG9ycy5wdXNoKGl0Lm5hbWUpfSk7dm9kLnZvZF9hY3Rvcj12b2RfYWN0b3JzLmpvaW4oIiwiKX12b2Qudm9kX2NvbnRlbnQ9anNvbi5kZXNjcmlwdGlvbjtsZXQgcGxheWxpc3RzPVtdO2lmKGpzb24uY2hhbm5lbElkPT09MXx8anNvbi5jaGFubmVsSWQ9PT01KXtwbGF5bGlzdHM9W3twbGF5VXJsOmpzb24ucGxheVVybCxpbWFnZVVybDpqc29uLmltYWdlVXJsLHNob3J0VGl0bGU6anNvbi5zaG9ydFRpdGxlLGZvY3VzOmpzb24uZm9jdXMscGVyaW9kOmpzb24ucGVyaW9kfV19ZWxzZXtpZihqc29uLmNoYW5uZWxJZD09PTYpe2xldCBxcz1qc29uLnBlcmlvZC5zcGxpdCgiLSIpWzBdO2xldCBsaXN0VXJsPSJodHRwczovL3Bjdy1hcGkuaXFpeWkuY29tL2FsYnVtL3NvdXJjZS9zdmxpc3RpbmZvP2NpZD02JnNvdXJjZWlkPSIranNvbi5hbGJ1bUlkKyImdGltZWxpc3Q9IitxcztsZXQgcGxheURhdGE9SlNPTi5wYXJzZShyZXF1ZXN0KGxpc3RVcmwpKS5kYXRhW3FzXTtwbGF5RGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0KXtwbGF5bGlzdHMucHVzaCh7cGxheVVybDppdC5wbGF5VXJsLGltYWdlVXJsOml0LmltYWdlVXJsLHNob3J0VGl0bGU6aXQuc2hvcnRUaXRsZSxmb2N1czppdC5mb2N1cyxwZXJpb2Q6aXQucGVyaW9kfSl9KX1lbHNle2xldCBsaXN0VXJsPSJodHRwczovL3Bjdy1hcGkuaXFpeWkuY29tL2FsYnVtcy9hbGJ1bS9hdmxpc3RpbmZvP2FpZD0iK2pzb24uYWxidW1JZCsiJnNpemU9MjAwJnBhZ2U9MSI7bGV0IGRhdGE9SlNPTi5wYXJzZShyZXF1ZXN0KGxpc3RVcmwpKS5kYXRhO2xldCB0b3RhbD1kYXRhLnRvdGFsO3BsYXlsaXN0cz1kYXRhLmVwc29kZWxpc3Q7aWYodG90YWw+MjAwKXtmb3IobGV0IGk9MjtpPHRvdGFsLzIwMCsxO2krKyl7bGV0IGxpc3RVcmw9Imh0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vYWxidW1zL2FsYnVtL2F2bGlzdGluZm8/YWlkPSIranNvbi5hbGJ1bUlkKyImc2l6ZT0yMDAmcGFnZT0iK2k7bGV0IGRhdGE9SlNPTi5wYXJzZShyZXF1ZXN0KGxpc3RVcmwpKS5kYXRhO3BsYXlsaXN0cz1wbGF5bGlzdHMuY29uY2F0KGRhdGEuZXBzb2RlbGlzdCl9fX19cGxheWxpc3RzLmZvckVhY2goZnVuY3Rpb24oaXQpe2QucHVzaCh7dGl0bGU6aXQuc2hvcnRUaXRsZXx8IuesrCIraXQub3JkZXIrIumbhiIsZGVzYzppdC5zdWJ0aXRsZXx8aXQuZm9jdXN8fGl0LnBlcmlvZCxpbWc6aXQuaW1hZ2VVcmwucmVwbGFjZSgiLmpwZyIsIl80ODBfMjcwLmpwZz9jYXBsaXN0PWpwZyx3ZWJwIiksdXJsOml0LnBsYXlVcmx9KX0pO3ZvZC52b2RfcGxheV9mcm9tPSJxaXlpIjt2b2Qudm9kX3BsYXlfdXJsPWQubWFwKGZ1bmN0aW9uKGl0KXtyZXR1cm4gaXQudGl0bGUrIiQiK2l0LnVybH0pLmpvaW4oIiMiKTsnLAogICAg5pCc57SiOidqc29uOi5kYXRhLmRvY2luZm9zOy5hbGJ1bURvY0luZm8uYWxidW1UaXRsZTsuYWxidW1Eb2NJbmZvLmFsYnVtVkltYWdlOy5hbGJ1bURvY0luZm8uY2hhbm5lbDsuYWxidW1Eb2NJbmZvLmFsYnVtSWQ7LmFsYnVtRG9jSW5mby50dkZvY3VzJywKfQ== \ No newline at end of file diff --git a/lib/奇米动漫[漫].js b/lib/奇米动漫[漫].js new file mode 100644 index 0000000..c0bea2e --- /dev/null +++ b/lib/奇米动漫[漫].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+Wlh+exs+WKqOa8qycsCiAgICBob3N0OiAnaHR0cDovL3d3dy5xaW1pcWltaS5uZXQnLAogICAgdXJsOiAnL3Nob3cvZnljbGFzc2Z5ZmlsdGVyLmh0bWwnLAogICAgZmlsdGVyYWJsZTogMSwvL+aYr+WQpuWQr+eUqOWIhuexu+etm+mAiSwKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmFyZWF9fXt7ZmwuYnl9fXt7ZmwuY2xhc3N9fXt7ZmwubGV0dGVyfX0vcGFnZS9meXBhZ2V7e2ZsLnllYXJ9fScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJXVzA4VFVSU0YvOHM4WTNxbWN2V04rLzEreC9CUXNHcVZTOUlXWTBOSVZMQlcwVklJVWdoUUpiRUJRaXVneEpRMjhHczZVL292bkhabWRuZFhYM2prNGJ3eDYxdnNQV2N4SjZ4bDVhMW40YmxyUVhueWRGbDU3UTRvVDVUWk9aZlBwMVFwQzY1NXQvR1l1OHhvc1hYaitZMXJic2xkOUJsdVJmdDRrbDg5S2NqR2c3SlNaYW5CcmZ6ZXFhVTZpcE1jbG1aYmNxdkp1Nk4zNVJaTG95bnhUOXAxQnFhWW1tM1IzNi9uUXBmbEZrc2p5ODhqYlQ4SkZsT2pSWkd3OXZzTUZwa2FUWW5FY29sTm1HSnFaUG1UMGRkQ1lERTFPblE4bGs5dXc2Rk56YllZUCt0L3Y1ZGJMSTJtN04xcUVWaGthZlF1NFpOY0pBanZZbW8wNVhpeklsMUxJOHRaVFArQ2Z5TlRvMFVmRXJrZHpNWFU2RVNIVy9wdUhFNWthalFsdEp0TmY0WXBwbVpiN2lLSGQyR3dXQnFMcnVKRWxzWVc2VHZSaWtVRmpTelJ1SlpLZ2NYVVZxWUxKdk42dUx4dVYrbDJhQWNYMnRmMFBXK0hNVTAvU05nYkNvTWNwdVFvZlpHL2p2Tjd3VEpMTnBYVTltOUtGajF4bkxzTmwwOHBTaVZML3NlcDhTdGxGbE5pVTFMbjJzWkYrWlNpNUNnN2JjRHQ4ckxUWGw5bE16ZjNQSzFUT0IvYjh3dGpIRVdCVVNkU0o2Y3FVcFZUZ1ZRd3FqWUFOUVJHNjVIV2MxcUh0STdUV3FTMW5OWWdyZUcwR21rMXA1aVZ5ck5TTVN1Vlo2VmlWaXJQU3NXc1ZKNlZ3S3dFejBwZ1ZvSm5KVEFyd2JNU21KWGdXUW5NU3ZDc0JHWWxlRllDc3hJOEs0RlpDWjZWd0t3RXowcGdWb2JBcjhPYzIrOTM4d3VSak9ybjN5b3ZCTW44UWpUYXM4MHBqa1lpVFVDYWlEUURhU2JTQXFTRlNDdVFWaUp0UU5xSXRBTnBKOUlCcElOSUo1Qk9JbDFBdW9oMEEra20wZ09raDBndmtGNGlmVUQ2aVBRRDZTY3lBR1NBeUNDUVFTSkRRSWFJREFNWkpqSUNaSVRJS0pCUkltTkF4b2lNQXhrbk1nRmtnc2dra0VraVUwQ21pSWhIRGNBS0NyOENNNEhTNTYrSHQ3VDBSc1hucjBmLzVhTlg5cHlaZ01Qdk1lejJpbXc2clY5c00vclM0L2VWL3QyZnIybWhJS08rMlVXdnUvQUcwMVdLMXpNdnF5cGJKS3VxcktxeXFzcXFLcXVxcktxeXFzcXFxc2lxK2xDcTZvdWxSZGxWWlZlVlhWVjJWZGxWWlZlVlhWVjJWZGxWWlZkOWtGMzExZXl6ZWRsVVpWT1ZUVlUyVmRsVVpWT1ZUVlUyVmRsVVpWTjlhRTExNVQvMjJ6RUhyaW9BQUE9PScsCiAgICBzZWFyY2hhYmxlOiAyLC8v5piv5ZCm5ZCv55So5YWo5bGA5pCc57SiLAogICAgaGVhZGVyczogey8v572R56uZ55qE6K+35rGC5aS0LOWujOaVtOaUr+aMgeaJgOacieeahCzluLjluKZ1YeWSjGNvb2tpZXMKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgICB9LAogICAgY2xhc3NfcGFyc2U6ICcjbmF2IGxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oXFx3KykuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICfnlarnu4TkuJPpoph85pyA6L+R5pu05pawJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnKjsqOyo7LnRleHQmJlRleHQ7KicsCiAgICDkuIDnuqc6ICcuaW1nLWxpc3QgbGk7YSYmdGl0bGU7aW1nJiZzcmM7aSYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgICJ0aXRsZSI6ICJoMSYmVGV4dDtkbC5mbi1sZWZ0OmVxKDMpJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5kZXRhaWwtcGljJiZpbWcmJnNyYyIsCiAgICAgICAgImRlc2MiOiAiZGwuZm4tbGVmdDplcSgyKSYmVGV4dDs7Oy5ueXpodXktLWR0JiZUZXh0Oy5mbi1yaWdodDplcSgwKS0tZHQmJlRleHQiLAogICAgICAgICJjb250ZW50IjogIi50anVxaW5nJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIuZG93bi10aXRsZSBoMiIsCiAgICAgICAgImxpc3RzIjogIi52aWRlb19saXN0OmVxKCNpZCkgYSIKICAgIH0sCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0qKiZsaW1pdD01MCcsCiAgICBkZXRhaWxVcmw6ICcvZGV0YWlsL2Z5aWQuaHRtbCcsIC8v6Z2e5b+F5aGrLOS6jOe6p+ivpuaDheaLvOaOpemTvuaOpQogICAg5pCc57SiOiAnanNvbjpsaXN0O25hbWU7cGljOztpZCcsCn0= \ No newline at end of file diff --git a/lib/奇趣影视.json b/lib/奇趣影视.json new file mode 100644 index 0000000..1a17ccf --- /dev/null +++ b/lib/奇趣影视.json @@ -0,0 +1,81 @@ +{ + "规则名": "奇趣影视", + "规则作者": "香雅情", + "请求头参数": "手机", + "网页编码格式": "UTF-8", + "图片是否需要代理": "0", + "是否开启获取首页数据": "0", + "首页推荐链接": "https://www.qqutv.com", + "首页列表数组规则": "body&&.stui-vodlist:has(h3)", + "首页片单列表数组规则": "li", + "首页片单是否Jsoup写法": "1", + "分类起始页码": "1", + "分类链接": "https://www.qqutv.com/qqys/{cateId}/area/{area}/page/{catePg}/year/{year}.html", + "分类名称": "电影&电视剧&动漫&综艺&纪录片", + "分类名称替换词": "dianying&dianshiju&dongmna&zongyi&jilupian", + //"筛选数据": {}, + "筛选数据": "ext", + //{cateId} + "筛选子分类名称": "动作片&科幻片&战争片&恐怖片&喜剧片&爱情片&剧情片||国产剧&港台剧&日韩剧&海外剧", + "筛选子分类替换词": "dzp&khp&zzp&kbp&xjp&aqp&jqp||gcj>j&rhj&hwj", + //{class} + "筛选类型名称": "", + "筛选类型替换词": "*", + //{area} + "筛选地区名称": "大陆&香港&台湾&新加坡&日本&韩国&泰国&越南&印度&伊朗&俄罗斯&美国&法国&英国&德国&意大利&西班牙&加拿大&澳大利亚&巴西", + "筛选地区替换词": "*", + //{year} + "筛选年份名称": "", + "筛选年份替换词": "*", + //{lang} + "筛选语言名称": "", + "筛选语言替换词": "*", + //{by} + "筛选排序名称": "时间&人气&评分", + "筛选排序替换词": "time&hits&score", + "分类截取模式": "1", + "分类列表数组规则": ".stui-vodlist&&li", + "分类片单是否Jsoup写法": "1", + "分类片单标题": "h3&&a&&Text", + "分类片单链接": "h3&&a&&href", + "分类片单图片": ".lazyload&&data-original", + "分类片单副标题": ".pic-text&&Text", + "分类片单链接加前缀": "", + "分类片单链接加后缀": "", + "搜索请求头参数": "User-Agent$手机", + "搜索链接": "https://www.qqutv.com/so{wd}/page/1.html", + "POST请求数据": "searchword={wd}", + "搜索截取模式": "1", + "搜索列表数组规则": ".stui-vodlist__media&&li", + "搜索片单是否Jsoup写法": "1", + "搜索片单图片": ".lazyload&&data-original", + "搜索片单标题": "h3&&a&&Text", + "搜索片单链接": "h3&&a&&href", + "搜索片单副标题": ".pic-text&&Text", + "搜索片单链接加前缀": "", + "搜索片单链接加后缀": "", + "链接是否直接播放": "0", + "直接播放链接加前缀": "", + "直接播放链接加后缀": "", + "直接播放直链视频请求头": "", + "详情是否Jsoup写法": "0", + "类型详情": "类型:&&", + "年代详情": "年份:&&", + "地区详情": "地区:&&", + "演员详情": "主演:&&

    ", + "简介详情": "detail-sketch\">&&&&

    ", + + "导演":"导演:&&", + + "主演":"主演:&&", + + "影片状态":"备注:&&", + + "影片类型":"module-info-tag\">&&立即播放", + + "数组":"", + + "标题":"title=\"&&\"", + + "副标题":"note\">&&<", + + "图片":"data-original=\"&&\"", + + "链接":"href=\"&&\"", + + "搜索模式":"1", + + "搜索url":"http://www.ttkx.site:81/index.php/vod/search/wd/.html?wd={wd}", + + "搜索数组":"module-card-item-class\">&&", + + "搜索标题":"&&", + + "搜索副标题":"note\">&&", + + "搜索图片":"data-original=\"&&\"", + + "搜索链接":"href=\"&&\"", + + "线路数组":"data-dropdown-value=&&[不包含:海外用户专用(国内需翻墙)]", + + "线路标题":"&&
    [替换:>>]", + + "播放数组":"
    ", + + "播放标题":"&&", + + "播放列表":"", + + "分类url":"http://www.ttkx.site:81/index.php/vod/show/area/{area}/by/{by}/class/{class}/id/{cateId}/lang/{lang}/letter/{letter}/year/{year}/page/{catePg}.html", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4#短剧$5#动画$36", + + "筛选":{ + "1":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"动作片","v":"7"}, + {"n":"喜剧片","v":"8"}, + {"n":"爱情片","v":"9"}, + {"n":"科幻片","v":"10"}, + {"n":"恐怖片","v":"11"}, + {"n":"剧情片","v":"12"}, + {"n":"战争片","v":"13"}, + {"n":"灾难片","v":"14"}, + {"n":"悬疑片","v":"15"}, + {"n":"犯罪片","v":"16"}, + {"n":"奇幻片","v":"17"}, + {"n":"记录片","v":"18"}, + {"n":"其他片","v":"20"} + + ] + }, + {"key":"area","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":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"国产剧","v":"22"}, + {"n":"港台剧","v":"23"}, + {"n":"日韩剧","v":"24"}, + {"n":"欧美剧","v":"25"}, + {"n":"其他剧","v":"26"} + ] + }, + {"key":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "3":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"国产综艺","v":"27"}, + {"n":"港台综艺","v":"28"}, + {"n":"日韩综艺","v":"29"}, + {"n":"欧美综艺","v":"30"}, + {"n":"其他综艺","v":"31"} + ] + }, + {"key":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "4":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"国产动漫","v":"32"}, + {"n":"港台动漫","v":"33"}, + {"n":"日韩动漫","v":"34"}, + {"n":"欧美动漫","v":"35"}, + {"n":"动画片","v":"36"} + ] + }, + {"key":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ] + } + } diff --git a/lib/开心影视.json b/lib/开心影视.json new file mode 100644 index 0000000..da9c27b --- /dev/null +++ b/lib/开心影视.json @@ -0,0 +1,271 @@ + { + + "作者":"cc", + + "站名":"开心影视", + + "主页url":"http://ttkx.site:33/", + + "简介":"

    &&

    ", + + "导演":"导演:&&
    ", + + "主演":"主演:&&", + + "影片状态":"备注:&&", + + "影片类型":"module-info-tag\">&&立即播放", + + "数组":"", + + "标题":"title=\"&&\"", + + "副标题":"note\">&&<", + + "图片":"data-original=\"&&\"", + + "链接":"href=\"&&\"", + + "搜索模式":"1", + + "搜索url":"http://ttkx.site:33/index.php/vod/search/wd/.html?wd={wd}", + + "搜索数组":"module-card-item-class\">&&", + + "搜索标题":"&&", + + "搜索副标题":"note\">&&", + + "搜索图片":"data-original=\"&&\"", + + "搜索链接":"href=\"&&\"", + + "线路数组":"data-dropdown-value=&&[不包含:海外用户专用(国内需翻墙)]", + + "线路标题":"&&
    [替换:>>]", + + "播放数组":"
    ", + + "播放标题":"&&", + + "播放列表":"", + + "分类url":"http://www.ttkx.site:33/index.php/vod/show/area/{area}/by/{by}/class/{class}/id/{cateId}/lang/{lang}/letter/{letter}/year/{year}/page/{catePg}.html", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4#短剧$5#动画$28", + + "筛选":{ + "1":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"动作片","v":"6"}, + {"n":"喜剧片","v":"7"}, + {"n":"爱情片","v":"8"}, + {"n":"科幻片","v":"9"}, + {"n":"恐怖片","v":"10"}, + {"n":"剧情片","v":"11"}, + {"n":"战争片","v":"12"}, + {"n":"灾难片","v":"19"}, + {"n":"犯罪片","v":"20"}, + {"n":"冒险片","v":"21"}, + {"n":"悬疑片","v":"22"}, + {"n":"武侠片","v":"23"}, + {"n":"奇幻片","v":"24"}, + {"n":"记录片","v":"25"}, + {"n":"其他片","v":"26"} + + ] + }, + {"key":"area","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":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"国产剧","v":"13"}, + {"n":"港台剧","v":"14"}, + {"n":"日韩剧","v":"15"}, + {"n":"欧美剧","v":"16"}, + {"n":"其他剧","v":"27"} + ] + }, + {"key":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "3":[ + {"key":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "4":[ + {"key":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ] + } + } diff --git a/lib/影剧星球.js b/lib/影剧星球.js new file mode 100644 index 0000000..0059cad --- /dev/null +++ b/lib/影剧星球.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgIOaooeadvzogJ+iHquWKqCcsCiAgIOaooeadv+S/ruaUuTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgIE9iamVjdC5hc3NpZ24obXViYW4u6Ieq5YqoLuS6jOe6pywgewogICAgICAgICAgdGFiX3RleHQ6ICdkaXYtLXNtYWxsJiZUZXh0JywKICAgICAgICB9KTsKICAgIH0pLAogICAgdGl0bGU6ICflvbHliafmmJ/nkINb6Ieq5YqoXScsCiAgICBob3N0OiAnaHR0cHM6Ly9qdW1vdi5jb20nLAogICAgdXJsOiAnL3ZvZC9saXN0L2Z5cGFnZS9meWNsYXNzLzAvMC8wLzAvMC8wJywKICAgIHNlYXJjaFVybDogJy9wdWJsaWMvYXV0by9zZWFyY2gxLmh0bWw/a2V5d29yZD0qKiZwYWdlPWZ5cGFnZScsCiAgICBjbGFzc19wYXJzZTogJy5uYXZiYXItaXRlbXMgbGk6Z3QoMSk6bHQoOCk7YSYmVGV4dDthJiZocmVmOy92b2QvMS8oLio/KS8wLzAvMC8wLzAvMCcsCiAgICDmkJzntKI6ICdib2R5IC5tb2R1bGUtaXRlbTsubW9kdWxlLXBvc3Rlci1pdGVtLXRpdGxlJiZUZXh0Oy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dDthJiZocmVmJywKfQ== \ No newline at end of file diff --git a/lib/影视工厂.js b/lib/影视工厂.js new file mode 100644 index 0000000..b7dcf01 --- /dev/null +++ b/lib/影视工厂.js @@ -0,0 +1 @@ +BbqodjpNSKTJv1SKSF7bXz/V3++1HUjAFTDZ5dMmlhkrL7IPECxlneOpY4eINPaqtlIudIYn/dIXlqay2fdbNtueKIX/zKs8T52VfiwzaVDhaL8iBFixs23ubGp/sZIKdpLAwSBk1JJ0icAtCjAPhBKjQFSkvB0j7U63YP9EppI/GCm44Gj24uCMnkjvxHV6A563p9iNN3OboeK4CRKZc9z5PSxlMlAyotwrpiE0Ys6Ew9cwO9NIrWr6D17THlXvymzudJ3vqy5xfEruGV44FbqlYp/3cwHK+j+bLB69ZUUlqcYtqtrxGQt3wdibLLXhRLw1QNQ8xHRw98Dt3ULsX551pbHn413PJWshf8sp8S8oYLDuQRde018mda6YKj10bRgxz4DNfafAJnGk+C0WPtOOId7kh6BqeTlEa8C0RMJBxRjoKBQ8W4xZe2WxNFr8x22f4dARVZt8WXLba9vHqvRmneSxXxc6nCTrPFtQFwmOjtiIFbwpGgtarfiMzJyY7BKXQxdCdnPPt9zqU9uMfrH3Fj0qiQgmlrg03NbaD8KO4GALbXjFDVYsGsEaWNMpvVv+At4bkpZKoxa8arEeNiUUz2a2H44ZoaXwZ9roemjghpOL/N8pZVcthkANKwLAaDmRJPRrKWlPF9INbYzHph8M2bZF05wfBtC3zaBHI+kXQCwkPgSg4tfDLF4qlEAJ12AhsXpy/kCAtMyRrPLIuJEd6nP2sAUyHjFzP4fKfbMVdy0eZLnT4xv2wPquqQNPzajoeYtZb0rWQMoHurx5WFsJdyv9dnvjyoj45ezjHEc+3kqwn087VFO9E+y2bdSwklQk6hA5ZuNww6/06o244srKWFMmo89B4iuyij7ogrpvbyEVBWa+n00/uiFKFssu8VuPNFQyDAtRNA1PHPryfeArmqgmAC+NwNi/kTvPKKQUvAZbcIPEN87N02UQYl6Ps8krsRqurqE5q2A0ktOk1FGCrSf+MlqwliiXu0jCsQB5vhmq8vPdml5CR0F8gSmYJMhEL0xCzhteg+cqhikcXQb/+VK4lC5Hrl+GAKLqLP55GlhZkvra8sQvNcnInqglo8GwJfaxBHB3HzywHBTrDG8HiYiqFsyxLE9/kbGdtJTrxP5N9z77LXwoDv3h9wgnRKa0jZE4FV0xKxdim/fQDaDmm+Emamx+a1pAUabfOFBoO0c4jdfpW5HEH8fvyQ0Z02PtXqoNYne1B516EIblIms+VmHCuNuERHlMKTeIImjuTKITaPzwS8muOB225nCh5hT9MyNwNResVqzWs+CVMuo4brnS9zr9hLndWQLvsQdDg3pXiI65HjoIkCmlqXbOTzepy78tw4p792rBgzrpIqwTq1wGxtTJSPDUAiitAfdNdvwMCz+l9YbXbUFZJJWRaL5VS82Qi8cDmB+O/os0ktt8lyYr2bJanssdOVssnZkFPsiWMOSKnOW9VAaFJpiyfK4ccnyWfH2EUReRLNws3M6/XeIYquLWfdX1qQeRbgGn+Qx/RH3Bng27U61087wrXY9Ng/nqcRwXymikn1IZbtOYz8aF3Eyfl3r5SvLznS3nRGURGToUyutZTi7kz5TBVLnN/rI42rbCTPokGd6wyLWDvcXV+TZErTgf1BhQ91iM0wCFQw+0+D2Gzoo7kUh3C8o+6PKRL/v+Oqkbg4Iiq6Vn/G8OC5Yk1MQQ6Gdd17WBO2nwyxg2g7TqwJAIbSGneJ96Xl+8Gd4UefAIpeq3NK/oWmmounbtlcQyFi5B5VqyNUg6mvv9ZCe03kht2H1MtZ5EmdgXFq8e4P0zJITcJgfLqi/E6SYI43wcDo1ZOHsFCeshuraEbJVH5XHe+nyctDaKDo33nW0HOVLGfKUF0ECg1UNdeJgosu1JDdFYdPJukSZbOes7zGaeKXzdnGVMLMhpSfON2IAbd9dcmvgr8lZ8frbAVflxlxF7jSF5F7425ryowQ3WtwhrH+aw4HgiaCal323Z2tMyyNLp9KmtGOmfA5mvXtkhAwNera0hUcx2N8uMZjTbFWI3YQhIcPeIW7KIqHil8XlyLGWSamoj2SMbN4iqvDKExW2wDCRyYOz0CSCwp8NZe78miDUJPH+ZXfUNz2W+LPs3tRmAfn2gplXVlue0trHj4k49ovSLKTeCROp8xmhjL3Jh0zUzrO5pIiqKs9DIwsrLPKHPKUmkavwLDVk/NMxu0fyDyJUXJPPhO44H8jyGRJQov79GM+3sSAT7rOMI3CXtkID+Id6EqJsSSKjSn21fojXtW1heE75fQ+PifjwwT6ToPzcT040Uv0oewTsX6VPyBvrmlABJ8a08QMNGF0hJHMWa9wxqmpKjf98exgHGV/sYZzCUBcKwp2FXa2SIuZmwkqV+cHbYzGvsqZXvdterH6L6+mjUi/aC8H60dx2iCqpKmCtB4W7D/4WA68tzYK8Y+T1OGbxEmMoaXvXf3Evv/pT6vRGBNiAmLe0DVr0kYKgxqyigxoklGstt+0nnv2ClG37IGbSmcxrro6TEOBd5fqEFo2s+xJk6ocQc7uC0Frjo17BJvQeGMjRpevYpEHLL8li4cRARVndYEQ8NnDrhgxaSGQplGvw= \ No newline at end of file diff --git a/lib/影视工场.js b/lib/影视工场.js new file mode 100644 index 0000000..cf99080 --- /dev/null +++ b/lib/影视工场.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/影视控.js b/lib/影视控.js new file mode 100644 index 0000000..526528b --- /dev/null +++ b/lib/影视控.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/影视看吧.js b/lib/影视看吧.js new file mode 100644 index 0000000..97625ea --- /dev/null +++ b/lib/影视看吧.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/忍者影视.js b/lib/忍者影视.js new file mode 100644 index 0000000..f8460c8 --- /dev/null +++ b/lib/忍者影视.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/思古影视[V2].js b/lib/思古影视[V2].js new file mode 100644 index 0000000..6276aaf --- /dev/null +++ b/lib/思古影视[V2].js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV43kyEiVkk4Nhqr1+HjzUMSBqVwNk0qr9DfyYS6NIHgDEUGytjbZaMWV/mogrXDdsmjhPgS188xydcIBscu4Ss8j7A2uL/3MJVMi/wfUNU2V6ls21aykWPfuiIlO9s0Q1CD9hqlDafR7r/nrT/vOizvZk4Dt4kJR/MXurBgyQ7mBpyXorGTUvgtU9fYLA8S9m8OXRSd3A+cZKa/nvcOVO+tG5WAdB7rEuuUbxBGuUi2l5vHfooNvgOsUMcixUvvvprZkZGXvklXGw1OCmeCiVDg2MsqLfQSwI4xL61ezMnrgUYt7ZnW3TYN7y5uy3tYQp2AQWYIc96ci6OBgF7HhqgJAY7wgEhBgC1p9SxE/zJIsk3+IgmTsqaIoGABmkDC9wf7NKqEGE5hZfCKuWbMKYDci4J3awvOxXw1WZD1rxbGzUkqV1Q/r92MBW8ZMTPoNLrZQ/Gd7PVsFYEafD67l1MvQhsKbxLVtqf5M3L7X+r7IDJz3yxIpgmCAXj7o0KPBzE2UNCU60IrbBAAQwFamB5gkd3vTRIcYLoS96VTdqQecQ5uHyKSwmR03BG2kOUHTNDUgvZDl0POvPDnQy6OTGeDE4ay4NQbAg0Bp7ajQJpIUI1uy1NrT8bfjNoAEiVOByp0Hywg0zslDNjwa6YozoIeDpe8qQVYs+cRlAnh3wN3IbYk0wiNX89TjbNpRcnze93JE+9KrlOSCsL/4Di1jnYncgQ1PWIi1eiQ1ND554AnZHwG0vyYX7yZ7dnzLb9T43fizU/wWznFDp6zR1ZLgkTZhcJlr3VAr5xGaE0vTBYmsdtzx/4P1d4MOLkyp4O1W/Dq3g3io4DafA5BjL7BNM/+97yzQQMRuqw1aj4gcMg+Gzaxyxo5WTcG0R9njus0/zIOQsXEHJdSJ+YmHajuuuvCmWJ3U2FPeIog9o/4i5uudmnnfMuNo6XUeLic28c64qzWukkF3mTFm/8fTX5XJkdj5/H92wPor5O5K6VGE7KhXtah8F3SxkWgY+gT4Kb7YWg8g8NUNX0MSqSWmM9P6qluzSJjyOpWS6PY76FsRQjxzyHRnZHY4eqYVyTGcxSrSR9WfXG/hg8TdZQpNr7gJhe9mXXXPDA/kdvlKRmf2hklGaawW/kZDTYnA8UunWiLxp1DtZ6RlhJ8e9EPn71ZOwkI6cMYlu4bbVcOI5szvXilMVJWG/nIDHhO09RZee4KLvZD1rIO/KaT3mlksAwsUd5sNtXgsfR9DKmZBs2Q/6Rql9VOMWRnywitWLuWmsRKyBAR2IoabxpYzx2l9nUKXJyrk0XgL8pLt0CmSxI/aMAc/if+Gn7rfqfWUwfletq+BFdYfzjiNc6LZfYTIi1QZ4dLZrWabsOGOI+kfI/K95CKrnH3JXSjQXhjX7ST5v+vM8wYCSCeqjzE22HLYOhi8yAyuU8H0dDM3HuXLn6CtO/UrHnzVUDvAe6NeHE96TYXh173WG4P2YhXa1/tOgvO6I9JqysIH9hEWqxHQnwc65xmM/WS6nR73DdqCvfyODVs72XOl4t14JbH9r4Msd6m9+HP+GNIoBRJywME/ceuoAipS9CQL7LR1Rp1Z89M4dTVLpvw8TQKrnqb3FGrfFjp6TigpNKGRg8FvQzLo7bESJA6QbYSIpS0P7qLABnDkDDicMHiiFhSx+03AFc7sLOwwAUFzkD/jujcSIdpVsOu62MLmDghNxJ8K1ithHK9xThX256W3G0PljPCRdkPEhQv9XxmkhezBa9I0TzBWvQdQTkvC5IEmZfLYBKVOxikrkzLINSm9hejpKCfttzhkOUN0Bojp4lQUd59i48NVC7Zw3juVi2zlliNhm0CSBOtfhfPPwiJlNtpJeMARVqEruJzANHYNE3b4NcwHEQnwrtiK+1s0nknQUgUGkOUeZ/Le00qJewEc0mpxUy41GB14C3XXnq5vs+xcYEn7ypE3P5iHQVHKnLrr8cbSGvn1ImVaVwFNukV89J6Nxhss1xrAhMyw6rGhEuiEgzfvJhPG5Pbn4riPFZnuxSjLKTZlNfnLRXBy1MLTlmiPrx8rh50c8Eoo7ZV8+IxE8cqhDatfrrakNElM/F+u6ONMt5v5LNauVj3B0GAD9MyRFqCCnueCH3CIheW7XKmL+oXQPFtoT6qIJJAaLb75GrFNyIdeyDFf03ycfZkckWALE9b/V0rAyUKjD7bVTNybVSVZSjmOOyaWB+y+QOblEIA4nCdgSYS5N5L3jg+gmTL2Dl8FA5YkJM5iYWYncSBzD8XXfBzBUn4NEKq3oYMrbl/D8QHw3c/q3rUG889f2/tpbp8iHjZnlJgM9uOgQQCy2Gue5UEuw3NEJkxZELVMzuQ1Uw0CxFkyoDPQhnANYnDDOZusNF+1Dhma9+nK3SVyhJ4POCMsTJMupzWYLbEKP4ExuSE4oApo/B7mRLvWJk7mZ3MJbyz27fjHwBTbVG2VczH4o6Z9S+i/X9GD2jvSdEbgzAE0fh7aS8/6rWZPPS+C1iJ/VGst+GUCSXo7W6H5gg9VO3hFXl7OFqydAwtjA7j2Ll8c1YpJHzc5WYmgC5oHfZTAkE7YAJab30Xt9IyDciMFkKZs6DmWiQYe9JQoi6iVtpqFN+gCMSC78LlWygyz2iCsP618PwEKreO4W3uJH2OJ9I30GVL0oAhBVM1Ua7Sy8wAwvLIHOX7QSJSTLhf4jr1PqrJh3jIh7DNjXUAeOgoh1aybWXJK7Tnl4qgqu/X/83LHC6M2bVO+f60SIGe02mtEe/sFPMcu2NhOtztbhII674KLQ6YwhP3TCkw7cJLqCbhm3GdiZ5A7SEEeOoIjW15ka3qKuXga2sBxUkR4C2rN5RMG+5wC51hz83FZnUIESzV3l367wYss/F8vJMLD3X6Rbli54fg7XHrSgz7PPjm8tXANBGr2i2adxDAPkSHlGZ124++nMPYTuQQE5+XKANlPzeOL7NpXJN51h0vMG8CKLlsRj2S5XangWYEJfAxQ6p0AqjZjusCtZtlzHCBP+D7yxgWc14K8TldejnDzVOx5AHaehAVvGq5nPahITACZhEPlOUC8hng0KkBWtB/2RlwCIVbUYsvw35I8jnJAgE2r9vmZQ/S26WQOCZkWh5FwPqun+ipafO0nPqn3s0O38qKPU3Xwy0bKGLtSqAC9I74tqWIFHnD64bbfbby6Z0eDEwjIPybCKibbBit8JDA+i77NPdY5fIBWysE3lhsj8vpk5ez6bFen1pQx8J5whxKcFpG4S970VCTg8httBZl0e1FAtolIyKGRQKH/7QpDFsFJUuN7rQv8NXRcWdfy7y1uLGv8tdPv/EG+JQlcUD3JyrycTVbD+QjjT6Zgc2qOKedLq/bvm576vuyO5bGZJUv2SzkJQlSKntEdlIkvyL05tdpSRAKj5Mc5XCKC7ovCv+RxOB7hgOCgCNSKJ0lG53tKR64qIyv9ySIM3PWTV/O6RVtG+oCW8tn7r1Y8v6iRPqMsKH2FPS+BzbQC9h61a3de3kRhfcEY6X1mHBY8mEFXPYiX7R+T2sI1khQjQ7elfXfAyU7qJYKBXspo3h9xI46r2+0lV7aS0hLd0HGTbOLL6zlcMiplX8c0XTDsmlqJJzTSfoiKSxvXoYisSvkkh320yNoNoNbb3PhLCBLMQv2oW1f0q0wBbcufbhg4AHEtQ4oG+C+CqpAJmaYoJncLUJ0O/6WQXt1PEXN1JCnF4GGd8BYD177/Z/pf0dWoUuySoWHgFQthiBZ0fuAVwA9cC/skKKIN2wFzSG/OhV0sjCIRDXfbco6EnYksF0uKU/R6pJTXs6brtNBOAojhLdvmO5QGgbIdL28a+e7kz9hgI8pWNedfS26Cp5ZT2OI9s5meDyK0VvZYB1LLk9yydXoOAqBEuOL7bW24qZ9wPAP46uSYCgL2oZnmhZw7b7g0m7aWn6W/UTDtOMZIlxcvf+WUAEa//63ACIrhWM4sf+BxbPbg2QMOTgdcjZrvXgYAFpu0HTpLjCkFFAeDeB6J9plDKUtJlpaQYIIMlCTwgwpldRPJ9RtjvTIYij8bahtTLX6juz3sRRI+NeGbLsrpWarG2BGP2oP3OQHetIbtG/OS8s+NgkFkX2elN31Gk3jq1zontRavM28dekBA9taOP/er6Y42Qmfekh9cx7WAu7JfLD5nvFbf5H+AskLDDZHQrx4PuvpT0zdTjrtZMeVyWtjgXIwrk/0JfSsIYtBOn+/JPcfzsYJVpKi60CQXN0V8ONjQKkE9H3uBNoTnHTeuBfzEBGdqUV4pATJ4EABBnYjhh656QXLYl8twkP9k/HwhafzH6K3376U9xQ/MsjZAj40r1XF7Z8L/ojSv4HHc2UFA9TFxVc7dxp3EyH0vIF6yjwakUMIthN6Lzea3MOq1OeDOAekh09+D6kpDS9onySID1Lyizq3DYtwCW+f7yfOo+DoiNgPW8B2tOrLdQLSYPjK43FQZ5VAgRNrsRllQ6dTsuJ1uJXKoE1UitMm7Xe5U9XRhrlsvhn96Y04EnsxlunedlEuMey25416NBpQK0anSr0Kzp64MZAAVTBNsyNPFm5MqBnQy6DOXWU/z24il1Ncsy6r/Rbic7p+kGiz+e3NDv5C2mDveotzYx4/WenKeaj7WKqwJd4wwyVdpSkQAaBiInn+Bihe5517pSd2OEPIxx+EKGrYdGMTStVw167E2VBL7VlsbJuXrfwkLU5ySau/gHAQZ0xbfsmZSjtAlKA0YZmoRr7/WlNwH69yNPZysGrGCIK08zxiMvV2KBz7aeDbR6enB3MLnQTLudkUgz6izdixDhAUPOVKSjWHmF/3MOUK0r/a+vobh3mBJ1moZJAwuuCIs3BslUXhXU9qc6tkjp4KOJaa/BOEzyHIY72BEqn/X8kkT0MTioIwyhmiAUhsJDq2hu8FLphz9PjoXRACkpmZtmUjNegux5fFLTlRXeUOixUTdij/7uZewSPQ4mz38z2z8GQufGreDS5ouMGtRm6AVA8D5nLgpituxkov1/7jBZOiJlSUDQTBx37DIO3UOejgapOahuZDwnIY4a1uZ41qSdEc8N4wrj+UiRq3Z+PqlQ4uYB3Om5PdWtgEUgosIy70nfxm/MCQxXgM1hbB8tK/MTEy6e7tsfSJl66PmZV8Lij4NuX9zXDXNDhGLpmuKiPJvoTFw3jG01/n1CNAfUxfleMy5HA7+yrprQ6vcwIsH2KdTzPRaDPw5G4p3d6h2l/BsSBUPFSg2bNFCkFDI2xDUtolQ8Lz9TXU1szU8jJMhzrmEyMOm3DUZ/D1aalO4NVpu6mE8gutVG6wKPj3osASnCVVsysAlxZEK02lV4g8EfcOWAMMAMM2MuRUnDk4oxXvqU7fslu8RKJGzrpMrm6F/9zCS9pAOQuAGoEYSVTUCyN5DFP86czN41q+FoR/ntCVzR6z0KFBi1EIZKVmVfQ+eRe9b1isB0kHl0PHaWbvYe7yrbkZhNOw/nJgb0nfdy4RgjkXjOVJQZ4wKfBHFK1BONbGMR64hDYvK1hDBV7bxLLtGmsNISBPUV7364R+0cqiZHeS8NMIgOJSWlFsRgIoQ8w3UvQSVYxYeWwlnYk+lChFrLcqH1OPMKGIZmJDF1CG2UGr+ZatNYHgudDejZGdRcGcLhbEUskTUglRqYMnuS5jV6nm0go6yUwQ3Rbeb8yB49fUS00d211U2jKMmpE4vi9CWnY9auCy33SN8Q4pXxqjQ140G91HLue3lU0jhuMLFJHQqF9ZwCK6MUgxh9gwI2LYMqKhTch1fvacUB1EZH6r/j9COj76x5+SgVzoPYKG2jwvI+O8WB157QqmFI82RORT8dNAZ47CFp1tKIADmOFDUYPUx+GH/jzu2K0IHRG5d0J0Cx+2jdJWFYfXI76wd7DdgA082d+z2Xv37enAM72dTHuPwSWEDq6Qq8E5bCWT15sSvoa3ZEVCqUyT0JXOjzk6W8wYKgGMyDInw0V/ddINeeziEQuPPevVA/KsYHBohApAnQneClHL+20ale0JOlgkYgCwZWzASvqDqhxkpUR8OyonxWjDZpswDH2XCxhLfr4bve1mtNrNxXq1UiXSKKHeuIhb52i3NjsGatG7GHP/PSgTxyFeOvpfluRm/nkfSaS+DPgt3VIudyRqMBpvVfhJ06fiERFlZc+DkD95eA9vyTyIjW+YJAiOiPCPJHbstRbWYZIDgFVYcLIofCBjlAce/d8O53XZNA5fBe1VaGuYjZPcierkg2C4j7iatmHWzI/hiwqKuU9AiChQKUGkyn5+gDPD/pLZkLM+IMgsszszt4FkOTM+v8WNUwYWmCX9YH8EuW802HeRgdI5aA7S/b/PWh98RLv0kZYYh/Y71ysATq/RZz+wHNsv4mW9AYv4vf212Ki+elOUwf7ZTeDanwp2DnqNLaH/x2PwFBzsNFi6K7QFwE98LkNvyUqD70uJ70Flpp/Edb1mxSfKGC9/bXT6Zgpg2urt+VO6ogNAfCcbMJdcuMESCObCWPhQTZECq+MaRzgrJ/lWkVpWKZfGRUmh1Dv8vPCLtFjkKZH2xtC3MusMTqLwQ5t7q4FeknIWlTRud1cbqhiIXJf9Ry/zKUMgM2mJ2JtAgOCYoBV4/4aahYIkHuLZn/uvsOqHf96tPJC3o1ock6P9JZSUl+Y+88AToNtX8n5uVaCggfyzZUYQUebvEoPjLp2cPxHxGpR2NdaK3onoPLSyFat0p8z7lzFy3O89WVARNclm2MYnWUjqzUrhyZsYRNgTD0iHpKdnqwjoaxaR0hyey59FwD5niROdXxXiJj/419TLtIxU200agh9Epumxu+Av5OPKQ6yLMbJXhNQfA2GV3uX6Lk/TJ2rlzfVEiLgjwgxlVmh1bMN23Hm0eQ8Q0ab/owk2unabEZZOSAyoeUZKpDOXNEkJhqdVYFBo6XKKLjdD0JXqpfcvSH/+sHwvY7JxYeewNSKKMyJ0DAlTX04CGllLIqgk1le28fz5mR05q8/Y2hS9rsnALyN2XspWcU2Xw+yI9GfrrfYLjzgbTqhZz4WXyRv65ePIN1/QyrYaC8q8Rzw2BOIWgqBCbpNYj84xWzHhkfB/fMXtwwsP1aZv3HmFiW1CeQmdxuN2b/odV9I5MkmH3BKeeL7D8h4bYgtMw5l5p1ldDVzCTSRb9yu/2U9cPV82s2IVgroAY4KwpA5KgINZ/6WJ+LIEaVcvve1NxUK+VYUSUbMWqw3Rhq+65zMgG/IvyntmcrDsmbVub1CW2ZwpHKH3ngOHugoxc8SCiCDF5f7RZa1L8dPGme84SfnzGl48og73VO9i2CoiXlWteJdL4gfuY4BHs9PgRcA4KOoYMBkhFOIJjMQ3brO1hYqZf4RRoKVLsnUDBBwSElaUJamdgcJNE7jaKR3UkQPB8uDHHOLQo0lcROKJwJB5OaPr1qIoDhSsfqc7i372X62Tg6dltk9IHKkIsYC/lUm2LJdxCCGeUrLHVjGFayWDUgPwGZ+4t4hn1IMlDc8LA31geUnGIq8ymCNCXVfzfNZiLISiR0DpgUZkW0BF8miDtxupmOPDACXGJ2D9oPe+Q6fyLzr6vLasK+7uXBapRPeOiJKmB20xy3FtyU+m7IJOCfOuY7P5HK2gFwgtw9p+5Yb6TqSm3lfaghsK8Fcr3SKA9udVs7wrex4HXObLo4x1bZmxIzOwYeoAg1+SIrII+LKenVYIONCYmLEVlrtjPfyt1Faa3FBa0tIW0pURu1T4jVqGbmtI6Ew4dmrVxzB478YdosCw0ryX9YavJMqF0F6o2PJ1K0xxIq9uEM2RFofP3Q5WVCBdriR7wd3uHjUPm6CB5QTe+mER9VNNrb/ne2EzcMr5F67iHnUreTZMtb8zIrVs9gKqIEda4ELwg2k2dD/F0U1OJwVSQjamqq6Sr9B2n/Ng0TxdLRG95pNtXAEac9lBoJWGhBt0qSIAoLbUqf7TWVM5e6A483n3icGHF7fztGXdERik1DQjP/sGZCDVL9NaCtBSzqH7dpOaSwHeDTMINtwWu8ABq0yffnuagf3bnF6olgzGjj7hTPekYD0dHH+Yz47EAK0YbiiqrkF4jB9TVGaxeb6acKYv5GpuAFBTdDz6ZHnaKoBoh6N1x++e8NBzeVLx+bAvNIWBSOrKppBFPj1qz1Yg8fhY/K0WgDkZ5lFRQeOVLW2tcfYHd4ULmvFR1ZmypIPUmxGhMz+f0eLDWcddEmZt7rdKzgs3wwDWGsdXvCIQG+sdi5wnknrvEawYZc+PlTJr88JcbJQA8bzm+9WfGkOFUg/PuZrNU44nguSkBiccIOXZt6oXokxmxGGRMIECQ0jPEj2yISk8i7+tVSjp7hX3scE4mJ1ktXmkC+9CweECRSoMhBI6TQTQwrGrBYyQN6s9BZPEeTlIkaLYUckQp3D9/+B1p7oyJStHpg+kjWg9441CkRkSyVqqig8nDLA0ePG/+4aH9np/q/6ziFZzZ5XMxncujcZo9MiQDEHVzbEV0voYfpSNmef+P343/MfBtec1lnV1Hle5umRvmgr5fUBJ5SES3fzx8bCLN65OAmAmVe8J/dJTOOBw5JvNXOQetGrgWha9bsNoGYYWq34fGusG8LiB2h/pe2uioKkYAW5FLf59e1SritW1vFxSWVRipYhkj2+UX0T/oPIlpX4ddsZqu5gNLqdY6nYjM3GHLrExWHxOYSAW2B4ArDTOOoGTEFjk3BUzi2YGWIPntIRlHm9kqPIUJbNMBa+CJ6o8OmBWKwFXSCLdRawJQraFSoqMb7wlSf6ym49qlBvh/uGWICNzNBc1D8zCqIUb01sfJMmmhSx8B3X+rGDULbjpivG01AZ6dgvt6gZ75C+m9FG6qRxcwYwpDjUiaP6q9ZkeQPNlOJWJ5UMaDqyYjajF+YTt9GSLl0w76x0gcnOVUQ6/lFR2o2YptYUylJO2JPVCFJY3eZh3H5by5Z3PzeAfKnbK6m5vtV8g6sM4ZyQArP0Um6uI7T0WvYwNgmxx8kdGdXPPRLTWLEEKj2nHPko9uAl8Jr+ShnrWV67MdQ2HDk9TeGk4Hy9wGfnr0Sf9TXFJABezKUwJXsOQQ6opmxgrouVSS5NWwjRQfQ6BLWEr8SubZq//WCo522Xeyk00XbnccxNz7aI3Lp5MMzmKSNXlsoVybIRyeSyUtXGlUx6trJLKmezwtmWT+w/SF2fiORqmaApiEJvKT1203Vk7LVadQGeqOcVS6Z9vFFHFl98aI7reEXJIS8hjZUS3gbn6rVCxnxdWnSQ1ShlC3xq+S3PXhGrlcKl3lo/AaE2HS2Lb1M2t0YYnrSa+Mety6n/wXnykn/AoKcumOHrNABMey017c7Z5zDbmjIfafDAW7/hmKt0KRHUK9IGjhei0fuTVNuFoeUQNANFIGkCwuOAm/zKzP6u1gRBdXJaGeRNSBMQno6K33XB5Vj8hQDpAHDdJXaEcS1xtQHWavOEJxKrgs9J2dpOFGQccnDRV2kUSGO+hrE8waK5pje3sbaK/MFmRMWl1DrcXuh7IQ922LeaPk8/ookzhIggutFZ7weZ2vufuQXXAKs2CN+6iBozt3J83yJe/VjVc+lKPvyYDHZBLjX66Ff6ABZ3zhs9uud7BORqSRkRWmCxmSvVd2UKmTMeU9xRWgbogYtAY4OnNKVsD5L7Xsz3qxSVAeaQkpkMoWVuR2wRX6x9SUtbUMNf0OIw3u+anVG4wKtXHBbLJhKk81kokcJHqehQ6UgiHttmyAdwmfJEl2/cjrjT1pMPRiT6AJ4PyRyLrb9utbG1bL5jjlRrLF/7WhSHl9M8zxw34VtGVK61WwFOoJ+I2W9Ao1hbgdujJno16I99AeI7B7acBKbX60HJmktFGPA17bZvjkxqvjk8KYVbXvwjVRCyIETgKlxny9OKe8y7DDcefN67l8Nxf93dHf8eJBF4MO77QA4ucxCHtNdYi3oyC3Fxtd/AnnD0fsCt/YZQ+tDgzQ8qpTKMW4R5yZj0/stLLmFhbpHNmCC6nefLYVhAwbmbd4jg6Yi5yZrZpGmcNSADHjcDsK8CrsYlLoddKhGbzvTF5RWsN7/gLxiydgU8yB8WBgBgpGsnWmtIfy6U46F6F06Ax82PDXWQwGvCNpSG6DCw1jxsRMYop6WzZH2yXxym0gekCXqwCQ+K/qCcPWsCXDzm91VkERfN4tRq6WdaTNYHF9o5/+S/GJmKOYXttaUG8vrcejpjfEkG9hDfQoBiGJdyefa50Z72K9v9Y1mO226lYrdA3sJ0IYKvN+Ygz7pSKi5CiwdxLsXo9AiDJaAemmAB/2+uQvKm/wlZ1aEs14daYp8LG9+C4W/KWN67MuIRUy0YHR+7mJM3/RFRbsr99fp+R3SPg5uw90zEKDrV1bgvbf/bKu5qZdJe6g26hyy+hP4PAJ0g7RAEhIuQ7YW8ebKIhQCVcT1hQp2PuCkK7/qmzbz28KXdM3OP1un44aQ8wZ/DVSOPnqoe4qKhRMfQDG0wxy6eGNhEKQMPdzWLlqcu97po2I3S6TKi9hv2saC2YGJ7TdttBHSRNYAeYM18R6odf8O23BEYA5Hbezwx6soh1Ww0aqCVzPRYyq4CXHbSLSBAeOhY0LZZeLptJ+9zcZEtetGelrUvA4d7CWnNik1DkVekQ1rAx/tGor5dNGl+Vtw5T6GauuMu8Cxmy9XyD9GIbfCAgCFepu1waFfrgafkLz7CnXsb5x9J+a82OXIBEf8TnZGddvTAHRq+/O3zPQ4woVt1H9OWxnRHOobDRoGS3EPrTlAtvZDYKU3TPpScjiZAfMedFaJD2ExMjLNiW/GEuu2YLvs37xzc/kwyaKafrY0e84qyAysJhqAXbE+hgFhh/M6HnbJcYz466a0DHFjIU2rpPmFQ2OLO3enjiVFNI525u6BnbyUehS48N2M4LVogEIodEFog/rZ2GbQAYCrQ1o7zpbLZ0DiyuU7esVERvlI6miYT4MdLzX6l5M4OSH6xHTYOd7jE8LH1kfNEW2MbbOp4a2iIwI/mdCEtzD6XZehWMtCC4yfz28WFhY+Gzk2rZE52m1lv4V1EuTMzqfuonT5oZJaM90CJ5oOvopdPrwj09otezWe2JwTyhcsdk9IB0t5W1zMMuKHK+bIIU8+R9kbgSSmcLbO5/O0vcOQFmUObkSj5KdZNQkIQs5mjlf3qbQ7bEa4om5yeO7ejGF3/b6k/U6Z6ZBOXgiQ6b+Q7RzNAmRBPV6QruOAcWeNYOsvT25k9zh4O+y7TZyV3bs3GFdafLFyaoWrgBkysg2RSzH1KPfZpq95KuwYNO/jjna7QzM6erGgE3UGoGoopgdBVyKYg56HaDzdHGtFmOTu0+qnZIwu4IQYGh/7DSJxWqRtzNm5U2+uS4nCqQmOeEAnzqk0ATEIllMSgbH7G70Ddt8WV9IpGfMxeDe+vStngaqpATJm2J8YOfYGZq4rjhLMh1pJ+k8CA6OTGpJHpR/QeJIXKRkS+OQ3a/62I6pPqRnrhVxC7TDeQawQ8/lPICw59EwdcFOgiwShF/PlwPSwq4hrukFgkkciIy1tLzw2+UR8CMVHFFtfDROrEhcUHEZZTM8HGm5y59ghQb6Pxl8nHYzxttJmAIJv42hqR4gVZIOJv/pR3Ck8XTHcgQHUkfgrex9aSnH/jpk5jM51Uw6ZWq5J5AtVPmE6/5ktrGEhzjNI9BlEuhfSJRn/FlU136P02K5DA6byFRcg+wZCdZu9SIUaUXcNW22hVb5QtZUDD7LxXKTgx0IbsFm+nDgH8Od4QKkiyfsvxHXr5vqI7KCR0Z2ErCCBsCqDxMXoiO2JQCa1E3G7mdXVUyT7p7z3H5vY2l+q8hXLs74Z6GhkDcyu0DjpVgNB3r06l20sAU7NPJnwnColC1NdzoOrnkADYcs8k8BcHG+YyUVanU6Z7FgpenMWWnE3/01xno8E2bXTJ6d1J+sEuNnrDahqLYVWbP1VW4NK0Q5jnd7svqWF2YMXuGB3UFdPEZhA+g1o0ClNq87gJGa3MWxEWiay/WSVbXpgYappjG1o7CDn0mgj6s23xYdQ8qi6BaMIWuDQ2H0Jxvv64vE+6Ti3EflZchaVR+DE9QnTqH/24oydQ4LwOplQohlwY8t3gQ5Fm/X/+/14roZ2R+Ls+KcOzqriMDcDw5kzMRMkoS7Wswsh1YrXkecpkCxQe0MqnpprFj1yvVT2znkvqJ/r0T5thECN+/fK8vJh+KCEcZIAdr9DJpj2Og9T/OK6P1fJSphyTPe/SSwuLAS82Swu6CVkzlpL97Bu0rQEg2k1ZVJMGgSVczwu52We86OR9NT98R39fFj9Q6Py0nUAa51c6EknouAX/E538U58QBssk85x152iHIc7dAnT2+PElwSXyK8QNdhBfwo+q0t+SzdC+KP0f1yLgCPtiaDyv+lJXD/o7uoicCg3R+hlwm16iC/eCjooKvGeQRh4Nkc96tIRu93z51P86qElMfVQGrjLOiaWAMhmotYD0rCAQ5+C4xhwycHa3iI5pyRF++UFcUUsk28sjS5qb/rfRQ5P+r/d7+lREflXHsimyjP6Ggjgjn3mnJdjroHHilrFxb3Y02VpIYAcBAHC1Y2iAsht8YpzKUVTRHs42yFT9eeNNZmso8dzWHeI7eM16zIh0LElUzA4E3iWExxEOdrBJWg4z2seQRKaC5L/O1EDZlpCR9XuE2Jpq70+0A74JTjPEatvCSeTYx71F3EYtN5vC9YPKLIn/tkp9+nQR20zVQU69LfvBWncW+CMgf4zYle61lCDbl2Cxv76uf6DsmQQ4NPHCAHAORaaZj/WmD0ZRvEToI1dXOwvhtt1hGdJOSSm3yOW1g4PfFojGBMJhdlptsTLsT40wVMlSTuyvES6IWQC3XJWwK/ySiqKiIqx2caZfPF+KqcsaI+j9LiDVY2Q+ca2YQEGbsGNqyPsBUlU7zQdd7nd2ySC4Q3T3laf+QXIIFJ3wxrwNGCoCAl4H1BsWjscgF5MONA3ZkxXpDU8PmpUx8Gyh8CVdqv1Q3yf+udRGB01EatfbrrLoKVlphi8Mp4NB6P0OO3mW7KowtbMZJALsqxuqccHFIbmdx4uYY6zoXODD94MfSaXpQJ0RkHMBs8Okb/fMhZ9KjG6DAWXKUaj8mxJrgCfVCHM0p8Vl31NdSSnxcyLX57nqHoz6Q0r9f4mUsUyNfj6xZX01Tw8le87cZmkC2be9tpGiX1Xso68sXrpdxXpDhWGQnWYDAE63ie3iUhZOIM3bTyEpID39EYPzzY4I9S0c9D39l/4K2I2sTOfgaqOJE68J6wF0bGZ2SWvYCU8INUyOCrGMGjq6+onVb6At72ZEvDieqALGzTJNhSHgaECZIItFCdqfyMBQoVUvTiJhTzH6VmOY6ovQSba1nCt9Fh6RI6s1sR/lC9qCG3Pa9T1S5p1G8Vo7fLf/kVaq4gccZ7zgQgrKEGYVOtjnFq1xzeM7vKVPwZA9ao9wUgvLJLpfulS9jULCsYK3jJDUyqU+HhQvn5Q4Y5HZila9UwClBNHsmmeQoebRMgas2jqhXwuYY5vdh6OInR+VIyd2OANHt8EDvsoxG5bl53Z28bIiSmRqyY7OtM7cIjfJHWWe6x5C+qUtRXcm/EBGYyDi/+mz5Ui/fSB6IFSKOZ8bUkI4rEA23TPdBh1gYhCBoAe2qbmmHeNzKjnBvRAecirolkIsxiIPV9BnKf52zJ2ukiU4mEODxPnUSpfZAn6BB3cNgpZTdgsFBVMHfNUg86UKe6fjydNQWm9fQaCk59Wy2gV9fpbbJE9bPuSIaK2GM1ZzMmmJ+H9bkPuIYxA8PdKJd0pLqQDuLbG/ScbZDnHyQXjekuuNc6jer7AYxC5yieOqYAXHi6Bsu6rvphk5n+5yPMLUeF9x/RZ9SLiFRhugzDq9eHdNrppZgRPyugEtEpV2tKbA+qHiZNZ01XwJaOX9Oofx2q/KuCy8U+8dIBBkjkFr8= \ No newline at end of file diff --git a/lib/怡萱动漫[漫].js b/lib/怡萱动漫[漫].js new file mode 100644 index 0000000..418d386 --- /dev/null +++ b/lib/怡萱动漫[漫].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+aAoeiQseWKqOa8q1vmvKtdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy55eGRtLnR2JywKICAgIC8vIHVybDonL2NhdGVnb3J5Lmh0bWw/Y2hhbm5lbD0xNyZ6aG9uZ2xlaT1meWNsYXNzJm9yZGVyYnk9cHViZGF0ZSZ0b3RhbHJlc3VsdD0yOTk5JnBhZ2Vubz1meXBhZ2UnLAogICAgdXJsOiAnL2NhdGVnb3J5Lmh0bWw/Y2hhbm5lbD0xNyZ6aG9uZ2xlaT1meWNsYXNzZnlmaWx0ZXImcGFnZW5vPWZ5cGFnZScsCiAgICBmaWx0ZXJhYmxlOiAxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJyZ7e2ZsLmJ5fX0me3tmbC55ZWFyfX0me3tmbC5hcmVhfX0me3tmbC5zdGF9fSZ7e2ZsLmNsYXNzfX0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyVlQyOFNRUmpHdjh1ZU9iRFlmemJoNENmd1lub3hQU3gwRDFxc3loOGphVWhRUWdPazBpMHF0R0dMWW9KZ0MxVUxxWGJKMGkrek13dmZ3bDFtbUgxbnZIQm5qdnQ3bnJ6enZ1OWs5amxVbnV3bzIwOFBsWDA5cTJ3cnFiU21oSlFEN1lYdWZVenZtOGo2N24yLzBSSVpmZTQ2OERBcTltYUZubys5RHlVWEluUjYzNXJhdHZOM1FBV3ZVanFUaWdaNFlVUi9idEQxc1R2K3lCc0R2REJpOHhMWEJ2alRoRGNHT0xmclcwbmpXbElIblNQekZ6cTJsdXdjTnpyWTdGUHExNGxTc2pCNDNhT21EUTJVc0FyOXJqdXBjaFVJZ1IxbWRTMEpPcndiT1dON3lRNGo0Y2dEeXZ3cTBmazNFQ09DR0lHaUtvZ3FGTU9DR0FhaStwQVh2VzhnYmduaUZoUTNCWEVUaWh1Q3VBSEZkVUZjaCtLYUlLNUJVZGlRQ2pla0NodFM0WVpVWVVNcTNKQXFiRWdOTm9TYkk5ejRJY3FvL0lHNzluaENTNlhBdlplN3VGQmM4dDdSVVcxMnZqamgrZXZFMnlnbEM0TmJHRXpiZVdpZ2hCbEt2K2x4ekVBSUc4Sm91ZjFUYUtDRTlXQlUwZlVWMXdNaHJNTFhObW9PdUFxRUJPL1l3cVV6emtBSU8rSnVqQXREN2doQzJCVGRVNDl3VXhEQ0RGY3RYT0gzUUFnem5FK1FVZUlNaExEZlY5NE9udkRjUUFtYjRuM2ZyZk9MSW9STndXNldUVUVJcTFBNmM2d3lWNEVRWm5objRIeWRNeEFTL0dNTlZPbHhUUkxDZXFqMEhOdmtlaUFrV0ZSbit2T0NYOVNjc0FyVkkzUnl3MVVnaEZVd3Z6aVd4VlVnaEZYb0RIRytpd3h1VndGa3d3N2JzNHR2N3VkTGJsNEc0Uk9LWllQM2c2czFaSjM4OTM1dzQzYldHTkZTTDVON2VqS1dqYjdLeFBhMHRBNWZDODB6WUlvbm5zWDMvZU4yUS80Vkl0Tnl5eVdaaURJUlpTTEtSSlNKS0JOeHBSUHg4YzRqbVlVeUMyVVd5aXlVV1NpemNLV3pFQlZ2blhGZHhxR01ReG1ITWc1bEhNbzRYT0U0elAwRERWb2RwRGtjQUFBPScsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgVFY6IHtieTogJ29yZGVyYnk9cHViZGF0ZSd9LAogICAgICAgIOWJp+WcuueJiDoge2J5OiAnb3JkZXJieT1wdWJkYXRlJ30sCiAgICAgICAgT1ZBOiB7Ynk6ICdvcmRlcmJ5PXB1YmRhdGUnfSwKICAgICAgICDlhbbku5Y6IHtieTogJ29yZGVyYnk9cHViZGF0ZSd9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC5odG1sP2tleXdvcmQ9KiomUGFnZU5vPWZ5cGFnZScsCiAgICBzZWFyY2hhYmxlOiAyLC8v5piv5ZCm5ZCv55So5YWo5bGA5pCc57SiLAogICAgaGVhZGVyczogey8v572R56uZ55qE6K+35rGC5aS0LOWujOaVtOaUr+aMgeaJgOacieeahCzluLjluKZ1YeWSjGNvb2tpZXMKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgICB9LAogICAgY2xhc3NfbmFtZTogJ1RWJuWJp+WcuueJiCZPVkEm5YW25LuWJywKICAgIGNsYXNzX3VybDogJ1RWJuWJp+WcuueJiCZPVkEm5YW25LuWJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnLmRobmV3LmFkaiBsaTsqOyo7KjsqJywKICAgIOS4gOe6pzogJy5kaG5ldyBsaTthJiZ0aXRsZTtpbWcmJnNyYztwOmVxKC0xKSYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgICJ0aXRsZSI6ICJoMSYmVGV4dDsuZGh4eCBwOmVxKDQpJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5hbmltZS1pbWcmJmltZyYmc3JjIiwKICAgICAgICAiZGVzYyI6ICIuaW5mbzEtbGVmdCBsaTplcSgxKSYmVGV4dDsuZGh4eCBwOmVxKDMpJiZUZXh0Oy5kaHh4IHA6ZXEoMikmJlRleHQ7LmluZm8xLWxlZnQgbGk6ZXEoMCkmJlRleHQ7LmluZm8xLWxlZnQgbGk6ZXEoMikmJlRleHQiLAogICAgICAgICJjb250ZW50IjogIi5pbmZvMi0tc3Ryb25nJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIub2wtc2VsZWN0IGxpIiwKICAgICAgICAibGlzdHMiOiAiLm9sLWNvbnRlbnQ6ZXEoI2lkKSBsaSIKICAgIH0sCiAgICDmkJzntKI6ICcqOyo7KjtwOmVxKDMpJiZUZXh0OyonLAp9 \ No newline at end of file diff --git a/lib/想看影院.js b/lib/想看影院.js new file mode 100644 index 0000000..11bead5 --- /dev/null +++ b/lib/想看影院.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi7pppblm74yLuS6jOe6pywgewogICAgdGFiczogJy5zdHVpLXBhbm5lbF9faGVhZCBoMycsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ+mmluWbvjInLAogICAgdGl0bGU6ICfmg7PnnIvlvbHpmaInLAogICAgaG9zdDogJ2h0dHBzOi8veGlhbmdrYW4xLmNvbScsCiAgICB1cmw6ICcvbGlzdC1meWNsYXNzLWZ5cGFnZS5odG1sJywKICAgIGNsYXNzX3BhcnNlOiAnLnN0dWktaGVhZGVyX19tZW51IGxpOmd0KDApOmx0KDcpO2EmJlRleHQ7YSYmaHJlZjsuKi9saXN0LSguKj8pLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC0qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICDkuoznuqforr/pl67liY06ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgTVlfVVJMID0gTVlfVVJMLnJlcGxhY2UoJ3BsYXktJywgJ2RldGFpbC0nKTsKICAgIH0pLAogICAg5pCc57SiOiAndWwuc3R1aS12b2RsaXN0IGxpO2EmJnRpdGxlOy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsucGljLXRleHQmJlRleHQ7YSYmaHJlZicsCn0= \ No newline at end of file diff --git a/lib/我播.js b/lib/我播.js new file mode 100644 index 0000000..e5a606f --- /dev/null +++ b/lib/我播.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/22QsU7DMBCGd57Ck9tGJJ6QUCLES7QzMs61tmTHkX2JWyF2RmCGASYWNnbexrwGjpsuCC+n/9N/5/9u5I64QQO5IndnJL348RZfv2uyMHvbwcXiPFNUqCHB+PAUnz9nKK3HxCRi72vGQghVsLcWx0oINnuE5t7f9Nz5qb3q+Fga6IZSIRhPqVa1xuXlquGUrmGPU5UOtg0eemDLqrhenSYNTqcJzEsb2PaQ57Ke7yCJXGabB+6E3MzmLFhRlOV/3vj48vP1PuUytk1HOKYiJ3XsznDKlW/QKLOjtOXIS+9EU42qBZucTnE9r/CHTeuk/+5/ATp+H2lqAQAA \ No newline at end of file diff --git a/lib/我的哔哩[官].js b/lib/我的哔哩[官].js new file mode 100644 index 0000000..7712c78 --- /dev/null +++ b/lib/我的哔哩[官].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/掌心世界.js b/lib/掌心世界.js new file mode 100644 index 0000000..b0fe925 --- /dev/null +++ b/lib/掌心世界.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/文才2[资].js b/lib/文才2[资].js new file mode 100644 index 0000000..14deb53 --- /dev/null +++ b/lib/文才2[资].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgIOaooeadvzogJ+mHh+mbhjEnLAogICB0aXRsZTogJ+aWh+aJjTJb6LWEXScsCiAgIGhvc3Q6ICdodHRwczovL2FwaS56ZXFhaHQuY29tJywKICAgaG9tZVRpZDogJzc1JywKICAgdXJsOiAnL2luZGV4LnBocC9hamF4L2RhdGE/bWlkPTEmdGlkPWZ5ZmlsdGVyJnBhZ2U9ZnlwYWdlJmxpbWl0PTIwJywKICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC9hamF4L3N1Z2dlc3Q/bWlkPTEmd2Q9KiombGltaXQ9MTAwJywKICAgZGV0YWlsVXJsOiAnaHR0cHM6Ly93d3cuY2Zrajg2LmNvbS9kZXRhaWwvZnlpZCcsCiAgIGZpbHRlcl91cmw6ICd7e2ZsLuWIhuexu319JywKICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQTdXU3dVNkRRQkNHN3o0RjJUT0hGaWhVWDhWNDZJR1QycHNtcG1saVM2akFRYTB4cUxXSnB3YXFUV292UnFIdDA4Q3V2SVdGVkliWjdyV0VBL0Q5dXp2Zk1KMERhWHVST2ptU2pqc1NPVFd2Tms4a2RRWnNFUk5aSXUzV3VWbDhjUU5xMmZtWHk5YlpoYm1OdHd0a2g1a1ZGaWgvSlZKWGxrcm1qemNyUzZZb21IcGhzaG9EVlJGbHdURDlpVXVxMWpCMUZ2OEZGV3QxUkdsL3h2d2hVQU9mTzdtcDd0emtLS2dXNTJKS2UvZjAyZ2VLejJYZW5LM2VnVFo0WC9aWU1jSysxUEpvZndSVXc5UjVUaUlYakxpZEJ3L1p5eFRXMW5GVnZYVTJXb012cHFuOWxjUmdwT1ZWbld4dUdjWkQyZGQ0dks2U0tLaE9TSjJ6bmdWc2ZZc0NXSngrejlPN1R4VGdKdUZwa3IxTnF3RmRFZWlqUUhPM0ErcGVPOERpNWE4YlFRR0hBa2N1WTlRRW1ueEdFVFNUejZpQ2J2QVpiYmNoMm41SHdndnA4Z01LYUlqK0taZlJSWlBEWll5dFNPSFIvUVAvc2NXTEFRVUFBQT09JywKICAgZmlsdGVyX2RlZjogewogICAgIDE6IHsg5YiG57G7OiAnMScgfSwyOiB7IOWIhuexuzogJzInIH0sMzogeyDliIbnsbs6ICczJyB9LDQ6IHsg5YiG57G7OiAnNCcgfQogICAgfSwKICAgaGVhZGVyczogewogICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vd3d3LmNma2o4Ni5jb20vJwogICB9LAogICDmkJzntKI6ICdqc29uOmxpc3Q7bmFtZTtwaWM7O2lkJywKICAg5Zu+54mH5pu/5o2iOiAnaHR0cHM6Ly9hcGkuemVxYWh0LmNvbT0+aHR0cHM6Ly9vYnMuZ2R1YW1vZS5jb20nLAogICDkuoznuqc6IHsKICAgICAgdGl0bGU6ICcudGl0bGUmJlRleHQ7JywKICAgICAgaW1nOiAnJywKICAgICAgZGVzYzogJzs7OzsnLAogICAgICBjb250ZW50OiAnLndyYXBwZXJfbW9yZV90ZXh0JiZUZXh0JywKICAgICAgdGFiczogJy5wbGF5ZXJfbmFtZScsCiAgICAgIGxpc3RzOiAnLmxpc3RpdGVtIGEnLAogICB9LAogICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICBsZXQgdXJsX2lkID0gaW5wdXQuc3BsaXQoJy8nKVs1XTsKICAgICAgbGV0IGppc2h1X2lkID0gaW5wdXQuc3BsaXQoJy8nKVs3XTsKICAgICAgbGV0IHQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgICAgZXZhbChnZXRDcnlwdG9KUyk7CiAgICAgIGxldCBzaWdua2V5ID0gJ2lkPScgKyB1cmxfaWQgKyAnJm5pZD0nICsgamlzaHVfaWQgKyAnJmtleT1jYjgwODUyOWJhZTZiNmJlNDVlY2ZhYjI5YTQ4ODliYyZ0PScgKyB0OwogICAgICBsZXQga2V5ID0gQ3J5cHRvSlMuU0hBMShDcnlwdG9KUy5NRDUoc2lnbmtleSkudG9TdHJpbmcoKSkudG9TdHJpbmcoKTsKICAgICAgbGV0IGpzb25fZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly93d3cuY2Zrajg2LmNvbS9hcGkvbXctbW92aWUvYW5vbnltb3VzL3ZpZGVvL2VwaXNvZGUvdXJsP2lkPScgKyB1cmxfaWQgKyAnJm5pZD0nICsgamlzaHVfaWQsIHsKICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAnVXNlci1BZ2VudCc6IFBDX1VBLAogICAgICAgICAgICAnZGV2aWNlaWQnOiAnNThhODBjNTItMTM4Yy00OGZkLThlZGItMTM4ZmQ3NGQxMmM4JywKICAgICAgICAgICAgJ3NpZ24nOiBrZXksCiAgICAgICAgICAgICd0JzogdAogICAgICAgICB9CiAgICAgIH0pKTsKICAgICAgbGV0IHVybCA9IGpzb25fZGF0YS5kYXRhOwogICAgICBsb2codXJsKTsKICAgICAgaWYgKHVybCkgewogICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICBoZWFkZXI6IHJ1bGUuaGVhZGVycwogICAgICAgICB9OwogICAgICB9CgogICB9KSwKICAgY2xhc3NfbmFtZTogJ+eUteW9sSbnlLXop4Ym57u86Im6JuWKqOa8qycsCiAgIGNsYXNzX3VybDogJzEmMiYzJjQnLAogICBjbGFzc19wYXJzZTogJycKfQ== \ No newline at end of file diff --git a/lib/文才[资].js b/lib/文才[资].js new file mode 100644 index 0000000..bda98ef --- /dev/null +++ b/lib/文才[资].js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV5hJyHcdj7f1dyct+hTD1Zm4tlENfmYNijfZ7CkdPOKt7JpGlwFnCFqQwnyp8ORjPEna+R/wN6CroysNR+iDwsoOLrxSkhoZxXJb6tJi68d56ulTQCBPfL044SGpXl/F31i6+CPTxxERBzVYyq8Xl7x628cbA9/Xy2Gj2E9EadFoUq7McmeHN4hlV6WpFW/aEQdMZLfn/5QY4i0NZDo89XJOgwK3oYZLaqdwhxmw31Wf70bGTvOakjsRXUL6Wu716S5jP8e14QVPIob+R7ncQe1hqAPJbRbmb+QhO62ORV/mK9tIFL/rFC9/wd4YSSR3FH0jbqckFlKazTQ4E7z/bnvplN6QAotjtvGFfxhV+w7Jo+aE7QTG5FQSvUCbc7cJPlZfZp9OOGnChvbLNBtjfV7fI6+uLu8DQmufe/Ez9b/zsCQwB861HKdz8MSpgrhPly2en1rzJd91J2OOhdx/IvdZxtdM3wADZeL0vQVVwFg8IufLslTDjIOhbt1W6cSqb6G0h7Z6r+lUBnyZ4r72uXHby0BcIxhbh6U2TFwextBqKlZC9e26tPQoxhNTQbhbcooGgxZcik6RNeFZLDggVbI8SuGeVm7mY/muBynt/KrSiEXMbLXExwm8a0nP5P+vVv19DvXsCTP+g87FJz2QqnncHFyfyrpUdGRSM0f3dLKQRPVKfNNtzl1iXomUKFqQgaTkq86vzNzi9WLbaLm8PiOjUo6jtkWI74M0FuCBI2TaLZBLGdFFSFZDZzDq5Fpn+lTwSnj/nu5pSEU1yLOpMptZwiJuNG4UkiDLxftJWYvcmcMdUTIX7NtZQBonJParvtB6oXLo5/6xxey3w3ZO8byhXBvr+NeWaHhNDODXnexRMhQd5+cnAieV73jNInzYApySWGjnlhc/CxMDAknKIL4APmxqTUzV6SxSivEoG3yMx2gSowuXmTkrGHbqqCK5n6DSm6R6zaYsD6P1/GlpV6jSM/8CMueym+MrWAR5SuLVLcRBd7LOlkx2OI9VjJ0EATmAmkxz8+XVv1Kn6/QsLFaATDsKMhnAiyP7FBwZg1CaJKdVq7VQH7KV3xfPwJuW5e+OH9FfiMWTmn+xP6hu1N86NYis8sHvFJT0t5srLJfmerzvzgtfaOUn8hManKj9t53a6TLHWOv30ctiiF37kkAV12HBCgFct4kKQLgfmBInYrCM0fFH3wJoLG8qYbcRTBdaBhxe5FzEH+EqbxO1n+dCJtrmqom5a0gt83KZS1UFeL1xbYZzRyzifb1+wnHjghAAC/kFyYQVDGb2eGW1tx26TfeXTt0uJnsyhXDw7QXGSGoRnUCAEKxdh0A+6pNhKw== \ No newline at end of file diff --git a/lib/斗鱼直播.js b/lib/斗鱼直播.js new file mode 100644 index 0000000..0ea4b5d --- /dev/null +++ b/lib/斗鱼直播.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/斗鱼直播[官].js b/lib/斗鱼直播[官].js new file mode 100644 index 0000000..e4f55cd --- /dev/null +++ b/lib/斗鱼直播[官].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/新茶杯狐.js b/lib/新茶杯狐.js new file mode 100644 index 0000000..9367644 --- /dev/null +++ b/lib/新茶杯狐.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/新视觉.js b/lib/新视觉.js new file mode 100644 index 0000000..6cdb717 --- /dev/null +++ b/lib/新视觉.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/新视觉.json b/lib/新视觉.json new file mode 100644 index 0000000..25a3825 --- /dev/null +++ b/lib/新视觉.json @@ -0,0 +1,1200 @@ +{ + "作者": "荷城茶秀", + "站名": "新视觉影视", + "主页url": "https://www.6080yy4.com/", + "简介": "剧情:&&", + "主演": "主演:&&
    ", + "影片类型": "video-tag-icon\">&&立即播放", + "影片状态": "集数:&&", + "数组": "module-item-pic\">&&module-item\">", + "图片": "data-src=\"&&\"", + "标题": "title=\"&&\"", + "副标题": "module-item-text\">&&", + "链接": "href=\"&&\"", + "线路数组": "data-dropdown-value=&&[不包含:夸克]", + "线路标题": "&&
    [替换:>>>线路共]+集", + "播放数组": "sort-item\"&&", + "播放标题": "&&", + "播放列表": "", + "分类url": "https://www.6080yy4.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;akx", + "分类": "电影$1#电视剧$2#综艺$3#动漫$4", + "筛选": { + "1": [ + { + "key": "cateld", + "name": "类型", + "value": [ + { + "n": "全部类型", + "v": "" + }, + { + "n": "动作片", + "v": "25" + }, + { + "n": "喜剧片", + "v": "26" + }, + { + "n": "爱情片", + "v": "27" + }, + { + "n": "科幻记", + "v": "28" + }, + { + "n": "恐怖片", + "v": "30" + }, + { + "n": "剧情片", + "v": "31" + }, + { + "n": "战争片", + "v": "33" + }, + { + "n": "记录片", + "v": "35" + }, + { + "n": "悬疑片", + "v": "36" + }, + { + "n": "犯罪片", + "v": "38" + }, + { + "n": "冒险片", + "v": "40" + }, + { + "n": "动画片", + "v": "41" + }, + { + "n": "惊悚片", + "v": "43" + }, + { + "n": "奇幻片", + "v": "44" + }, + { + "n": "理论片", + "v": "46" + } + ] + }, + { + "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": "网络电影" + } + ] + }, + { + "key": "area", + "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": "lang", + "name": "语言", + "value": [ + { + "n": "全部语言", + "v": "" + }, + { + "n": "国语", + "v": "国语" + }, + { + "n": "英语", + "v": "英语" + }, + { + "n": "粤语", + "v": "粤语" + }, + { + "n": "闽南语", + "v": "闽南语" + }, + { + "n": "韩语", + "v": "韩语" + }, + { + "n": "日语", + "v": "日语" + }, + { + "n": "其它", + "v": "其它" + } + ] + }, + { + "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", + "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" + } + ] + }, + { + "key": "by", + "name": "排序", + "value": [ + { + "n": "全部排序", + "v": "" + }, + { + "n": "时间排序", + "v": "time" + }, + { + "n": "人气排序", + "v": "hits" + }, + { + "n": "评分排序", + "v": "score" + } + ] + } + ], + "2": [ + { + "key": "cateId", + "name": "类型", + "value": [ + { + "n": "全部类型", + "v": "" + }, + { + "n": "国产剧", + "v": "42" + }, + { + "n": "欧美剧", + "v": "45" + }, + { + "n": "日韩剧", + "v": "47" + }, + { + "n": "港台剧", + "v": "49" + }, + { + "n": "泰剧", + "v": "51" + }, + { + "n": "海外剧", + "v": "52" + } + ] + }, + { + "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": "其他" + } + ] + }, + { + "key": "area", + "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": "lang", + "name": "语言", + "value": [ + { + "n": "全部语言", + "v": "" + }, + { + "n": "国语", + "v": "国语" + }, + { + "n": "英语", + "v": "英语" + }, + { + "n": "粤语", + "v": "粤语" + }, + { + "n": "闽南语", + "v": "闽南语" + }, + { + "n": "韩语", + "v": "韩语" + }, + { + "n": "日语", + "v": "日语" + }, + { + "n": "其它", + "v": "其它" + } + ] + }, + { + "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", + "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" + } + ] + }, + { + "key": "by", + "name": "排序", + "value": [ + { + "n": "全部排序", + "v": "" + }, + { + "n": "时间排序", + "v": "time" + }, + { + "n": "人气排序", + "v": "hits" + }, + { + "n": "评分排序", + "v": "score" + } + ] + } + ], + "3": [ + { + "key": "cateId", + "name": "类型", + "value": [ + { + "n": "全部类型", + "v": "" + }, + { + "n": "大陆综艺", + "v": "20" + }, + { + "n": "日韩综艺", + "v": "21" + }, + { + "n": "港台综艺", + "v": "22" + }, + { + "n": "欧美综艺", + "v": "23" + }, + { + "n": "演唱会", + "v": "24" + } + ] + }, + { + "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": "求职" + } + ] + }, + { + "key": "area", + "name": "地区", + "value": [ + { + "n": "全部地区", + "v": "" + }, + { + "n": "内地", + "v": "内地" + }, + { + "n": "港台", + "v": "港台" + }, + { + "n": "日韩", + "v": "日韩" + }, + { + "n": "欧美", + "v": "欧美" + } + ] + }, + { + "key": "lang", + "name": "语言", + "value": [ + { + "n": "全部语言", + "v": "" + }, + { + "n": "国语", + "v": "国语" + }, + { + "n": "英语", + "v": "英语" + }, + { + "n": "粤语", + "v": "粤语" + }, + { + "n": "闽南语", + "v": "闽南语" + }, + { + "n": "韩语", + "v": "韩语" + }, + { + "n": "日语", + "v": "日语" + }, + { + "n": "其它", + "v": "其他" + } + ] + }, + { + "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", + "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" + } + ] + }, + { + "key": "by", + "name": "排序", + "value": [ + { + "n": "全部排序", + "v": "" + }, + { + "n": "时间排序", + "v": "time" + }, + { + "n": "人气排序", + "v": "hist" + }, + { + "n": "评分排序", + "v": "score" + } + ] + } + ], + "4": [ + { + "key": "cateId", + "name": "类型", + "value": [ + { + "n": "全部类型", + "v": "" + }, + { + "n": "国产动漫", + "v": "29" + }, + { + "n": "日韩动漫", + "v": "32" + }, + { + "n": "欧美动漫", + "v": "34" + }, + { + "n": "港台动漫", + "v": "37" + } + ] + }, + { + "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": "其他" + } + ] + }, + { + "key": "area", + "name": "地区", + "value": [ + { + "n": "全部地区", + "v": "" + }, + { + "n": "国产", + "v": "国产" + }, + { + "n": "日本", + "v": "日本" + }, + { + "n": "欧美", + "v": "欧美" + }, + { + "n": "其他", + "v": "其他" + } + ] + }, + { + "key": "lang", + "name": "语言", + "value": [ + { + "n": "全部语言", + "v": "" + }, + { + "n": "国语", + "v": "国语" + }, + { + "n": "英语", + "v": "英语" + }, + { + "n": "粤语", + "v": "粤语" + }, + { + "n": "闽南语", + "v": "闽南语" + }, + { + "n": "韩语", + "v": "韩语" + }, + { + "n": "日语", + "v": "日语" + }, + { + "n": "其它", + "v": "其它" + } + ] + }, + { + "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", + "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" + } + ] + }, + { + "key": "by", + "name": "排序", + "value": [ + { + "n": "全部排序", + "v": "" + }, + { + "n": "时间排序", + "v": "time" + }, + { + "n": "人气排序", + "v": "hist" + }, + { + "n": "评分排序", + "v": "score" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/lib/旋风视频.js b/lib/旋风视频.js new file mode 100644 index 0000000..f34478a --- /dev/null +++ b/lib/旋风视频.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/无忧影视.js b/lib/无忧影视.js new file mode 100644 index 0000000..513b9c1 --- /dev/null +++ b/lib/无忧影视.js @@ -0,0 +1 @@ +qz2VfkB3O9fqiff5MjJa/AGPqh+RieRT1xCDC/uYMyxmYSfBqy6ywasp0y8aCxcZSoZd8rmoi1vsLOh9ZzQP+AhMtFtQVHwyxv1MlTI8UfQpPop2fHk1PqP5DBP6t2Jtf6/B4lGz86yJWCYbhkBDAT9A0uktyER9pRWkrwD8Pz4zs/sFLBliNtVIWFTSV3P1aNwlm467R141OeAxxo3/xvOVgCcfV8eG1pQI5m1Q0YftyrOs7Buxt5g8fu79Niq1TZ92z6qhKFj4EdL+ZLhRWaq5XmSsG6qtmfSn+JFrPCOQgrTsoHtD10kF8VsaT+oWIi8MHGPrBTSAKrvFaoFvmV3aq1wvgW7cs07fu7OZo5XD9M4XLSQ7F4kUtJjPRoUyXlY6JJWrdrEe0mphY8yWI6qCLaxTQUj3YgxdEy9GYvqvchboLKEFnBRLPqZpdhx+rsEb+fkz0eHO2W1EPcYAPWSaCKVipFhE2BhmPAr0hc60YyVJJ2411VM+C5cX59I/CjevytT6jCizIc8Ngyi1FlhR4Pcepo8s1SpCQAcG9HCHA5upr5KSK2nMboQUGHeOLriclfu42eJ8vt4k+iy0vA== \ No newline at end of file diff --git a/lib/时光影院.js b/lib/时光影院.js new file mode 100644 index 0000000..237088d --- /dev/null +++ b/lib/时光影院.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWVx0m7uwstVbsPzuQmO9TORIf3EnmRlIE0CMN/WgfkcoHBPRDaMgxFCqqo60jd8zQwR5EshIMRv4AEoZzJLN/t4TDS+4+eWKjQL+FgL8KPrTCcRmQEvFBLj70eulr0dAtXr2XrrWz6KKdMZmEltFj913a4n9AFLLLe3JV2ToxSQk3ZvAKUoDok9ZGUH2TSaaTgFx1KsdqAlmXg0wWxaHtzQT03UMznOexHwxWBeK/wKPMwpzLLjovZQzidZTm3NZGXHX5CkV3c0z9UkF/XgEdIAI= \ No newline at end of file diff --git a/lib/易看影视.js b/lib/易看影视.js new file mode 100644 index 0000000..7fe8eab --- /dev/null +++ b/lib/易看影视.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICdteHBybycsCiAgICB0aXRsZTogJ+aYk+eci+W9seinhicsCiAgICBob3N0OiAnaHR0cDovL3R2Lnlremo2LmNuJywKICAgIHVybDogJy9pbmRleC5waHAvdm9kL3Nob3cvaWQvZnljbGFzcy9wYWdlL2Z5cGFnZS5odG1sJywKICAgIHRhYl9leGNsdWRlOiAn5o6S5bqPJywKICAgIHNlYXJjaFVybDogJy9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyBsaTpndCgwKTpsdCg5KTthJiZUZXh0O2EmJmhyZWY7LyhcXGQrKS5odG1sJywKfQ== \ No newline at end of file diff --git a/lib/星空影院.js b/lib/星空影院.js new file mode 100644 index 0000000..d64d075 --- /dev/null +++ b/lib/星空影院.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/32PPQrCQBCFe0+xlf/J1ireQjtBxmTjBjdu2J3EBPEKClZaiGilpa0gnsaIt3ANAa2cZmbex3vMxKCIigQjXTIvEVPZ6ZDt7m1SCZJQyUozF9FHwYyWbfbP8/Vxu7y2xwJxqdEQjhjqNqXJJE1btiODAkdKGEpj6WouZ9RLHQFaW0V5aQhjZgabYyAKi2agHN7/GvOd1uuW9deXJw9DUPpzqj2FeATK8pEFmgi/A+VyjyX46Vwxr0Org4HbqP0mIIyGLHFE5ObPLteP68qgxRt4sUvsJQEAAA== \ No newline at end of file diff --git a/lib/星芽短剧[优].js b/lib/星芽短剧[优].js new file mode 100644 index 0000000..e8fca74 --- /dev/null +++ b/lib/星芽短剧[优].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflvbHop4YnLAogICAgdGl0bGU6ICfmmJ/oir3nn63liadb5LyYXScsCiAgICBob3N0OiAnaHR0cHM6Ly9hcHAud2hqemp4LmNuJywKICAgIHVybDogJy9jbG91ZC92Mi90aGVhdGVyZnlmaWx0ZXInLAogICAgZmlsdGVyX3VybDogJy9ob21lX3BhZ2U/dGhlYXRlcl9jbGFzc19pZD1meWNsYXNzJnR5cGU9MSZ7e2ZsLnR5cGUgb3IgImNsYXNzMl9pZHM9MCJ9fSZwYWdlX251bT1meXBhZ2UmcGFnZV9zaXplPTI0JywKICAgIHNlYXJjaFVybDogJy92My9zZWFyY2gnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAxLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUE2dm1VZ0FDSlVNbEs0Vm9NQk1FcXVFc3NHUjJhaVZRV3Fta3NpQlZTUWRWS2k4eE54VWs5M3pqN3FmenV0Rmx5eEp6U2xOUlRNWnVBOEk0a0ZsUFcxZThiRjZCWmhiQ1RKQ1M1SnpFNG1LaitNeVVZbHNESlF4MXRaaGE4ZG4zc25udjB4MU54TnBuUXJGOVQvdVh2RmpjU3F4OXBoVGI5N3h2dzVQZGkxK3NhSGpXVExTdGhwUmIrNnhqeHZPbDg0aTEwSWp5Y0gzWjBQWmkwVnBpTFRTblBGeFg3bit4cll2b0VLWGN3cWQ5YlUvN054R2RVQ25QR1MrMnpuaTZjai9SVVdoR2VaQXVuZmUwWnpmUkZsS2VTRisyOXo2Zk1wOVlDNm5nd1Nsem5xNWJRS3g5eHNiVUtHeEl6dnpHVk1nYmZTMVBkeElka2NhVVIrU0xDVDFQMTgwbDFrSkx5dTFybWZoc0M5R2xtN0VSeFJZKzJiV0poQ2cwTWFUY2h6TW5QR3RFcjlKeFdtaUJ4VDRVa1ZndVZQRllybG9BOEhxTmNud0lBQUE9JywKICAgIGhlYWRlcnM6IHsKICAgICAgICAiWC1BcHAtSWQiOiAiNyIsCiAgICAgICAgInBsYXRmb3JtIjogIjEiLAogICAgICAgICJtYW51ZmFjdHVyZXIiOiAiWGlhb21pIiwKICAgICAgICAidmVyc2lvbl9uYW1lIjogIjMuMi4wLjEiLAogICAgICAgICJ1c2VyX2FnZW50IjogIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMTsgTTIwMTJLMTBDIEJ1aWxkL1JQMUEuMjAwNzIwLjAxMTsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS84Ny4wLjQyODAuMTQxIE1vYmlsZSBTYWZhcmkvNTM3LjM2IiwKICAgICAgICAiZGV2X3Rva2VuIjogIkJZMXdGWmQ0SzB2RHF6Vk1idEhYTm1sUTI5b3ZPNXBlUzVNc1o3VlgxclFVWER3QXFza3hrSnRpUE1aQ0VqNk1hVy00MHhObmJ2bjEyRjY4bkxFQU1rUm9EN3Rwb2llTzRua1VFLUdMT1l4cUNzMHhteFdnWEFoMC03Tm1tR0NIaTk1U2x5WmxwSGVpdDk0SmZKUGtwby1obDRKRnJ1MndVSS00UDBBd0RjNVkqIiwKICAgICAgICAiYXBwX3ZlcnNpb24iOiAiMy4yLjAuMSIsCiAgICAgICAgImRldmljZV9wbGF0Zm9ybSI6ICJhbmRyb2lkIiwKICAgICAgICAicGVyc29uYWxpemVkX3JlY29tbWVuZF9zdGF0dXMiOiAiMSIsCiAgICAgICAgImRldmljZV90eXBlIjogIk0yMDEySzEwQyIsCiAgICAgICAgImRldmljZV9icmFuZCI6ICJSZWRtaSIsCiAgICAgICAgIm9zX3ZlcnNpb24iOiAiMTEiLAogICAgICAgICJjaGFubmVsIjogImRlZmF1bHQiLAogICAgICAgICJyYXdfY2hhbm5lbCI6ICJkZWZhdWx0IiwKICAgICAgICAib2FpZCI6ICI5NDk0ODE3YTAyYTkzNDM1IiwKICAgICAgICAibXNhX29haWQiOiAiOTQ5NDgxN2EwMmE5MzQzNSIsCiAgICAgICAgInV1aWQiOiAicmFuZG9tVVVJRF9mODdjMDFjNy0zZDYxLTRmZWItYWRlMC0zZDZkNDVkMjRkZmQiLAogICAgICAgICJkZXZpY2VfaWQiOiAiMjNiMDdjZjg0MGM4YjNlZWNhOGMwMWZjNTZmMGYwYTA5IiwKICAgICAgICAic3VwcG9ydF9oMjY1IjogIjEiLAogICAgICAgICJIb3N0IjogImFwcC53aGp6anguY24iLAogICAgICAgICJDb25uZWN0aW9uIjogIktlZXAtQWxpdmUiLAogICAgICAgICJVc2VyLUFnZW50IjogIm9raHR0cC80LjEwLjAiCiAgICB9LAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX25hbWU6ICfliaflnLom54Ot5pKt5YmnJuS8muWRmOS4k+S6qybmmJ/pgInlpb3liacm5paw5YmnJumYs+WFieWJp+WcuicsCiAgICBjbGFzc191cmw6ICcxJjImOCY3JjMmNScsCiAgICDpooTlpITnkIY6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGh0bWwgPSBwb3N0KCdodHRwczovL3Uuc2h5dGtqZ3MuY29tL3VzZXIvdjEvYWNjb3VudC9sb2dpbicsIHsKICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2todHRwLzQuMTAuMCcsCiAgICAgICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2d6aXAnLAogICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLAogICAgICAgICAgICAgICAgJ3gtYXBwLWlkJzogJzcnLAogICAgICAgICAgICAgICAgJ3BsYXRmb3JtJzogJzEnLAogICAgICAgICAgICAgICAgJ21hbnVmYWN0dXJlcic6ICdyZWFsbWUnLAogICAgICAgICAgICAgICAgJ3ZlcnNpb25fbmFtZSc6ICczLjMuMScsCiAgICAgICAgICAgICAgICAndXNlcl9hZ2VudCc6ICdNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgOTsgUk1YMTkzMSBCdWlsZC9QUTNBLjE5MDYwNS4wNTA4MTEyNDsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS85MS4wLjQ0NzIuMTE0IE1vYmlsZSBTYWZhcmkvNTM3LjM2JywKICAgICAgICAgICAgICAgICdhcHBfdmVyc2lvbic6ICczLjMuMScsCiAgICAgICAgICAgICAgICAnZGV2aWNlX3BsYXRmb3JtJzogJ2FuZHJvaWQnLAogICAgICAgICAgICAgICAgJ3BlcnNvbmFsaXplZF9yZWNvbW1lbmRfc3RhdHVzJzogJzEnLAogICAgICAgICAgICAgICAgJ2RldmljZV90eXBlJzogJ1JNWDE5MzEnLAogICAgICAgICAgICAgICAgJ2RldmljZV9icmFuZCc6ICdyZWFsbWUnLAogICAgICAgICAgICAgICAgJ29zX3ZlcnNpb24nOiAnOScsCiAgICAgICAgICAgICAgICAnY2hhbm5lbCc6ICdkZWZhdWx0JywKICAgICAgICAgICAgICAgICdyYXdfY2hhbm5lbCc6ICdkZWZhdWx0JywKICAgICAgICAgICAgICAgICdvYWlkJzogJycsCiAgICAgICAgICAgICAgICAnbXNhX29haWQnOiAnJywKICAgICAgICAgICAgICAgICd1dWlkJzogJ3JhbmRvbVVVSURfOTE0ZTdhOWItZGVhYy00ZjgwLTkyNDctZGI1NjY2OTE4N2RmJywKICAgICAgICAgICAgICAgICdkZXZpY2VfaWQnOiAnMjQyNTA2ODNhM2JkYjNmMTE4ZGZmMjViYTRiMWNiYTFhJywKICAgICAgICAgICAgICAgICdhYl9pZCc6ICcnLAogICAgICAgICAgICAgICAgJ3N1cHBvcnRfaDI2NSc6ICcxJwogICAgICAgICAgICB9LAogICAgICAgICAgICBib2R5OiAiZGV2aWNlPTI0MjUwNjgzYTNiZGIzZjExOGRmZjI1YmE0YjFjYmExYSZpbnN0YWxsX2ZpcnN0X29wZW49ZmFsc2UmZmlyc3RfaW5zdGFsbF90aW1lPTE3MjMyMTQyMDUxMjUmbGFzdF91cGRhdGVfdGltZT0xNzIzMjE0MjA1MTI1JnJlcG9ydF9saW5rX3VybD0iCiAgICAgICAgfSk7CiAgICAgICAgcnVsZS5oZWFkZXJzWydhdXRob3JpemF0aW9uJ10gPSBKU09OLnBhcnNlKGh0bWwpLmRhdGEudG9rZW4KICAgIH0pLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgfQogICAgfSksCiAgICBkb3VibGU6IHRydWUsCiAgICDkuIDnuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQsIHtoZWFkZXJzOiBydWxlLmhlYWRlcnN9KTsKICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5saXN0OwogICAgICAgIGRhdGEuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgIGxldCBpZCA9ICdodHRwczovL2FwcC53aGp6anguY24vdjIvdGhlYXRlcl9wYXJlbnQvZGV0YWlsP3RoZWF0ZXJfcGFyZW50X2lkPScgKyBpdC50aGVhdGVyLmlkOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdXJsOiBpZCwKICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aGVhdGVyLnRpdGxlLAogICAgICAgICAgICAgICAgaW1nOiBpdC50aGVhdGVyLmNvdmVyX3VybCwKICAgICAgICAgICAgICAgIGRlc2M6IGl0LnRoZWF0ZXIudGhlbWUsCiAgICAgICAgICAgIH0pCiAgICAgICAgfSkKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICB9KSwKICAgIOS6jOe6pzogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgdXJscyA9IFtdOwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwge2hlYWRlcnM6IHJ1bGUuaGVhZGVyc30pOwogICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShodG1sKS5kYXRhOwogICAgICAgIGRhdGEudGhlYXRlcnMuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgIHVybHMucHVzaChpdC5udW0gKyAnJCcgKyBpdC5zb25fdmlkZW9fdXJsKTsKICAgICAgICB9KQogICAgICAgIFZPRCA9IHsKICAgICAgICAgICAgdm9kX25hbWU6IGRhdGEudGl0bGUsCiAgICAgICAgICAgIHZvZF9waWM6IGRhdGEuY292ZXJfdXJsLAogICAgICAgICAgICB2b2RfcGxheV9mcm9tOiAn56eL56eLJywKICAgICAgICAgICAgdm9kX3BsYXlfdXJsOiB1cmxzLmpvaW4oJyMnKQogICAgICAgIH07CiAgICB9KSwKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHBvc3QoaW5wdXQsIHtoZWFkZXJzOiBydWxlLmhlYWRlcnMsIGJvZHk6IHsidGV4dCI6IEtFWX19KQogICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5kYXRhLnRoZWF0ZXIuc2VhcmNoX2RhdGE7CiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgbGV0IGlkID0gJ2h0dHBzOi8vYXBwLndoanpqeC5jbi92Mi90aGVhdGVyX3BhcmVudC9kZXRhaWw/dGhlYXRlcl9wYXJlbnRfaWQ9JyArIGl0LmlkOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdXJsOiBpZCwKICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aXRsZSwKICAgICAgICAgICAgICAgIGltZzogaXQuY292ZXJfdXJsLAogICAgICAgICAgICAgICAgY29udGVudDogaXQuaW50cm9kdWN0aW9uLAogICAgICAgICAgICB9KQogICAgICAgIH0pCiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgfSksCn0= \ No newline at end of file diff --git a/lib/星辰CT.js b/lib/星辰CT.js new file mode 100644 index 0000000..a79526a --- /dev/null +++ b/lib/星辰CT.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/4VTPY8TMRDt71dYASV2lNjJcYLThkABFQVX3FEBihyvk3XkePfs2XAL7D+goEJIgBAUQElBdcXxZyAH/wLvByHJncQWa3ve+M3M27cH45kUQLlzamrwPB1zQ39/evXzzdku/XH64vz0cwc920H+aQAfu0aAGtTwRbc4NJu80akwrRxUoINUdUVsQBoYjRLNswIL5DG+okLirwQmBhwUGVwZh/u9/R4hnicng50Ft8imWqJhXXT55cPy3fcAteqeWlU9UKCljy5fv/919vXOUR2OYl8JtSKAxAWMCQUZLKgQNZxa7VEGCzbJhPYjdydZwqeS1biT3IroQZX1JGTtNivhzazy5ijh1hUdVPNGkofSjkZzaVKkVTAF3COBBnyDDHizeSRPoFgjKycD2maYtm+Tv3yaP80CdHXmKMSHYJWZYkzQ8FatQJkiAUUw116We4cH92lZHFt5nEoHWJkkBULnHESEmUWF5r4ZX2NYFrrJyMP+Y6/uOp3XwrMVpNRv/2FqgnAZlUbYLAE0HKJWv0XWuqml9NdTI53gicT+SFZ4jqR28nKm3f8xjbmT1/fuShGHFe0a70aT7BGdX0v3n/sl2WMUCiXK/C3+Up2Vn9af2UmAep0L4dIl/nURqb95bwPIt+e+pPzWCDmpuJcv355/+7gy0SIOi1/F+6fwSmnxYhNy4N3YqqkyXA9ookQXvJ82XeW9lP8BZmFRHMsDAAA= \ No newline at end of file diff --git a/lib/星辰[优].js b/lib/星辰[优].js new file mode 100644 index 0000000..f74cdf1 --- /dev/null +++ b/lib/星辰[优].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/映播TV.js b/lib/映播TV.js new file mode 100644 index 0000000..d176b7e --- /dev/null +++ b/lib/映播TV.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV60UlGcBdEiOOJVmPhdiVT7vhHCa/0mDJWeUj61uFKY6xJfr8+vOcq7peQia5D2mQiLa1d239DVacSLPePmEK3ar5UEqLWOh/LEbPWADeU0BSI7oOcES7V7VI5TGe7mtf1GYk6L8vsn4B3oS9WmU4MhDikDSc5nQdK4dLSKPNAJrxwtUxZtvl1kUGcprVYfYXio40j5+0D57u9IfMgWxHXDviV0+Myw3oki5NX7IhPqY15n/Upnv7aORbUBeVlU0Y3LjZsUgXJqU2d+B9z838n/OQlMILCKSj70nQD/gdTdeNDpv7cL2lA4Fm6S7oiHlSwsXoehv7pAWz24FAoUPLt/lfaiBYiADz5+SVzKociGcY78ppIxeCGa0JiZm0J2UC3a7ou2usapl+YEQiVGp5pZHB9pX5fCXgne1ERZIknwZf1PjNiKBsdn6djthc1B0/oK3W9SKk8b2qowWZE/k3GmbEhPCDTA4YjYdssaoqedz3/Sc/VxxWoWwyzH5go1C9wBlosS4urLv+gMSb6IR8Fb5L4apdv0LzqGzjw5BOzmUIGhHFVF8xroQRg6PaXydyJYtuGN6dI6+i4bYSe08obY1XeTy6Lvzg17yCZSWYK2moLvrTjj6YiyGVvDFZUibCJqzuKIiwsVRvMgkL8adKTasKvWryU3qp2aREH+lPT1n+Mbi0h1EN525CBqXUVhdfGUqDJ9W1uaokGkiDMZC15+/CkUB3hrZjokeNHIfHuvOhLtFvlt/edWv1gZZKu240ObJGeXED5a+v5y2MUgbuvI2QMU8P3h/6gQDG380nM70cP1rUwjcd5OEHg5nAKkL9yxjxYEdTNU0iSV69DVKBr5dyqRcRlB+jm12T9wc8PBlwxEH8W1Cjuz2ZU3BX5kD9PDEIco/GTx+nAz7Ry5fo9khaUzaNqkLehjrRlikfMRHTus6LkX00hoLMG7bDP2hVmBKX9yy1GR+Owb+GsDSS6/KUhxE224XXsFydS2FzuksRGavHvrA8phFAjoNOhhUYJVCimmWNUS94UxIdBITQbnj5UkGXuRXVl7UZ7TfEvHoks8skkZQOA3CIftdzqvr3H6cfM5MaQsJ/2tNnvVG0p9wUafEiwgsza7i4P56pfmf3INRLvweG9ohAqsgN9XQznkYi+68bzCZAYYpQrmao/cc9nShiDfwIH8h1paIzPeCSHX1PHnSP5IOA527UBLbMJM1NB9RlSGsU+5108/BCqsrCQ1qTsN+UJ0RU9FJ/4BqOjXHzKFj/bGfoYawbV4Q2Xmkvuodw2i2HfBRYraZPgRX9Bal4GXI7Q4E9yVCZURTraQJ4JVxIcRmO4+xKxOJO40GBubtmQDstbliRdimbYI3VSGdVKIkta+jogG0YNFquUfPwghsYAOPhfhy9CL28NsuBLbUuoW5wBQgKEwey9mBapbLfAoIXPOFr5kEnrnisHOWuUgV4PFmvBHtlANP1IhdC9bCXK/VCBdJeN45RoB3iKg+HZ3dWekY6MOt4yIaBEDMX+Mp7yxPM9udOKCRfWDM1LLTQKZ1HUvaq/sjoPBt+0xA9H9sk7zfRCz4rVYjnSIgdxFHzC/k8l+Vi8cAeWAwnApZK92yEANWpGgk0a8AMLYyrCBIrPVZ9h+j5jEeMViDsXRsZItjCwLBeVkNIEUmvbalADHYOmi5nSQX8MFrMg5KbtH10C0k0YW4Rq49vJP3zv3hPpr8IEOXmRRAMMhk2HPY+rTpnx+9jqKvWveCDrKGK3kYclfDUgmDR1P7uPFGAZ40vPhVIaH4pHmGfA== \ No newline at end of file diff --git a/lib/暖光影视.js b/lib/暖光影视.js new file mode 100644 index 0000000..7ffd581 --- /dev/null +++ b/lib/暖光影视.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/5VTz2vUQBS++1cECrubYCbbBT0kLKWCB6HiQfccZjOTZOjkR2dedjeVghcFQaUnD+LJS70KHqTgf9Nu+2c4k5l1U6sUJ4eZee973/fem5cFFo5oOHWmzst7jlrAgNPQGa4/fbx8/fby57frszfD+50rryQoTw5QyzAIlsslmvPJ7hit2uPAYhrBFSRIBSuCtE04ltJP2xpnFOVQcIuSFIsknxmsuaA6r/c0bmrgA2NeVoJMPc/eoK3p9AYHnutsJ8Z01LDk8HlnD52xsaWMAxUGZk05xYQKGdqK9RrOJBX+fkZLGKqcnj579OTgcTzbt1onZuvKiWsspO4QKtqG+YYsjgtaNg5nKGeE0NKXRZjBaOyGHEYP3AgPBi/oCvSeC5pGyAtGyNtz+02pOW435CAaaqwcH7dKzGI4K5h6g4fmtv7w9fr9qfI23CSzqAhnElDCVRNStoo4izzzWQJSNV0rtgIXP15dnZ/9rsdSKCWdbDcN+kAwYL8SLGMl5hGqWeKDKuhmWVbj4vxdx7ht72aojERSlaAaHceEAmbcQZ3bUv0dUju2g1ZCL1Zktykhb4q5g3TXeIXJH4n3ogmViQr/t15Ij0YT966sNGr3DpTvyxqX/4fcKPcytmhdszykkOS3EIDnUrtLvPC7syIau+opexj9uB1IQj8DPXzapUN2GOkF2dlfn36++v5FBe6YH+/ADsl2vE5+AVK3PNlMBAAA \ No newline at end of file diff --git a/lib/暴风资源[资].js b/lib/暴风资源[资].js new file mode 100644 index 0000000..4d1194f --- /dev/null +++ b/lib/暴风资源[资].js @@ -0,0 +1 @@ +UXyWG7uvXgMMrVaWyhOGtmMZiXHvkpQIw5sagwcEEfUfxUFb2f3LcRccsy8O72taNRqcaoE/vHk99Q2O6pbI+E462OlRRDK24m+ecSS7ZwAy6TdHDwrDpiLwvckJdib4Iyqjz6/fLpqq9R5XpGehZUD8JzIZLIwZBALhCnGIzvpqk4ABK8yZHjis426QmVpt97uunW/tOjfNWRtAmgorEeYfMjyDtZ1idKn62yI4jU1+PQk5KdD+i/ilWQzJ2JOm24iMDM6ym7npRbaPwj29LR6PGPviSX7UO4/yLT1Zh5SzqRYUgcVxTofpMnHyIEIOeGdxmIDeK+eeY0Y1lyN7XkmP17yw92czdhRThYdsL1fiGDl2UsdQuuF95V0jjPHNytVnfBrobBIphen82vB+4eAOlrhVp7YrB7RtKbQfDeI= \ No newline at end of file diff --git a/lib/最新4K.js b/lib/最新4K.js new file mode 100644 index 0000000..cf3244b --- /dev/null +++ b/lib/最新4K.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfpppblm74yJywKICAgIHRpdGxlOiAn5pyA5pawNEsnLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LjEwODAuZWUnLAogICAgdXJsOiAnL3ZvZHR5cGUvZnljbGFzcy1meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIGNhdGVfZXhjbHVkZTogJ+S4k+mimCcsCiAgICDmkJzntKI6ICcuc3R1aS12b2RsaXN0IGxpO2EmJnRpdGxlOy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsucGljLXRleHQmJlRleHQ7YSYmaHJlZjsucGljLXRhZyYmVGV4dCcsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbC5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKICAgICAgICBsZXQgdXJsID0gaHRtbC51cmw7CiAgICAgICAgLy8gbG9nKCd1cmw6Jyt1cmwpOwogICAgICAgIGxldCBjb25maWcgPSB7fTsKICAgICAgICBsZXQganNjb2RlID0gcmVxdWVzdChIT1NUICsgJy9zdGF0aWMvanMvcGxheWVyY29uZmlnLmpzJyk7CiAgICAgICAgLy8gbG9nKCdqc2NvZGU6Jytqc2NvZGUpOwogICAgICAgIGV2YWwoanNjb2RlICsgJ1xuY29uZmlnPU1hY1BsYXllckNvbmZpZzsnKTsKICAgICAgICBsZXQganggPSBjb25maWcucGxheWVyX2xpc3RbaHRtbC5mcm9tXS5wYXJzZTsKICAgICAgICBpZiAoanggPT0gJycpIHsKICAgICAgICAgICAganggPSBjb25maWcucGFyc2UKICAgICAgICB9CiAgICAgICAgbG9nKCdqeDonICsgangpOwogICAgICAgIGxldCBwID0gJ3VybD0nICsgdXJsOwogICAgICAgIGxldCB2aWRlbyA9IEpTT04ucGFyc2UocmVxdWVzdChqeC5yZXBsYWNlKCc/dXJsPScsICdBUEkucGhwJyksIHsKICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBIT1NUCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJvZHk6IHAsCiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnCiAgICAgICAgfSkpLnVybDsKICAgICAgICBsb2codmlkZW8pOwogICAgICAgIGlucHV0ID0gewogICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgdXJsOiB2aWRlbywKICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICB9CiAgICB9KSwKfQ== \ No newline at end of file diff --git a/lib/有声小说吧.js b/lib/有声小说吧.js new file mode 100644 index 0000000..d04fb33 --- /dev/null +++ b/lib/有声小说吧.js @@ -0,0 +1,40 @@ +var rule = { + 编码:'gb18030', + 类型:'听书', + title:'有声小说吧', + host:'http://www.ysxs8.top/', + url:'/downlist/fyclass_fypage.html', + searchUrl:'/search.asp?page=fypage&searchword=**&searchtype=-1', + searchable:2, + quickSearch:0, + filterable:1, + filter:'', + filter_url:'', + filter_def:{}, + headers:{ + 'User-Agent':'MOBILE_UA', + }, + timeout:5000, + class_name:'多人广播剧&网络玄幻&盗墓探险&恐怖悬疑&都市言情&传统武侠&职场商战&百家讲坛&历史文化&人物传记&有声文学&评书&相声戏曲&儿童读物', + class_url:'r18&r52&r45&r17&r13&r12&r81&r32&r15&r16&r41&r3&r7&r4', + cate_exclude:'', + play_parse:true, + lazy:$js.toString(()=>{ + input = {parse:1,url:input,js:''}; + }), + double:true, + 一级:'.channel_left .test1;a:eq(1)&&Text;img&&src;a:eq(2)&&Text;a&&href', + 二级:{ + title:'h1&&Text;.content_center&&a:eq(3)&&Text', + img:'.content_right&&img&&src', + desc:';;.content_center:eq(1)&&Text;.content_center&&font&&Text', + content:'.content_center2&&Text', + tabs:'h2', + lists:'.playlist:eq(#id)&&a', + tab_text:'body&&Text', + list_text:'body&&Text', + list_url:'a&&href', + list_url_prefix: '', + }, + 搜索:'.list_container li;*;*;*;*', +} \ No newline at end of file diff --git a/lib/木瓜影视.js b/lib/木瓜影视.js new file mode 100644 index 0000000..0e5bd03 --- /dev/null +++ b/lib/木瓜影视.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/榜一短剧.js b/lib/榜一短剧.js new file mode 100644 index 0000000..c7c7a57 --- /dev/null +++ b/lib/榜一短剧.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/61UwW7TQBC98xVWkNwmiu22SBwcRf0I4Fxt7E28dO1Nd9cpAVWKkFpRqYUcOCCoVIlDGwm1VSQOUIT4mTimf8Hu2gGv6+TEXuzxzJt58/TWA0ANGmNotF89MAqHI46ha6zNL85m30bp+VVyfLnW1EoCwrioCDjvM9dx/BhEz+PY9khYKowpFnXOgPgsIPtOd+hhwJiVn+6wD3pQvNgBD3EJyiCgXvDsXwMVO1bxKNz2vt9uNEwWd0LE25VdQEdutNV0nPmHm2R8kYxv0veT5HCSTEfz8Vn69bOO2ouRt/tEQV1jowz79eVudF4F6yLMIc2G3UO9OUqnP9KrT3ejYx2lJNnpA8qk6nYEBlYIo9hCHIbMNDFqAdN8Cl9w+Qwo7LbshrNuN7brVbL1MRgumnEaQz2LwcuhGFLCYCSUc43H+tf528nv07GkFBJf+MTCiPHWIsjZFUPJT5mnhcKeafqAA4tRT4NYXCyir1Mi45NYCajIG46T80iODpPr77mi706S6evk+uPs56mGlX69vSxQViyN/09ydnuiBuk3R56aal5zjVqwmbewOegJ8aLdLK4174MEFwnRSPSRZ5oaySqkD5mnoAPkQ2KhqEuyrV24t75RX1Coym6uzG6tzD6qL1/GIxGHEc9YEX8nj5cDOOiw4voiVpOqaqUJtWJpeEiVOSWxh8gX1GzmUYKx9Xc0qGmtDkpWV5d5qW+yn8hq+2QiMUgRwEutc/AHQOzfKHQFAAA= \ No newline at end of file diff --git a/lib/模板.js b/lib/模板.js new file mode 100644 index 0000000..f27f0ab --- /dev/null +++ b/lib/模板.js @@ -0,0 +1,377 @@ +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; + }; +} + +function getMubans() { + var mubanDict = { // 模板字典 + mx: { + title: '', + host: '', + url: '/vodshow/fyclass--------fypage---/', + searchUrl: '/vodsearch/**----------fypage---/', + class_parse: '.top_nav li;a&&Text;a&&href;.*/(.*?)/', + searchable: 2, + quickSearch: 0, + filterable: 0, + headers: { + 'User-Agent': 'MOBILE_UA', + }, + play_parse: true, + lazy: '', + limit: 6, + 推荐: '.cbox_list;*;*;*;*;*', + double: true, + 一级: 'ul.vodlist li;a&&title;a&&data-original;.pic_text&&Text;a&&href', + 二级: { + title: 'h2&&Text;.detail_list&&ul:eq(1)&&li&&a:eq(2)&&Text', + img: '.vodlist_thumb&&data-original', + desc: '.content_detail&&li:eq(1)&&Text;.detail_list&&ul:eq(1)&&li&&a&&Text;.detail_list&&ul:eq(1)&&li&&a:eq(1)&&Text;.detail_list&&ul:eq(1)&&li:eq(2)&&Text;.detail_list&&ul:eq(1)&&li:eq(3)&&Text', + content: '.content_desc&&span&&Text', + tabs: '.play_source_tab&&a', + lists: '.content_playlist:eq(#id) li', + }, + 搜索: '*', + }, + mxpro: { + title: '', + host: '', // homeUrl:'/', + url: '/vodshow/fyclass--------fypage---.html', + searchUrl: '/vodsearch/**----------fypage---.html', + searchable: 2,//是否启用全局搜索, + quickSearch: 0,//是否启用快速搜索, + filterable: 0,//是否启用分类筛选, + headers: {//网站的请求头,完整支持所有的,常带ua和cookies + 'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok" + }, + class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href', + 二级: { + "title": "h1&&Text;.module-info-tag&&Text", + "img": ".lazyload&&data-original", + "desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text", + "content": ".module-info-introduction&&Text", + "tabs": ".module-tab-item", + "lists": ".module-play-list:eq(#id) a" + }, + 搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text', + }, mxone5: { + title: '', + host: '', + url: '/show/fyclass--------fypage---.html', + searchUrl: '/search/**----------fypage---.html', + searchable: 2,//是否启用全局搜索, + quickSearch: 0,//是否启用快速搜索, + filterable: 0,//是否启用分类筛选, + class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href', + 二级: { + "title": "h1&&Text;.tag-link&&Text", + "img": ".module-item-pic&&img&&data-src", + "desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text", + "content": ".vod_content&&Text", + "tabs": ".module-tab-item", + "lists": ".module-player-list:eq(#id)&&.scroll-content&&a" + }, + 搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href', + }, 首图: { + title: '', + host: '', + url: '/vodshow/fyclass--------fypage---/', + searchUrl: '/vodsearch/**----------fypage---.html', + searchable: 2,//是否启用全局搜索, + quickSearch: 0,//是否启用快速搜索, + filterable: 0,//是否启用分类筛选, + headers: {//网站的请求头,完整支持所有的,常带ua和cookies + 'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok" + }, + class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + 二级: { + "title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text", + "img": ".myui-content__thumb .lazyload&&data-original", + "desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text", + "content": ".content&&Text", + "tabs": ".nav-tabs:eq(0) li", + "lists": ".myui-content__list:eq(#id) li" + }, + 搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text', + }, 首图2: { + title: '', + host: '', + url: '/list/fyclass-fypage.html', + searchUrl: '/vodsearch/**----------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: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + 二级: { + "title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text", + "img": ".stui-content__thumb .lazyload&&data-original", + "desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text", + "content": ".detail&&Text", + "tabs": ".stui-vodlist__head h3", + "lists": ".stui-content__playlist:eq(#id) li" + }, + 搜索: 'ul.stui-vodlist__media:eq(0),ul.stui-vodlist:eq(0),#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text', + 搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text', + 搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text', + }, 默认: { + title: '', + host: '', + url: '', + searchUrl: '', + searchable: 2, + quickSearch: 0, + filterable: 1, + filter: '', + filter_url: '', + filter_def: {}, + headers: { + 'User-Agent': 'MOBILE_UA', + }, + timeout: 5000, + class_parse: '#side-menu li;a&&Text;a&&href;/(.*?)\.html', + cate_exclude: '', + play_parse: true, + lazy: `js:input = {parse: 1, url: input, js: ''}`, + double: true, + 推荐: '列表1;列表2;标题;图片;描述;链接;详情', + 一级: '列表;标题;图片;描述;链接;详情', + 二级: { + title: 'vod_name;vod_type', + img: '图片链接', + desc: '主要信息;年代;地区;演员;导演', + content: '简介', + tabs: '', + lists: 'xx:eq(#id)&&a', + tab_text: 'body&&Text', + list_text: 'body&&Text', + list_url: 'a&&href' + }, + 搜索: '列表;标题;图片;描述;链接;详情', + }, vfed: { + title: '', + host: '', + url: '/index.php/vod/show/id/fyclass/page/fypage.html', + searchUrl: '/index.php/vod/search/page/fypage/wd/**.html', + searchable: 2,//是否启用全局搜索, + quickSearch: 0,//是否启用快速搜索, + filterable: 0,//是否启用分类筛选, + headers: { + 'User-Agent': 'UC_UA', + }, // class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html', + class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href', + 二级: { + "title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text", + "img": ".fed-list-info&&a&&data-original", + "desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text", + "content": ".fed-part-esan&&Text", + "tabs": ".fed-drop-boxs&&.fed-part-rows&&li", + "lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li" + }, + 搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text', + }, 海螺3: { + title: '', + host: '', + searchUrl: '/v_search/**----------fypage---.html', + url: '/vod_____show/fyclass--------fypage---.html', + headers: { + 'User-Agent': 'MOBILE_UA' + }, + timeout: 5000, + class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html', + cate_exclude: '明星|专题|最新|排行', + limit: 40, + play_parse: true, + lazy: '', + 推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href', + double: true, + 一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href', + 二级: { + "title": ".hl-infos-title&&Text;.hl-text-conch&&Text", + "img": ".hl-lazy&&data-original", + "desc": ".hl-infos-content&&.hl-text-conch&&Text", + "content": ".hl-content-text&&Text", + "tabs": ".hl-tabs&&a", + "lists": ".hl-plays-list:eq(#id)&&li" + }, + 搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href', + searchable: 2,//是否启用全局搜索, + quickSearch: 0,//是否启用快速搜索, + filterable: 0,//是否启用分类筛选, + }, 海螺2: { + title: '', + host: '', + searchUrl: '/index.php/vod/search/page/fypage/wd/**/', + url: '/index.php/vod/show/id/fyclass/page/fypage/', + headers: { + 'User-Agent': 'MOBILE_UA' + }, + timeout: 5000, + class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/', + limit: 40, + play_parse: true, + lazy: '', + 推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href', + double: true, + 一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href', + 二级: { + "title": "h2&&Text;.deployment&&Text", + "img": ".lazy&&data-original", + "desc": ".deployment&&Text", + "content": ".ec-show&&Text", + "tabs": "#tag&&a", + "lists": ".play_list_box:eq(#id)&&li" + }, + 搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href', + searchable: 2,//是否启用全局搜索, + quickSearch: 0,//是否启用快速搜索, + filterable: 0,//是否启用分类筛选, + }, 短视: { + title: '', + host: '', // homeUrl:'/', + url: '/channel/fyclass-fypage.html', + searchUrl: '/search.html?wd=**', + searchable: 2,//是否启用全局搜索, + quickSearch: 0,//是否启用快速搜索, + filterable: 0,//是否启用分类筛选, + headers: {//网站的请求头,完整支持所有的,常带ua和cookies + 'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok" + }, + class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html', + cate_exclude: '解析|动态', + play_parse: true, + lazy: '', + limit: 6, + 推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href', + 二级: { + "title": "h1&&Text;.content-rt&&p:eq(0)&&Text", + "img": ".img&&img&&data-src", + "desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text", + "content": ".zkjj_a&&Text", + "tabs": ".py-tabs&&option", + "lists": ".player:eq(#id) li" + }, + 搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href', + }, 短视2: { + title: '', + host: '', + class_name: '电影&电视剧&综艺&动漫', + class_url: '1&2&3&4', + searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50', + searchable: 2, + quickSearch: 0, + headers: {'User-Agent': 'MOBILE_UA'}, + url: '/index.php/api/vod#type=fyclass&page=fypage', + filterable: 0,//是否启用分类筛选, + filter_url: '', + filter: {}, + filter_def: {}, + detailUrl: '/index.php/vod/detail/id/fyid.html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href', + 一级: 'js: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', + }, 采集1: { + title: '', + host: '', + homeTid: '13', + homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}', + detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid', + searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage', + url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass', + headers: {'User-Agent': 'MOBILE_UA'}, + timeout: 5000, // class_name: '电影&电视剧&综艺&动漫', + // class_url: '1&2&3&4', + // class_parse:'js:let html=request(input);input=JSON.parse(html).class;', + class_parse: 'json:class;', + limit: 20, + multi: 1, + searchable: 2,//是否启用全局搜索, + quickSearch: 1,//是否启用快速搜索, + filterable: 0,//是否启用分类筛选, + play_parse: true, + parse_url: '', + 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; + } + } + `, + 推荐: '*', + 一级: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from', + 二级: `js: + let html=request(input); + html=JSON.parse(html); + let data=html.list; + VOD=data[0];`, + 搜索: '*', + } + }; + return JSON.parse(JSON.stringify(mubanDict)); +} + +var mubanDict = getMubans(); +var muban = getMubans(); +export default {muban, getMubans}; \ No newline at end of file diff --git a/lib/樱花动漫.js b/lib/樱花动漫.js new file mode 100644 index 0000000..b503593 --- /dev/null +++ b/lib/樱花动漫.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV75achcS5PQHW4roilH2jW+jHpsM4OUPemU0nkF8kBlMeONteZ2xggnbPrvVp/uRXHl5j6ct5gvAJgK9XbmClZ2ptIDL6OrFdhVuD7SOI0zuSdaFGYw60Tfn9eegZuFRVlsdliZnK3aZ6+jvKtGGJrnFNg9Yv/zQili03sLO7Elos/aRzp6aNslrjf+bBWzlDlDTlTkCDYU9D47DujtGLASjP/uvFPeOfeg27x7wBOY76YXp4uJZ1xDQnseMdQBMOk0InJeYPNm5X8BgpGU03hQQyvLRWlgeGaltE7sHBte/Qhf+2kRLtw1+yX9DwZU7Rf8BB1JlFkpnnFO9wiC6ZPRwQr8ZAE7dYLpLRz4+z9ck \ No newline at end of file diff --git a/lib/樱花动漫[漫].js b/lib/樱花动漫[漫].js new file mode 100644 index 0000000..f5c94e6 --- /dev/null +++ b/lib/樱花动漫[漫].js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV75achcS5PQHW4roilH2jW+jHpsM4OUPemU0nkF8kBlMyCha1VEcCkFTeoz5H0+lRxx/8HOKMnLSpQTv+FESrrDY4CyKIxjsp5teJOpQOzLY2xqFTVl14/NwQZh8zEnYMFyxuzbmDaZSz9AmClthfmSPjDNfiNJiRoHWB07C6XzxbNDJy5Z1DApVEoA3LRLX7bauB5DQ80k0rQBX0EErad5xGobckTm1RKsqyLZW1cMhrAjV97yk+B6Ed+LF22HgBiK+sUGKvfnP9uOep+3oKb4v1tnXQztdS7oGnc0aezc315sHld5e1jf6eKnw6u4iOfKd8OL8geO5ENbJ3bKZEF1E9lOjYXArJ2K/sVzmidaf \ No newline at end of file diff --git a/lib/次元城动漫[漫].js b/lib/次元城动漫[漫].js new file mode 100644 index 0000000..b8b284f --- /dev/null +++ b/lib/次元城动漫[漫].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+asoeWFg+WfjuWKqOa8q1vmvKtdJywvL+inhOWImeagh+mimCzmsqHmnInlrp7pmYXkvZznlKgs5L2G5piv5Y+v5Lul5L2c5Li6Y21z57G75ZCN56ew5L6d5o2uCiAgICDnvJbnoIE6ICcnLC8v5LiN5aGr5bCx6buY6K6kdXRmLTgKICAgIOaQnOe0oue8lueggTogJycsLy/kuI3loavliJnkuI3nvJbnoIHvvIzpu5jorqTpg73mmK/mjIl1dGYtOC7lj6/kvJjlhYjkuo7lhajlsYDnvJbnoIHlsZ7mgKcu5q+U5aaC572R6aG15rqQ56CB57yW56CB5pivZ2JrLOi/memHjOWPr+S7peaMh+WumnV0Zi045pCc57Si54us56uL57yW56CB44CC5aSa5pWw5oOF5Ya16L+Z5Liq5bGe5oCn5LiN5aGr5oiW6ICF5aGr5YaZZ2Jr5bqU5a+554m55q6K55qE572R56uZ5pCc57SiCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuY3ljYW5pbWUuY29tJywvL+e9kemhteeahOWfn+WQjeaguSzljIXlkKtodHRw5aS05aaCIGh0dHBzOi8vd3d3LGJhaWR1LmNvbQogICAgLy91cmw6ICcvYXBpLnBocC9wcm92aWRlL3ZvZD9hYz1kZXRhaWwmdD1meWNsYXNzJnBnPWZ5cGFnZSZmPScsLy/nvZHnq5nnmoTliIbnsbvpobXpnaLpk77mjqUKICAgIHVybDogJy9hcGkucGhwL3Byb3ZpZGUvdm9kPyZhYz1kZXRhaWwmdD1meWNsYXNzJnBnPWZ5cGFnZSZmPScsLy/nvZHnq5nnmoTliIbnsbvpobXpnaLpk77mjqUKICAgIC8vL2FwaS5waHAvcHJvdmlkZS92b2Q/JmFjPWRldGFpbCZ0PWZ5Y2xhc3MmcGc9ZnlwYWdlCiAgICBjbGFzc19uYW1lOiAnVFbliqjnlLsm5Ymn5Zy654mIJjRL5LiT5Yy6JywvL+mdmeaAgeWIhuexu+WQjeensOaLvOaOpQogICAgY2xhc3NfdXJsOiAnMjAmMjEmMjYnLC8v6Z2Z5oCB5YiG57G75qCH6K+G5ou85o6lCiAgICBob21lVXJsOiAnL2FwaS5waHAvcHJvdmlkZS92b2Q/YWM9ZGV0YWlsJywvL+e9keermeeahOmmlumhtemTvuaOpSzlj6/ku6XmmK/lrozmlbTot6/lvoTmiJbogIXnm7jlr7not6/lvoQs55So5LqO5YiG57G76I635Y+W5ZKM5o6o6I2Q6I635Y+WIGZ5Y2xhc3PmmK/liIbnsbvmoIfnrb4gZnlwYWdl5piv6aG15pWwCiAgICBzZWFyY2hVcmw6ICcvYXBpLnBocC9wcm92aWRlL3ZvZD9hYz1kZXRhaWwmd2Q9KiomcGc9ZnlwYWdlJywgLy/mkJzntKLpk77mjqUg5Y+v5Lul5piv5a6M5pW06Lev5b6E5oiW6ICF55u45a+56Lev5b6ELOeUqOS6juWIhuexu+iOt+WPluWSjOaOqOiNkOiOt+WPliAqKuS7o+ihqOaQnOe0ouivjSBmeXBhZ2Xku6PooajpobXmlbAKICAgIGRldGFpbFVybDogJy9hcGkucGhwL3Byb3ZpZGUvdm9kP2FjPWRldGFpbCZpZHM9ZnlpZCcsIC8v6Z2e5b+F5aGrLOS6jOe6p+ivpuaDheaLvOaOpemTvuaOpSzmhJ/op4nmsqHllaXljbXnlKgKICAgIHNlYXJjaGFibGU6IDIsLy/mmK/lkKblkK/nlKjlhajlsYDmkJzntKIsCiAgICBxdWlja1NlYXJjaDogMCwvL+aYr+WQpuWQr+eUqOW/q+mAn+aQnOe0oiwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBwYXJzZV91cmw6ICdodHRwczovL3BsYXllci5jeWNhbmltZS5jb20vP3VybD0nLAogICAgbGF6eTogYGpzOgogICAgaWYoL1xcLihtM3U4fG1wNCkvLnRlc3QoaW5wdXQpKXsKICAgICAgICAgICAgICAgIGlucHV0ID0ge3BhcnNlOjAsdXJsOmlucHV0fQogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGlmKHJ1bGUucGFyc2VfdXJsLnN0YXJ0c1dpdGgoJ2pzb246JykpewogICAgICAgICAgICAgICAgICAgIGxldCBwdXJsID0gcnVsZS5wYXJzZV91cmwucmVwbGFjZSgnanNvbjonLCcnKStpbnB1dDsKICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QocHVybCk7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSB7cGFyc2U6MCx1cmw6SlNPTi5wYXJzZShodG1sKS51cmx9CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICBpbnB1dD0gcnVsZS5wYXJzZV91cmwraW5wdXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYCwKICAgIG11bHRpOiAxLAogICAgbGltaXQ6IDIwLC8vIOmmlumhteaOqOiNkOaYvuekuuaVsOmHjwogICAg5o6o6I2QOiAnanNvbjpsaXN0O3ZvZF9uYW1lO3ZvZF9waWM7dm9kX3JlbWFya3M7dm9kX2lkJywgLy8gZG91YmxlOiB0cnVlLCAvLyDmjqjojZDlhoXlrrnmmK/lkKblj4zlsYLlrprkvY0KICAgIOS4gOe6pzogJ2pzb246bGlzdDt2b2RfbmFtZTt2b2RfcGljO3ZvZF9yZW1hcmtzO3ZvZF9pZCcsCiAgICAvKioKICAgICAqIOi1hOa6kOmHh+mbhuerme+8jOS6jOe6p+mTvuaOpeino+aekAogICAgICovCiAgICAvL+S6jOe6pzogYGpzb246bGlzdDt2b2RfbmFtZTt2b2RfcGljO3ZvZF9yZW1hcmtzO3ZvZF9pZGAsCiAgICDkuoznuqc6IGBqczoKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5saXN0OwogICAgICAgIGlmKGxpc3QubGVuZ3RoPT09MSl7CiAgICAgICAgICAgVk9EID0gbGlzdFswXTsKICAgICAgICAgICAgVk9ELnZvZF9ibHVyYiA9IFZPRC52b2RfYmx1cmIucmVwbGFjZSgv44CAL2csICcnKS5yZXBsYWNlKC88W14+XSo+L2csICcnKTsKICAgICAgICAgICAgVk9ELnZvZF9jb250ZW50ID0gVk9ELnZvZF9jb250ZW50LnJlcGxhY2UoL+OAgC9nLCAnJykucmVwbGFjZSgvPFtePl0qPi9nLCAnJyk7CiAgICAgICAgfQogICAgYCwKICAgIC8qKgogICAgICog5pCc57Si6Kej5p6QIOi/h+a7pOmDqOWIhui1hOa6kAogICAgICovCiAgICDmkJzntKI6ICdqc29uOmxpc3Q7dm9kX25hbWU7dm9kX3BpYzt2b2RfcmVtYXJrczt2b2RfaWQnLAoKfQ== \ No newline at end of file diff --git a/lib/歪片星球[资].js b/lib/歪片星球[资].js new file mode 100644 index 0000000..7654f36 --- /dev/null +++ b/lib/歪片星球[资].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/河狸影视[V2].js b/lib/河狸影视[V2].js new file mode 100644 index 0000000..2e85953 --- /dev/null +++ b/lib/河狸影视[V2].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/海外剧汇.js b/lib/海外剧汇.js new file mode 100644 index 0000000..b1c6bd9 --- /dev/null +++ b/lib/海外剧汇.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/41Tz2vUQBS++1cMKLM/2CTbQi9ZqlTwICge6t6EZTZ52cx2kklnJt2udaG3ItRSPPTUS0WoRwVF6d9j0/4ZziQTN6tCnb3s++b75r33vZc9IpDIGaBNdHAP6aOoYuCjVvHt+/XHs+u3l8WXo1avvIq5VPomViqTvufNZjM3nk1jNwgsIRdM33t7PJQxn3nRPGBESseeaJ6RCeg/bqwSZiUSiAji4VJYxl636zj/oSNjU+t6Be3mNNjZLnEf9SssokyBqGhrTUinazXjUVX7KhZC5KODhe0eSAhC+tYnc1pDCcLZmkCqWlr8/MXjp8+ejIZb9hUrVDQBnmvnNvp9W1bpyygjQhqr3Zg5CaS5RIwOCMYyIynGL2FfmSgWEA3crtd2u486r5oeBETBCPYDloflxM4Pi7PPb4qT97cXx5aSMTKv8yiRQ4Uy8nruowdT6Sq+rQRNJ+12B20+bLRG0yxXZimseK1XTbfEe2gqjVmLQdVnp3o25Hlp9DJRcfLp9t2ppo55OMfYDXiqCE1BDLr1zxb688fhzdWlNUPvgcOoVBhrQwxAFSROuZnWFwOaLjAOiSIOF3RCU8IGroCEiB25al+d4+q4zLHssl72eL0SWGJpQDKx1fwjT4MXggwsMQwcmY8bFZYaM9nmTBtaY4feHSu3kaM06S+qImNpeWam0okETzAmDYpxbJVjEB922/dp2DFerr43Mol+z+aPfEZ6N6H6aGqXm0tfnJ7ffP1gq+Ep3DHPehUWvwB0zoGkkAQAAA== \ No newline at end of file diff --git a/lib/清风DJ.js b/lib/清风DJ.js new file mode 100644 index 0000000..a1b800a --- /dev/null +++ b/lib/清风DJ.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/21Ua2vbVhj+vl9hOnC2OLEcyZbthFBs6+KLZFuOJVv+EnQ5utiSJR3JkuUSCGMdG2wlG4N1FxhsYy2ULRRGV1rG/swSJ/9i8qX0Qo++nPPwvM/7cI7eJ5RgCs4skDpO3fsglazADCxwmNq5fn7/9tcHRHNnbw0bjh8kqBEErn+IIFEUZcMwVMdZxbG3FARJzaCVkBDfgQGixYol+T6S2998WuxKOsgagW1tC97H1mLNtAIA3+RtEEle+TrYQ5Drh5dXF79fXVwuv3189flny6cvl3/8eHv+xZvs0434vXualV0rpxyYupO7c3a2v8Ysaaq/A8UguYu3ITl+DWz8v2UpaVDP+43Kq5VBB0PU73O9PhWW/EwVG01VpBOO8YEQVnRTG7EluQ2sEwiKjYFN8pVGwMoj0S7oLajqJZRqelyDlTy/P8jQduyXbExpN70ixEZkt8lVaRIUkLkdufZCiZARb8c2QywkPpDUCWzpaKsgtGr6fC6zaJ0h2bKFk0McoTLu1KJcVNbUQgNCibbUUYPSg3ZLUWcjIV/O5zFVg0pfGBdL+iBiI0zrGnNEIz2d6LbCOcKxNUIaKHVAyUO8aEGRDiKgoQ7DlyGORkqc7/QqEdVcoFzEu5Gmc3FboGJIxGKe1TSjBIalghOBOhuKE7JOclFEVnJcThD7AsNhhOfQkt3y3QnFjn2eN1v23K5w825P7McEorScAj9rSk2BMYfJv2qXOt24iGFUzewQjQo7np4QsZ6PdMOl6ElD5E7QLpkzTKtGuoZV4xxToGtOpUcrImPSTTJHkzgx6XNi3+n02qRZGrf6VaXqsS5LRbThNrlS25VqXJvhB7QoD8ieR6E0tRAaeLdil8MSTs6QTJFBSgjKe1okhO2pEaiynq8LE7Y+XvDlqmOMeLSLLhYmOpr0/F7Yn5F010RAvsZhJW3i1hm8M6urkdqvN8l5p4SVc1q57kRC24rbnixmXEzAZaBGwIb5AU5MMc5sR2OPUGkhP+TLXl2uhvacRUdmzA6EMWJl2pI6F8Q4H2ICGDJsGT2gh0O/ry1CF87NiJ+KsxHICX6InRAHnFrQokKoW1JxAkexBEaQyRDTA0cG3ljHXTM/6+WVsphRALUYMdCrzTqI0l8IQ4obNCqZST3nZA4I1AELYqaFHEKoZZMommOySUK0ijbw1rDN+Ce2FndbRNBTPcafM5Oir0WygrYGE1zkk4k53s6Tn8yeYvDbQFgfkly4OwHx8e5uWjHV41zaMv3gGE2vpvD4rWHc8Df5gL6bD/cfXz09v774afnXLxu2NzOVycm65DCVe5f+75Pb85/fpBtAUgH0D7fxuFo7vA/gfkUH02An8ct2qg2GPOUrO2vG2d42R23gzJLMLORyqy7Lf75ePvl++cOnG0c3l39fP/3k5tn96++e7d2+fHjz52+JDyzhXl8+WT76Zq2xDq5TV4L+KpE/DBz3VJamUwCVIJ3O+iC7OTmadiSl0+vkXm0MCLSjTax+lN29+zGyvSfXkuJXagGcgQ1qSYs4Ud9yLNM2E9P45nT94PHNVxer3hAo/v7qBdLJOxwZaDrdB/PgaPfI3O62fbcy/z0/X754lBRmTV93HPV0VfrapGnr6bQPlaOsr5wevF/hxZcbhd0tsHmULXD2P2BY1Ai4BgAA \ No newline at end of file diff --git a/lib/游子视频.js b/lib/游子视频.js new file mode 100644 index 0000000..b45e897 --- /dev/null +++ b/lib/游子视频.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWVxIToaU+AqSLHmIyuwWMvjCmgZeXwCiKr1xyqY7MtHNyyQdhQKr46Hio02aj/Gu0xuYlEozela8EC2LYXpFZ6WA3ZVgT+ZmXWeSUYDdGiSDzNv707go1MO58O73jCWfnj3Lk+eRsODIRMDC9aBOXu4E+u/sVuVXZhA4KXVcGhJCfF7dhAoisPf/NZqJZycLANT1BL3ul3ZQBefCE1amvZTn6PV5Pl5cRtw0Ljs/4fH75FYy6+RE1PmJPmCD0ngXH5A== \ No newline at end of file diff --git a/lib/漫小肆[画].js b/lib/漫小肆[画].js new file mode 100644 index 0000000..3103115 --- /dev/null +++ b/lib/漫小肆[画].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/烧火影视[优].js b/lib/烧火影视[优].js new file mode 100644 index 0000000..3d9bb6c --- /dev/null +++ b/lib/烧火影视[优].js @@ -0,0 +1 @@ +Ly8g5pCc57Si6aqM6K+BIC0+IGRycHlfb2Ny6Ieq5Yqo6L+H5pCc57Si6aqM6K+B5aSx6LSlCnZhciBydWxlID0gewogICAgdGl0bGU6ICfng6fngavlvbHop4Zb5LyYXScsCiAgICAgaG9zdDonaHR0cHM6Ly9zYW9odW8udHYnLAogICAgLy9ob3N0OiAnaHR0cDovL3NoYXBwLnVzJywKICAgIC8vaG9zdEpzOiAncHJpbnQoSE9TVCk7bGV0IGh0bWw9cmVxdWVzdChIT1NULHtoZWFkZXJzOnsiVXNlci1BZ2VudCI6UENfVUF9fSk7bGV0IHNyYz1qc3AucGRmaChodG1sLCJhOmVxKDIpJiZocmVmIik7cHJpbnQoc3JjKTtIT1NUPXNyYycsCiAgICAvLyB1cmw6Jy9saXN0L2Z5Y2xhc3MtZnlwYWdlLmh0bWwnLAogICAgdXJsOiAnL2xpc3QvZnlmaWx0ZXItZnlwYWdlLmh0bWwnLAogICAgZmlsdGVyYWJsZTogMSwvL+aYr+WQpuWQr+eUqOWIhuexu+etm+mAiSwKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmNhdGVJZH19JywKICAgIGZpbHRlcjogewogICAgICAgICIxIjogW3sKICAgICAgICAgICAgImtleSI6ICJjYXRlSWQiLAogICAgICAgICAgICAibmFtZSI6ICLnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbeyJ2IjogIjEiLCAibiI6ICLlhajpg6gifSwgeyJ2IjogIjYiLCAibiI6ICLllpzliacifSwgeyJ2IjogIjciLCAibiI6ICLniLHmg4UifSwgewogICAgICAgICAgICAgICAgInYiOiAiOCIsCiAgICAgICAgICAgICAgICAibiI6ICLmgZDmgJYiCiAgICAgICAgICAgIH0sIHsidiI6ICI5IiwgIm4iOiAi5Yqo5L2cIn0sIHsidiI6ICIxMCIsICJuIjogIuenkeW5uyJ9LCB7InYiOiAiMTEiLCAibiI6ICLmiJjkuokifSwgewogICAgICAgICAgICAgICAgInYiOiAiMTIiLAogICAgICAgICAgICAgICAgIm4iOiAi54qv572qIgogICAgICAgICAgICB9LCB7InYiOiAiMTMiLCAibiI6ICLliqjnlLsifSwgeyJ2IjogIjE0IiwgIm4iOiAi5aWH5bm7In0sIHsidiI6ICIxNSIsICJuIjogIuWJp+aDhSJ9LCB7CiAgICAgICAgICAgICAgICAidiI6ICIxNiIsCiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiCiAgICAgICAgICAgIH0sIHsidiI6ICIxNyIsICJuIjogIuaCrOeWkSJ9LCB7InYiOiAiMTgiLCAibiI6ICLmg4rmgpoifSwgeyJ2IjogIjE5IiwgIm4iOiAi5YW25a6DIn1dCiAgICAgICAgfV0sCiAgICAgICAgIjIiOiBbewogICAgICAgICAgICAia2V5IjogImNhdGVJZCIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7InYiOiAiMiIsICJuIjogIuWFqOmDqCJ9LCB7InYiOiAiMjAiLCAibiI6ICLlpKfpmYYifSwgeyJ2IjogIjIxIiwgIm4iOiAiVFZCIn0sIHsKICAgICAgICAgICAgICAgICJ2IjogIjIyIiwKICAgICAgICAgICAgICAgICJuIjogIumfqeWJpyIKICAgICAgICAgICAgfSwgeyJ2IjogIjIzIiwgIm4iOiAi576O5YmnIn0sIHsidiI6ICIyNCIsICJuIjogIuaXpeWJpyJ9LCB7InYiOiAiMjUiLCAibiI6ICLoi7HliacifSwgewogICAgICAgICAgICAgICAgInYiOiAiMjYiLAogICAgICAgICAgICAgICAgIm4iOiAi5Y+w5YmnIgogICAgICAgICAgICB9LCB7InYiOiAiMjciLCAibiI6ICLlhbblroMifV0KICAgICAgICB9XSwKICAgICAgICAiNCI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiY2F0ZUlkIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sidiI6ICI0IiwgIm4iOiAi5YWo6YOoIn0sIHsidiI6ICIzOCIsICJuIjogIuaQnueskSJ9LCB7InYiOiAiMzkiLCAibiI6ICLmgYvniLEifSwgewogICAgICAgICAgICAgICAgInYiOiAiNDAiLAogICAgICAgICAgICAgICAgIm4iOiAi54Ot6KGAIgogICAgICAgICAgICB9LCB7InYiOiAiNDEiLCAibiI6ICLmoLzmlpcifSwgeyJ2IjogIjQyIiwgIm4iOiAi576O5bCR5aWzIn0sIHsidiI6ICI0MyIsICJuIjogIumtlOazlSJ9LCB7CiAgICAgICAgICAgICAgICAidiI6ICI0NCIsCiAgICAgICAgICAgICAgICAibiI6ICLmnLrmiJgiCiAgICAgICAgICAgIH0sIHsidiI6ICI0NSIsICJuIjogIuagoeWbrSJ9LCB7InYiOiAiNDYiLCAibiI6ICLkurLlrZAifSwgeyJ2IjogIjQ3IiwgIm4iOiAi56ul6K+dIn0sIHsKICAgICAgICAgICAgICAgICJ2IjogIjQ4IiwKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIKICAgICAgICAgICAgfSwgeyJ2IjogIjQ5IiwgIm4iOiAi55yf5Lq6In0sIHsidiI6ICI1MCIsICJuIjogIkxPTEkifSwgeyJ2IjogIjUxIiwgIm4iOiAi5YW25a6DIn1dCiAgICAgICAgfV0sCiAgICAgICAgLy8gIjI4IjpbeyJrZXkiOiJjYXRlSWQiLCJuYW1lIjoi57u86Im6IiwidmFsdWUiOlt7InYiOiIyOCIsIm4iOiLohLHlj6Pnp4AifSx7InYiOiIyOSIsIm4iOiLnnJ/kurrnp4AifSx7InYiOiIzMCIsIm4iOiLpgInnp4AifSx7InYiOiIzMSIsIm4iOiLnvo7po58ifSx7InYiOiIzMiIsIm4iOiLml4XmuLgifSx7InYiOiIzMyIsIm4iOiLmsb3ovaYifSx7InYiOiIzNCIsIm4iOiLorr/osIgifSx7InYiOiIzNSIsIm4iOiLnuqrlrp4ifSx7InYiOiIzNiIsIm4iOiLmkJ7nrJEifSx7InYiOiIzNyIsIm4iOiLlhbblroMifV19XQogICAgfSwKICAgIGZpbHRlcl9kZWY6IHsKICAgICAgICAxOiB7Y2F0ZUlkOiAnMSd9LAogICAgICAgIDI6IHtjYXRlSWQ6ICcyJ30sCiAgICAgICAgNDoge2NhdGVJZDogJzQnfQogICAgICAgIC8vIDI4OntjYXRlSWQ6JzI4J30KICAgIH0sCiAgICBzZWFyY2hVcmw6ICcvc2VhcmNoLnBocD9wYWdlPWZ5cGFnZSZzZWFyY2h3b3JkPSoqJnNlYXJjaHR5cGU9JywKICAgIHNlYXJjaGFibGU6IDAsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGhlYWRlcnM6IHsnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLH0sCiAgICB0aW1lb3V0OiA1MDAwLC8v572R56uZ55qE5YWo5bGA6K+35rGC6LaF5pe2LOm7mOiupOaYrzMwMDDmr6vnp5IKICAgIGNsYXNzX25hbWU6ICfnlLXlvbEm55S16KeG5YmnJuWKqOa8qycsCiAgICBjbGFzc191cmw6ICcxJjImNCcsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogYGpzOgogICAgICAgIHBkZmggPSBqc3AucGRmaDtwZGZhID0ganNwLnBkZmE7cGQgPSBqc3AucGQ7CiAgICAgICAgdmFyIGh0bWwgPSBwZChyZXF1ZXN0KGlucHV0KSwgJ2lmcmFtZSYmc3JjJyk7CiAgICAgICAgdmFyIGFwaXVybCA9ICcnOwogICAgICAgIGlmICgvYXBpXFwuaGhwbGF5ZXIvLnRlc3QoaHRtbCkpIHsKICAgICAgICAgICAgYXBpdXJsID0gJ2h0dHBzOi8vYXBpLmhocGxheWVyLmNvbS9hcGkucGhwJzsKICAgICAgICB9IGVsc2UgaWYgKC9oa2p4XFwuaGhwbGF5ZXIvLnRlc3QoaHRtbCkpIHsKICAgICAgICAgICAgYXBpdXJsID0gJ2h0dHBzOi8vaGtqeC5oaHBsYXllci5jb20vYXBpLnBocCc7CiAgICAgICAgfSBlbHNlIGlmICgvaGhqeFxcLmhocGxheWVyLy50ZXN0KGh0bWwpKSB7CiAgICAgICAgICAgIGFwaXVybCA9ICdodHRwczovL2hoanguaGhwbGF5ZXIuY29tL2FwaS5waHAnOwogICAgICAgIH0gZWxzZSBpZiAoL3BsYXlcXC5oaHBsYXllci8udGVzdChodG1sKSkgewogICAgICAgICAgICBhcGl1cmwgPSAnaHR0cHM6Ly9wbGF5LmhocGxheWVyLmNvbS9oaGp4L2FwaS5waHAnOwogICAgICAgIH0KICAgICAgICB2YXIgdXJsID0gJyc7CiAgICAgICAgdmFyIHQgPSAnJzsKICAgICAgICB2YXIga2V5ID0gJyc7CiAgICAgICAgZXZhbChwZGZoKHJlcXVlc3QoaHRtbCksICdib2R5JiZzY3JpcHQsMCYmSHRtbCcpLnNwbGl0KCd2YXIgYWN0JylbMF0ucmVwbGFjZUFsbCgndmFyICcsICcnKSk7CiAgICAgICAgdmFyIHB1cmwgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpdXJsLCB7CiAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBLAogICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBodG1sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJvZHk6ICd1cmw9JyArIHVybCArICcmdD0nICsgdCArICcma2V5PScgKyBrZXkgKyAnJmFjdD0wJnBsYXk9MScsCiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnCiAgICAgICAgfSkpLnVybDsKICAgICAgICBpZighcHVybCl7CiAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICBwYXJzZToxLAogICAgICAgICAgICB1cmw6aHRtbAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKC9vYmpcXC90b3MvLnRlc3QocHVybCkpIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgIHVybDogcHVybCwKICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiAvaHR0cC8udGVzdChwdXJsKSA/IHB1cmw6ICdodHRwczovL2FwaS5oaHBsYXllci5jb20nICsgcHVybCwKICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBgLAogICAg5o6o6I2QOiAnLnZfbGlzdCwwJiZsaTsqOyo7KjsqJywKICAgIOS4gOe6pzogJy52X2xpc3QgbGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy52X25vdGUmJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICAidGl0bGUiOiAiaDEmJlRleHQ7IiwKICAgICAgICAiaW1nIjogIi5tX2JhY2tncm91bmQmJnN0eWxlIiwKICAgICAgICAiZGVzYyI6ICI7Ozsudl9pbmZvX2JveCYmcCYmVGV4dCIsCiAgICAgICAgImNvbnRlbnQiOiAiLnBfdHh0LnNob3dfcGFydCYmVGV4dCIsCiAgICAgICAgInRhYnMiOiAiLmZyb21fbGlzdCYmbGkiLAogICAgICAgICJsaXN0cyI6ICIjcGxheV9saW5rJiZsaTplcSgjaWQpJiZhIgogICAgfSwKICAgIOaQnOe0ojogJyonLAp9Cg== \ No newline at end of file diff --git a/lib/热播之家.js b/lib/热播之家.js new file mode 100644 index 0000000..7206478 --- /dev/null +++ b/lib/热播之家.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/热片网.js b/lib/热片网.js new file mode 100644 index 0000000..e994929 --- /dev/null +++ b/lib/热片网.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV5e0sjfnYsSqn4yYxXGRvGVHRuH33NvKHFrTZ7g0DIqsfaeIqUHiVuz0rGJPuwJZcyWw6kQmptTz6gAJ0o1tTRnoQIxUi2bt1UT9pTxuJHXTDGswvC7WcRNGvLivAC2c9Z+zviohVNPwfddBSwQIvavbxpMdxk9amZvyCQeYEFHiwTwkQsyPVvdS4a6qUtNj7ZGC3iF52Dc0jCEdjFkoVXZOOBOMfNuUs8qWLPNoeqALdpt2V23I2qQNVaVOtBgTytHwfkYTuNb2BF7NcnHynnc5mSXIKL54APSsC4j7dcBWn2hX2jzVyi0Pt3dYZBahPStwk6GuS4opVfwNCvcKT72SezpQhHtQQQeNbB5qy2f+lM+9IRVrrGwbL0+YTCl+K34Bih/7q/isi1UFeBRh+TvhJqDKeOMroAGjrtSNlMHlbJ44YORG+FOzPLbI/c/Rc3D245nEC9O/y0/kXl3DyAYLCqUd1EyLcStMJ1JwOO4FWUuV3XKtbiGsFn+nsHxeMHHPdrAzo47N2DEfLKzR76ahlckoB9ISYV8seEeab1V4v+dDOvwkxns9+ghKs9n56He0SdZKxIIGFqEiddqSYGLc/i4y0BwwjVXtqncBhYq9VVfASjnCVmls+bTr1ZF4LjXAE9eSUmc9qmR+/49s8nackUYH25aVDG6ZQedAnYNqztnXG5zAH2dOP/JsogA9ETbzVYB3g9/zyUrJtq4pM3MyvQuO2OELK/gn8OqRjijoj7au/1Dq5pcHXR6xoiVPrzE3Avd4WJoQElll5Rx66b/WqCHHToKU8DeYpoRMJQ+ENVm+nP8wpYavL0k8VVPLB6uRE644Ux8+TCp7cVeTRrlzSeAXaf1ls8G13DvBvLSmNQjmW+9Ti+b7/Y45g9le0LvreXct8RnpGO7Nk/0voZMjbvU3tbxpa8uBac5pUu229NcbQqCASQiMWqWH13q5V4K9O4aM0PtG3zDU+oXc3rfAt4n4NhsjG/XiSzOWfz1LFJ56GtOPqQEcdr4N1Llqm2Eo4pQ/vfPM+2dSwvDE5SVfTLgKoMobHXvxukJdllVrvyTdKejQChdzw7jFZjSkXNml8FSV9AJTBsfNtlG/DUknBrdvCGs2GODk2AxdzxRk28RQ74vQwzwnhtvispmBX3DKoFbgfROo6kfK3FXdBNzE1YNmcD2Ujuw77jwEUXHkQ+ogJ3DLNiBis8kX4YcsoUudjgS6x1F6+DyRyF5cjdm6Le9/kW1d+Q3B6G4Gt+tifw4CIXwVyVHsRTT6Xl3T0ZlVXGNHNxywu6jZga1ZzfehBwMrBSlhO7tC1jjcwNf8u6AEdQLd0d9XkfiCrLDNE4Rb5UovPNQtPmMsAeFbZYIzwLmnfabTEUIJM5rN9HzhXC8pUgI/1aNdPwbfoeoQi8EwqC1BYQJl5z+ojBjECvbMJWxSZizGBAdBJUk32cXDKhqf0wZwYEqwVnYiEnt6yjFNbeUScdDKcZ324tXij8ir3TAPaRf9bVRm3Ho2DYU2QHG/AwJtczy4CihjkRupd8ta1LITJEm45+bbPqIN6183Ahw3cWprrHQKXgnjxbT/47JoOS666HcsQNxYGviCV/581Yla+MNIoSBH/O1W7VvTeKrIe04f2ml02SwK2eGp1fcWCVpmiXdfEb9PFZ5p0T/DjHb2TJFMXaTfEoBGj77acpew0nn35ruhL3btBdxT7d3tT7PmL6bt1vsZ4UCux5dArY1fhr6RImN2U+hzS7o1LgDa+JnnaueiphcPZYtbYy1Mm4I3WQ7TdLMGhxmS2GxvLbAABG5UqoJuwAh+1WxrnpEXPcHYi/5UzT7oY8D4ZfPJcjefglqlYqt0HYMs+c1zYnAdwfTmB1YQ9eO4616NCbjOg9ugI49+TY8X2qbM \ No newline at end of file diff --git a/lib/熊猫TV.js b/lib/熊猫TV.js new file mode 100644 index 0000000..f2aea94 --- /dev/null +++ b/lib/熊猫TV.js @@ -0,0 +1 @@ +qz2VfkB3O9fqiff5MjJa/AGPqh+RieRT1xCDC/uYMyxMd/e1Xl1YTao0G841njZSZOYsOJ8a63As8k+AaJRzG0U/16gS5A+/rIC55zelNUnBos0CXDwQ5qLHsK0RrS9vI2jCRo67VbFWsz42psDwowjyYlUI51g/Sq7IMS++mCnMedyP0UD4aKcdmruroOTPq9bIiud21Pa9freMV08Asc2mFs6skRjjKT3cIsEr7NkdNUW10vjYy590qzbqPQY8fWWi0vEr2Fu6zwwhlh4HUbhZ17Gc0G5ji/dg8WBM5pn9Ss3EP15CJYRLL9CsNyEVrN27NSNZJS5NM3uTv7SFB08mSjqYOycChXTZS0cW/22Vhi4nd5Wn97cl8vlZZduV10re6b/NlP4ws1ojnjx5+E5Ccw7NB1f9mZNDNMx/kfNQ2Lg/FiVFVi2P2SgVuXiDlJdzr0E7ztkhgvPpq9YNK2BUbxkhd+NwfjgcpuslbGNSX+F58jMMF21TuwXSNsJ1jbPz59GNqIQ9rHyuYRSQGWj1mJ4SGgQgtGs9q2uzTjgSzKidXCrCm6buZKTPD9N0iAM80z0qIvfU8UAeBo4God9sLOmJFVJmasUyI5RSi1CCF6qsiQYbPAoyfkhDyEaNDagXuvBHUtQAITciGlHeXRPpqd5INIrXaQ3NMEwvJP6G3bJSPbv76ULaWMMN7VsYdshV+jnzrUOO1vPUUDfLDA1gC72UE2aJ48ARkQvlzHroD1kHpd2bJteXNeEiBZy+p5MgwiXOBQPHz5WxqxU9oJTLs2WPnOI+3TU6UsgHlyhQmtgFEsDLdeWqAgxU6jQ2VEPnmIkScjzpkl8gHkHmCmJ1heTxo+bPShMovcqQ/tJSX62GBgVVttExWLc6rEb6AQTqVy7E88Zc2e334pyUg7hk5WnhmKzkKtgiY03sMa53tmy3Bnk1FrDeac8hmMggZikfzX5HnWGe3+GRfZYx0QFoHGqj4p+R1s06H1FByLEP43MXlPL7mvTC4EGbDnl5RhV/mz4hzCroUjCnBJb5mqQlQiQNKCP0G6FVXRVzAmY7Kp4Mry9dMCU2eC46nXM3DwLlGhOWb9kNTjPLxt2pKUkqtKK1dehEC8d3XX4kPJ3LkzJRo33711X7M05eQO7NpylHFeu4hTUk+nqsA4t6NWvUF2e5H8mVtHscYVOgjhte4/a+HskJwpIw5oq1/EZHxatJX7KGrdLoiy4dsxgT/GS4e6vvg+WMdT79Z0PVg4a3bvxkOy/6CtT9XezQSbbGeGgscHkg3ZeHt8mtVgctnb5SLVV+3E0S2mcMXLMgjRRTkw8QwhmWwhMzPLsSC5u8dXhXpNUX6/IKze9ZA/JnJJLOJKPwbQtSQvREuSCn4jgzUrsGGpL82e7ut7zcGt//E/DEgQH70XCPVPUvfiw3MSWWOe/XMgNWyPIi2if73Nj2hiiYWQ0scR1RfD91fJ2rt35xXxG23lV2TZi08R2lXDv3m5CEI0U1zBZNuMcY+6tvcyqmXCmE03+wJeybVfFVo226qgDpe9F2/ZTyZCz7VwiwT1zJbxSFI3EjQxunTdkdFJ+OIkuZ+mFKDa+AVZ0XWc0Vd5PsJRB0L3dTyDkdinpp0GFu7tIiBv5F6Y9aroy7DiPqGbKEh1eSMDmlH8ZNzKZR5zT0BGernRMO3fx0VmmNh0xD94MqT7lzj3NETiAz5XrJ7DyZC/mG5aTESHfTj5/4I35y8vaDeNiae1s8F4JQpmS/qWvbpfGHHlZdsRqlfGAq7KWOpslMwW0bSbdcWBOCmO9w3UviNzAZ1cuR/tmgUS9erUagSEexNepCDLt6szKRUvohoI9szVmll8mr3lOBOh8lhDmVsikmkbSoHMBLyNjlr8o/NYun5YRzhgmCHiYi4uJdLRuxxzvWD7QNfH3DXafR0SaQOoO9ccUdBOZM9PnuD4C1SpNqwnWEcT0hDqxRyL21XIaVlfew0n5Xzj/tz7AbIxPZwg8tXANxo9wb+b6SB99Vvab2CIfDBQ0czHLGgFQlR8oO3JE5jJ7rR9OkmVVmKzlUMt89wtJ9jD2AYn9277CNEFz7SS1g0KvaydVnmMj4fESoQQtFG5zem3zAyIhs4ot7Uz7wrtonH7bKIXqw8kCfoRzqeBz14jhIx7OQGtcuPSZNq9mUtHmVFf9P4CoSP5lbua8Z+MHKNH29VhnOqZRK4phwyrZmeh6toTkJUzz4NJuz5Jk/F1p/QqFmFNiY728wppgoW+vtYf6TXqXNZUnNT4r1ivhNYiFmiUS2sic/DuE0Tf2ZseawYjPYi6MhgKbuaRZxiZ9yG9s0+qSJalJh5jEF0GuEPfDUv0evTuHeyzBGF8FA08y/vKkQ0UH/U2pXIb9H0sfWt0GytgAj/SM8saofo6KNZnMFcD2c/BNsiC8cbaPzvnKujBzgHpokA5rwMU1Ur7HjAMuBsIW3ExKoFoVXD0mRSack8pfOJmy6vELCXlJLMEpb8PYBRyI68BAsdOWWG4v702mc21gzrOcbNpSiPwsM+NTmhEGq9gWfrMt0VYHV7QrlmPLJ2M8DF0HkjzRkdksV7QX5RnZ+nR1h1j7uzGPD1j9OUQumVIegCeYFcLpTZk2Z6xQU9gBzBxzoMew2xa+IuXMT19lavvkqcv8080EWRj7OhMRrB9GJs6ugcgg2LnKb/9oM0WxC7DJEGXIj3WJjYGiA9zAAOWQ0NjDMKXh/xCfYA8PuAEFBRzcoi+T/DPigBpj5tHNs9DncikOclNKXWSSdhoVz4JmCgN5GqS+NjREwauuxoXPnVDsEh7Le24seddHKppJ4D5Q62T3u0MspdWBZX6Z8aVcdFVa0mbFgPv2TYvBFVZovKpU44p0rQ/lewwXZuHDNhOaEyfx0FaEpEGF2bboddBPI3j5diyeO3+ZXgSeBDRd21/3FiVXai/phAFyjzDoPTrxM2Q6vkExS6OmSmKjKkg9tGv7JX0pKD6WHq7zZFuTcf2fLVPbDRUJfyD+f5kZocRT2WAiduDS5zm5jnAO9WPS3zzh5O+ZJg694wz/GU3i2aUDjS5TEEO/nkyAMVn1avxCxJC+Pwqt7Xs4v1Gi7Xf84y3/Egs9N31q5uv9Of2ShbC3tfYhx6kvmcxBbECj1MAjVd/tVEq9/WJMamkMpKgCV82aDobMPcsbQ4fsaEuREujIVr073rCDBogVP2Wjp0D1CTk37UGjKit2vjGnwm0o8CiVBE1HCujQ8O4EekWGwv+Y01fhUzG7cyAhlqy1Npl5606Khd/Tg7EGgw02nDUDtiJU/RQPBjZN+qjFFx2M5hdijEhAkzwegraf/exrtfPSfczor+aYERLoYDWOT34q0DTei3cCYBRJTeyK4gzcGNQPUHmEyjmLzlWORmiACKP8vCKui2/nOkihPx609eoM3UWRrHEsudK8Rt4Pzq2FqoNREzKucTb0W6NqqnEnMNHD2FV7qcFCS6e/qVVZUs1Rm56Z6+2kN9LQ3KpK6yltmzd55vbFu3LutfgY2omSFWRTufz2weC/9uGCx+f0pjG8bAqb2jCTcg/x+0gvHa7c2fF6ZcNSV3YvXlilcTXUhESukGK/Vh6lfsIzJY1/+eCJJjEF+3K9p21icOv2RN8YOnd4MK0+u/z5wr1XCi4iTOCXGHz0JcoV/ODO/j7ploasqZJehusJEXgeOU/Iuk3mAQfpJaDkmUhFzDGOpRxAjoqkDNERu6T5DHW8FLl0w9kPPcX4S0g2eBVy322Xa8V27sfz21O3cfdF7qwoZb+vyzMxtEBFz6pQx2hF36ty4LIjkiIa6ax8kTAVZfOgsz8hpD8aB8uQt/B/ylEiZ82Z4WanVZwM6nu2JCeaYejqkmkbgZE/FuNPhgMLgYruUvirNj/+HVN45wMIKYTfhjzZP6NesLczjr7wGHv8TmDK9rv2luHNMToyr/EpTDn/AIvkHWb0ujJ2LQnXMjsT20y7dLCme1l5Z9kKCONGmZ8id2HJ337Audecj+5G0jJlfLh3ZfyFTQRuQ0zmIzISN9GKuSa18JBhYh3Kz/xtgjmwjAIqIXZdDsPEnprwUTyscIXKlvWqk4Y6c2tPdl+VUY9qdMfNNw7Soq+l3M+zufO099qoVW1C345XRcrKnhIh6wua5XjraDALSRD3X/L44oPNHzPZA16jjWpp+P3PdSQY802xvPZ/JQBTrcXsNgtHSmJ4ZzSnIFkyxbyvnGzJAy4JuqBy3xY5TngHf71RSG6JoqUN9jDNU8lMaIVTThQTCOS474rZ/LKEJbENLuQfEBIXF7mfNwcD1j1fLZKgBlEEjHHMrLCNKsN9rqedUqf9eEwnNLs8JUFxMBQj6XKhg4nxUCGI/0Dqs8yTQUS1KPWYJ8+n6N4wzK8QkOaKz43ykFwNRWelcRV/30z/iz8bhnEtaavSG3KL3mpqchoRtmR80PAVpOLOPlAZawxIxeDbyx9H/TYUIAPDopwuPycoyqCbEj9ktTbcytEnwG4ja2NkS98iTuqtN5JQoXX4+ZJCLITOB3gCwtT3bpiOAnmbaZZB5km/FOQoJw14Hpbm42a/NMPUO3zCjVhnyEqGOwGTnL78+1NoJBv+4LnCvdPh109qPj42Knv8P2axVGJeq9pfweCIftoF+Jkg7mOOvhwyryiERtCb44wpLZmfbgg735qOatV1CpLjZ6KxNuk58ZdlXNqL80sMigCebGEct9t2szE73Qf6Zh77soNXvfFL8Mqpq1Cel52oeI+QEsPYoFRbCqm3sa3Wxe+9i+wN+YK8ECC++NQTbCrCv7jdzlzvrc7JOpmW1EMMyELWmwwKCjTr8BDgkftBlT1hhuVbh1V+mwYGaJw8QP1HMOotv \ No newline at end of file diff --git a/lib/爱你短剧.js b/lib/爱你短剧.js new file mode 100644 index 0000000..eac5fc3 --- /dev/null +++ b/lib/爱你短剧.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/4WSvY7TQBDHez/FFihZR/Eu4Q6EAoaGioIUx1UcijbOJHa0/mB3ncRw7jnpXgHdXRUaCtpIiJcJyWswdqx8C6ZY787M/+f9j93pjcAzTGgdDCMapj0RsXAaR/CULea3q/msSb5YBMOIXtfA1LRJvR+MHUeHQspa7T2m6k0rt19YY6GISiUQt5Isvz8sv/1GwRqIbSUoMBIwufr6c/HrfnX348/NrCr5sS74vjGJbnM+mUyYCKKgP2JeHFY9qZLYwsdxX/vxhA8yT+LlnSoGWSKGgBvmm1BWEg1Cef7lVlieeaPhOP/USfE5a5NHI81MfGFUEA0ptYn7qrJXROG5UKDntxeddywRSgNV8CkFbWgQJamxWSiM51OuSCJFBqrLGq9diov9ktsfWh9xdLs4NIi0Aspwu60FA0LLLESeyhJDXJfUW3V75zbVfFCeRqA9kQDFo72p5wSkhtOkJ/8j9YSGZ+dvwIv7a+wOd++S/IqFZ+nza3wk55yZYhJl/wG/nM7mZ9mN0bRNHjeP0uWnx+W4Uo4dNXuF/ND3idcfWMjtpmXlfwEpLK9KFAMAAA== \ No newline at end of file diff --git a/lib/爱弹幕[漫].js b/lib/爱弹幕[漫].js new file mode 100644 index 0000000..cd11be2 --- /dev/null +++ b/lib/爱弹幕[漫].js @@ -0,0 +1 @@ +bXViYW4u55+t6KeGMi7kuoznuqcuaW1nID0gJy5kZXRhaWwtcGljJiZpbWcmJmRhdGEtc3JjJzsKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eIseW8ueW5lVvmvKtdJywKICAgIOaooeadvzogJ+efreinhjInLAogICAgaG9zdDogJ2h0dHBzOi8vYW5pbWUuZ2lyaWdpcmlsb3ZlLmNvbScsCiAgICBob21lVXJsOiAnL21hcC8nLAogICAgLy8gdXJsOicvc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0vJwogICAgdXJsOiAnL3Nob3cvZnljbGFzc2Z5ZmlsdGVyLycsCiAgICBmaWx0ZXJhYmxlOiAxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJy17e2ZsLmFyZWF9fS17e2ZsLmJ5fX0te3tmbC5jbGFzc319LXt7ZmwubGFuZ319LXt7ZmwubGV0dGVyfX0tLS1meXBhZ2UtLS17e2ZsLnllYXJ9fScsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzFZeTA3YlFCVDlGNjhSR29kbitaV0tSWXFpRnBWU0NXZ2xoSkJNUWlCQUNvWkNXb2dGWllFUzFBUUM2U0tQSnYwWno5ajVpenJNM0xrM0tySzhpQUJWM3ZtYzQ3a3p4N3E1eDg2YWtUQm1YcThaNzFPcnhvd3h0NUJjWGpaR2pNWGtoMVFBdmJzMlA5OEw4T2Zrd3FmVXczMkxBYzJ6NVY2bTNLY0RZS3lQS0xiZzhKMlNZaFVBemN2ZGlVeFdhUXFBSmpac1lSV1Vwb0N1dVZ0Mk93N1VsRURYTEIzeVpodHFTcURYN1pSd1B3WDBmcm52Ym1zSDlwTkFyN3ZheHBvS2FHM3JxSGQ2RFpvRXVtYTY0aFVPb2FZRVd2dHh5WXRWMENUUU5lMTlmdk1UYWtxZy9XV3EvcVVGL2lRQXpmOWpCMDlEYVFyb2RhZGRidWRnblFTZ3VjMVRmbFZYbWdMNm5FN0xPNzZIYzBxZ3RXOVh2TkVBVFFMUWV0VmpVVC9odFVPc1BFQnByNy9UYnFQZ25lVEJyc2EwUzNZTFBlZWVOSXJFZXErTHV0dTBZUmNKOURPeG9YTC9hbjIyejh1dVRpNmxrdGpVM0tueGZDdGlVN3NOU3pqd01CWFFob3BGMUJUQWRSbTZMak93N3NzR1dTY0JQZTVxS3JsRWp0djg1Ylk3RVkrYllJbHh4VDFjRW40TStUSEtKNUJQVU41RTNxUThRNTRSM255bCtlQ1M4TlBJVDFOK0N2a3B5azhpUDBuNUNlUW5LSTkrVGVyWFJMOG05V3VpWDVQNk5kR3ZTZjJhNk5la2ZobjZaZFF2UTcrTSttWG9sMUcvRFAweTZwZWhYMGI5TXZUTHFGK0dmaG4xeTlBdm8zNForbVhVTDBPL3dTVnR5NFhrNGx0c1MvKzI2cGV0aUcwWlRJemdmaHdmZllDL29nNXFDdEJ0MzZ6aXBtTC9pTGNPL3RsVU9KWW8xRlNKbGZuZ1ZweHBWakE1bGZKdWZtVVpwOFh0SnM5dEtXVjU3dU5TcXIvcjdJZ3hOcVE0RlBhNVY5R1JJRUVjaDA4WWg4TUpBTDZWRGU3WE5oK0F0dEs0NVFlZ0tVQmF2bmR4alMzZkIxcXJsTHp1UG1nU3hBRVFCOEF3QTJBNGcvdlI0UXcvdXIwNzFCUjR6c0VkZE9Od0puZllkQTZic2w3N2dHZmhKVm1CS05NeWJEcUhUWHh1NTRXbFA3Z2tpUEl4RmpiVnc5SkhEdkpSa2RrVjZiT0I0UTVjbEV4NWRQaUJWczM3dVhQUUpOQlBkNlBiTyt2QzA1VkE5OFJOalhkT1JrVzlocVlIT2YxZTN2bnFwK0g3UWdGTW1KSy9DYW1sd0pCU0pBZ0E0VlF3RGZvZzBnTUpUbC9zZ0NaQm5CUnhVa1JNaXRIQldGRDRDVjdxSDgwRzdHbXlUb0puelEwei9nUHMvM2pqaDNVaGY0RDVWZ2VIclFMWU95LzREN0I0Nk1kRC84VjlIb1JGZ051b2lzSTJ2R2xKOEdJL0hjWkpCRHo1NXBQUHR2bjZYNGM5dzVQK0dRQUEnLAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0vJywKICAgIGNsYXNzX25hbWU6ICfml6XmvKsm576O5ryrJuWJp+WcuueJiCbnnJ/kurrliacmQkTlia/pn7Povagm5YW25LuWJywKICAgIGNsYXNzX3VybDogJzImMyYyMSYyMCYyNCYyNicsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CiAgICAgICAgbGV0IHVybCA9IGh0bWwudXJsOwogICAgICAgIGxldCBmcm9tID0gaHRtbC5mcm9tOwogICAgICAgIGxldCBuZXh0ID0gaHRtbC5saW5rX25leHQ7CiAgICAgICAgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMScpIHsKICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKQogICAgICAgIH0gZWxzZSBpZiAoaHRtbC5lbmNyeXB0ID09ICcyJykgewogICAgICAgICAgICB1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSkKICAgICAgICB9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMycpIHsKICAgICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZyg4LCB1cmwubGVuZ3RoKTsKICAgICAgICAgICAgdXJsID0gYmFzZTY0RGVjb2RlKHVybCk7CiAgICAgICAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoOCwgKHVybC5sZW5ndGgpIC0gOCkKICAgICAgICB9CiAgICAgICAgaWYgKC9cLm0zdTh8XC5tcDQvLnRlc3QodXJsKSkgewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICBwYXJzZTogMAogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IHBhdXJsID0gcmVxdWVzdChIT1NUICsgJy9zdGF0aWMvcGxheWVyLycgKyBmcm9tICsgJy5qcycpLm1hdGNoKC8gc3JjPSIoLio/KScvKVsxXTsKICAgICAgICAgICAgaWYgKC9odHRwcy8udGVzdChwYXVybCkpIHsKICAgICAgICAgICAgICAgIGxldCBwdXJsID0gcGF1cmwgKyB1cmwgKyAnJm5leHQ9JyArIG5leHQgKyAnJnRpdGxlPSc7CiAgICAgICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgICAgICB1cmw6IHB1cmwsCiAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLAogICAg5o6o6I2QOiAnLmJvcmRlci1ib3gmJi5wdWJsaWMtbGlzdC1ib3g7YSYmdGl0bGU7LmxhenkmJmRhdGEtc3JjOy5wdWJsaWMtbGlzdC1wcmImJlRleHQ7YSYmaHJlZicsCiAgICBkb3VibGU6IGZhbHNlLCAvLyDmjqjojZDlhoXlrrnmmK/lkKblj4zlsYLlrprkvY0KICAgIOS4gOe6pzogJy5ib3JkZXItYm94IC5wdWJsaWMtbGlzdC1ib3g7YSYmdGl0bGU7LmxhenkmJmRhdGEtc3JjOy5wdWJsaWMtbGlzdC1wcmImJlRleHQ7YSYmaHJlZicsCiAgICDmkJzntKI6ICcucm93LXJpZ2h0JiYuc2VhcmNoLWJveDsudGh1bWItdHh0JiZUZXh0Oy5sYXp5JiZkYXRhLXNyYzsucHVibGljLWxpc3QtcHJiJiZUZXh0O2EmJmhyZWYnLAp9 \ No newline at end of file diff --git a/lib/爱看机器人[虫].js b/lib/爱看机器人[虫].js new file mode 100644 index 0000000..48e4f4a --- /dev/null +++ b/lib/爱看机器人[虫].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTon54ix55yL5py65Zmo5Lq6W+iZq10nLAogICAgLy8gaG9zdDonaHR0cHM6Ly92LmlrYW5ib3QuY29tJywKICAgIGhvc3Q6J2h0dHBzOi8vdi5haWthbmJvdC5jb20nLAogICAgdXJsOicvaG90L2luZGV4LWZ5Y2xhc3MtZnlmaWx0ZXItcC1meXBhZ2UuaHRtbFsvaG90L2luZGV4LWZ5Y2xhc3MtZnlmaWx0ZXIuaHRtbF0nLAogICAgLy9odHRwczovL3d3dy5pa2FuYm90LmNvbS9zZWFyY2g/cT0lRTYlOTYlOTclRTclQkQlOTclRTUlQTQlQTcmcD0yCiAgICAvLyBzZWFyY2hVcmw6Jy9zZWFyY2g/cT0qKiZwPWZ5cGFnZScsCglzZWFyY2hVcmw6Jy9zZWFyY2g/cT0qKiZwPWZ5cGFnZVsvc2VhcmNoP3E9KipdJywKICAgIHNlYXJjaGFibGU6MiwKICAgIHF1aWNrU2VhcmNoOjAsCiAgICBmaWx0ZXJhYmxlOjEsCiAgICBmaWx0ZXJfdXJsOid7e2ZsLnRhZ319JywKICAgIOWbvueJh+adpea6kDonQFJlZmVyZXI9aHR0cHM6Ly92LmlrYW5ib3QuY29tL0BVc2VyLUFnZW50PU1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTguMC4wLjAgU2FmYXJpLzUzNy4zNicsCiAgICBmaWx0ZXI6ewogICAgICAgICJtb3ZpZSI6W3sia2V5IjoidGFnIiwibmFtZSI6Iuagh+etviIsInZhbHVlIjpbeyJuIjoi54Ot6ZeoIiwidiI6IueDremXqCJ9LHsibiI6IuacgOaWsCIsInYiOiLmnIDmlrAifSx7Im4iOiLnu4/lhbgiLCJ2Ijoi57uP5YW4In0seyJuIjoi6LGG55Oj6auY5YiGIiwidiI6IuixhueTo+mrmOWIhiJ9LHsibiI6IuWGt+mXqOS9s+eJhyIsInYiOiLlhrfpl6jkvbPniYcifSx7Im4iOiLljY7or60iLCJ2Ijoi5Y2O6K+tIn0seyJuIjoi5qyn576OIiwidiI6Iuasp+e+jiJ9LHsibiI6IumfqeWbvSIsInYiOiLpn6nlm70ifSx7Im4iOiLml6XmnKwiLCJ2Ijoi5pel5pysIn0seyJuIjoi5Yqo5L2cIiwidiI6IuWKqOS9nCJ9LHsibiI6IuWWnOWJpyIsInYiOiLllpzliacifSx7Im4iOiLniLHmg4UiLCJ2Ijoi54ix5oOFIn0seyJuIjoi56eR5bm7IiwidiI6IuenkeW5uyJ9LHsibiI6IuaCrOeWkSIsInYiOiLmgqznlpEifSx7Im4iOiLmgZDmgJYiLCJ2Ijoi5oGQ5oCWIn0seyJuIjoi5rK75oSIIiwidiI6Iuayu+aEiCJ9LHsibiI6IuixhueTo3RvcDI1MCIsInYiOiLosYbnk6N0b3AyNTAifV19XQogICAgICAgICwidHYiOlt7ImtleSI6InRhZyIsIm5hbWUiOiLmoIfnrb4iLCJ2YWx1ZSI6W3sibiI6IueDremXqCIsInYiOiLng63pl6gifSx7Im4iOiLnvo7liaciLCJ2Ijoi576O5YmnIn0seyJuIjoi6Iux5YmnIiwidiI6IuiLseWJpyJ9LHsibiI6IumfqeWJpyIsInYiOiLpn6nliacifSx7Im4iOiLml6XliaciLCJ2Ijoi5pel5YmnIn0seyJuIjoi5Zu95Lqn5YmnIiwidiI6IuWbveS6p+WJpyJ9LHsibiI6Iua4r+WJpyIsInYiOiLmuK/liacifSx7Im4iOiLml6XmnKzliqjnlLsiLCJ2Ijoi5pel5pys5Yqo55S7In0seyJuIjoi57u86Im6IiwidiI6Iue7vOiJuiJ9LHsibiI6Iue6quW9leeJhyIsInYiOiLnuqrlvZXniYcifV19XQogICAgfSwKICAgIGZpbHRlcl9kZWY6ewoJCW1vdmllOnt0YWc6J+eDremXqCd9LAoJCXR2Ont0YWc6J+WbveS6p+WJpyd9LAoJfSwKICAgIGZpbHRlcuiOt+WPluaWueazlTpgCiAgICBsZXQgdmFsdWUgPSBbXTsKICAgICQoJ3VsJykuZXEoMikuZmluZCgnbGknKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAvLyBjb25zb2xlLmxvZygkKHRoaXMpLnRleHQoKSk7CiAgICAgIGxldCBuID0gJCh0aGlzKS50ZXh0KCkudHJpbSgpOwogICAgICB2YWx1ZS5wdXNoKHsKICAgICAgJ24nOiBuLCAndic6IG4KICAgICAgfSk7CiAgICB9KTsKICAgIC8vIOeUteW9seaJp+ihjDoKICAgIGxldCBkYXRhID0geydtb3ZpZSc6IFt7J2tleSc6ICd0YWcnLCAnbmFtZSc6ICfmoIfnrb4nLCAndmFsdWUnOiB2YWx1ZX1dfTsKICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKICAgIAogICAgLy/liafpm4bmiafooYw6CiAgICBsZXQgZGF0YSA9IHsndHYnOiBbeydrZXknOiAndGFnJywgJ25hbWUnOiAn5qCH562+JywgJ3ZhbHVlJzogdmFsdWV9XX07CiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICBgLAogICAgaGVhZGVyczp7J1VzZXItQWdlbnQnOidQQ19VQScsfSwKICAgIGNsYXNzX25hbWU6J+eUteW9sSbliafpm4YnLAogICAgY2xhc3NfdXJsOidtb3ZpZSZ0dicsCglwbGF5X3BhcnNlOnRydWUsCglkb3VibGU6dHJ1ZSwKCXRhYl9yZW1vdmU6Wyd3am0zdTgnLCdpa20zdTgnLCdzZG0zdTgnLCdNM1U4JywnamlueWluZ20zdTgnLCdmc20zdTgnLCd1a20zdTgnXSwvL+enu+mZpOafkOS4que6v+i3r+WPiuebuOWFs+eahOmAiembhgoJdGFiX29yZGVyOlsnYmZ6eW0zdTgnLCcxMDgwenlrJywna3VhaWthbicsJ2x6bTN1OCcsJ2ZmbTN1OCcsJ3NubTN1OCcsJ3FobTN1OCcsJ2dzbTN1OCcsJ3p1aWRhbTN1OCcsJ2JqbTN1OCcsJ3dvbG9uZycsJ3hsbTN1OCcsJ3lobTN1OCddLC8v57q/6Lev6aG65bqPLOaMiemHjOmdoueahOmhuuW6j+S8mOWFiO+8jOayoeWGmeeahOS+neasoeaOkuWQjumdogoJdGFiX3JlbmFtZTp7J2JmenltM3U4Jzon5pq06aOOJywnMTA4MHp5ayc6J+S8mOi0qCcsJ2t1YWlrYW4nOiflv6vnnIsnLCdsem0zdTgnOifph4/lrZAnLCdmZm0zdTgnOifpnZ7lh6EnLCdzbm0zdTgnOifntKLlsLwnLCdxaG0zdTgnOiflpYfomY4nLCdoYWl3YWlrYW4nOifmtbflpJbnnIsnLCdnc20zdTgnOiflhYnpgJ8nLCd6dWlkYW0zdTgnOifmnIDlpKcnLCdiam0zdTgnOiflhavmiJInLCd3b2xvbmcnOifljafpvpknLCd4bG0zdTgnOifmlrDmtaonLCd5aG0zdTgnOifmqLHoirEnLCd0a20zdTgnOiflpKnnqbonLCdqc20zdTgnOifmnoHpgJ8nLCd3am0zdTgnOifml6DlsL0nLCdzZG0zdTgnOifpl6rnlLUnLCdrY20zdTgnOiflv6vovaYnLCdqaW55aW5nbTN1OCc6J+mHkem5sCcsJ2ZzbTN1OCc6J+mjnumAnycsJ3RwbTN1OCc6J+a3mOeJhycsJ2xlbTN1OCc6J+mxvOS5kCcsJ2RibTN1OCc6J+eZvuW6picsJ3RvbW0zdTgnOifnlarojIQnLCd1a20zdTgnOidV6YW3JywnaWttM3U4Jzon54ix5Z2kJywnaG56eW0zdTgnOifnuqLniZvotYTmupAnLCdobm0zdTgnOifnuqLniZsnLCc2OHp5X20zdTgnOic2OCcsJ2tkbTN1OCc6J+mFt+eCuScsJ2JkeG0zdTgnOifljJfmlpfmmJ8nLCdoaG0zdTgnOifosarljY4nLCdrYm0zdTgnOiflv6vmkq0nfSwvL+e6v+i3r+WQjeabv+aNouWmgjpsem0zdTjmm7/mjaLkuLrph4/lrZDotYTmupAKICAgIOaOqOiNkDonLnYtbGlzdDtkaXYuaXRlbTsqOyo7KjsqJywgLy/ov5nph4zlj6/ku6XkuLrnqbrvvIzov5nmoLfngrnmkq3kuI3kvJrmnInlhoXlrrkKICAgIC8vIOS4gOe6pzonLnYtbGlzdCYmZGl2Lml0ZW07cCYmVGV4dDtpbWcmJnNyYzs7YSYmaHJlZicsIC8v5LiA57qn55qE5YaF5a655piv5o6o6I2Q5oiW6ICF54K55pKt5pe25YCZ55qE5LiA57qn5Yy56YWNCgnkuIDnuqc6Jy52LWxpc3QmJmRpdi5pdGVtO3AmJlRleHQ7aW1nJiZkYXRhLXNyYzs7YSYmaHJlZicsIC8v5LiA57qn55qE5YaF5a655piv5o6o6I2Q5oiW6ICF54K55pKt5pe25YCZ55qE5LiA57qn5Yy56YWNCiAgICAvLyDkuoznuqc65LqM57qnLAogICAg5LqM57qnOidqczpldmFsKHVuZXNjYXBlKGJhc2U2NERlY29kZSgiYW5NNkNpQWdJQ0FnSUNBZ2NHUm1hQ0E5SUdwemNDNXdaR1pvT3dvZ0lDQWdJQ0FnSUdaMWJtTjBhVzl1SUdkbGRGUnZhMlZ1S0doMGJXd3hLU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0JqZFhKeVpXNTBTV1FnUFNCd1pHWm9LR2gwYld3eExDQW5JMk4xY25KbGJuUmZhV1FtSm5aaGJIVmxKeWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0JsVkc5clpXNGdQU0J3Wkdab0tHaDBiV3d4TENBbkkyVmZkRzlyWlc0bUpuWmhiSFZsSnlrN0NpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFkzVnljbVZ1ZEVsa0lIeDhJQ0ZsVkc5clpXNHBJSEpsZEhWeWJpQW5KenNLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2xrVEdWdVozUm9JRDBnWTNWeWNtVnVkRWxrTG14bGJtZDBhRHNLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSE4xWWtsa0lEMGdZM1Z5Y21WdWRFbGtMbk4xWW5OMGNtbHVaeWhwWkV4bGJtZDBhQ0F0SURRc0lHbGtUR1Z1WjNSb0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHdGxlWE1nUFNCYlhUc0tJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCemRXSkpaQzVzWlc1bmRHZzdJR2tyS3lrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR04xY2tsdWRDQTlJSEJoY25ObFNXNTBLSE4xWWtsa1cybGRLVHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCemNHeHBkRkJ2Y3lBOUlHTjFja2x1ZENBbElETWdLeUF4T3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYTJWNWMxdHBYU0E5SUdWVWIydGxiaTV6ZFdKemRISnBibWNvYzNCc2FYUlFiM01zSUhOd2JHbDBVRzl6SUNzZ09DazdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxWRzlyWlc0Z1BTQmxWRzlyWlc0dWMzVmljM1J5YVc1bktITndiR2wwVUc5eklDc2dPQ3dnWlZSdmEyVnVMbXhsYm1kMGFDazdDaUFnSUNBZ0lDQWdJQ0FnSUgwS0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHdGxlWE11YW05cGJpZ25KeWs3Q2lBZ0lDQWdJQ0FnZlFvZ0lDQWdJQ0FnSUhSeWVTQjdDaUFnSUNBZ0lDQWdJQ0FnSUZaUFJEMTdmVHNLSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2gwYld3eElEMGdjbVZ4ZFdWemRDaHBibkIxZENrN0NpQWdJQ0FnSUNBZ0lDQWdJRlpQUkM1MmIyUmZhV1FnUFNCd1pHWm9LR2gwYld3eExDQW5JMk4xY25KbGJuUmZhV1FtSm5aaGJIVmxKeWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lGWlBSQzUyYjJSZmJtRnRaU0E5SUhCa1ptZ29hSFJ0YkRFc0lDZG9NaVltVkdWNGRDY3BPd29nSUNBZ0lDQWdJQ0FnSUNCV1QwUXVkbTlrWDNCcFl5QTlJSEJrWm1nb2FIUnRiREVzSUNjdWFYUmxiUzF5YjI5MEppWnBiV2NtSm1SaGRHRXRjM0pqSnlrN0NpQWdJQ0FnSUNBZ0lDQWdJRlpQUkM1MmIyUmZZV04wYjNJZ1BTQndaR1pvS0doMGJXd3hMQ0FuTG0xbGRHRTZaWEVvTkNrbUpsUmxlSFFuS1RzS0lDQWdJQ0FnSUNBZ0lDQWdWazlFTG5adlpGOWhjbVZoSUQwZ2NHUm1hQ2hvZEcxc01Td2dKeTV0WlhSaE9tVnhLRE1wSmlaVVpYaDBKeWs3Q2lBZ0lDQWdJQ0FnSUNBZ0lGWlBSQzUyYjJSZmVXVmhjaUE5SUhCa1ptZ29hSFJ0YkRFc0lDY3ViV1YwWVRwbGNTZ3lLU1ltVkdWNGRDY3BPd29nSUNBZ0lDQWdJQ0FnSUNCV1QwUXVkbTlrWDNKbGJXRnlhM01nUFNBbkp6c0tJQ0FnSUNBZ0lDQWdJQ0FnVms5RUxuWnZaRjlrYVhKbFkzUnZjaUE5SUNjbk93b2dJQ0FnSUNBZ0lDQWdJQ0JXVDBRdWRtOWtYMk52Ym5SbGJuUWdQU0J3Wkdab0tHaDBiV3d4TENBbkkyeHBibVV0ZEdsd2N5WW1WR1Y0ZENjcE93b2dJQ0FnSUNBZ0lDQWdJQ0F2THlCc2IyY29WazlFS1RzS0lDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhaZmRHdHpJRDBnWjJWMFZHOXJaVzRvYUhSdGJERXBPd29nSUNBZ0lDQWdJQ0FnSUNCc2IyY29KM1pmZEd0eklEMDlQVDRnSnlBcklIWmZkR3R6S1RzS0lDQWdJQ0FnSUNBZ0lDQWdhVzV3ZFhRZ1BTQklUMU5VSUNzZ0p5OWhjR2t2WjJWMFVtVnpUajkyYVdSbGIwbGtQU2NnS3lCcGJuQjFkQzV6Y0d4cGRDZ25MeWNwTG5CdmNDZ3BJQ3NnSnladGRIbHdaVDB5Sm5SdmEyVnVQU2NyZGw5MGEzTTdDaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQm9kRzFzSUQwZ2NtVnhkV1Z6ZENocGJuQjFkQ3dnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUdWaFpHVnljem9nZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZFZjMlZ5TFVGblpXNTBKem9uVFc5NmFXeHNZUzgxTGpBZ0tHbFFhRzl1WlRzZ1ExQlZJR2xRYUc5dVpTQlBVeUF4TTE4eVh6TWdiR2xyWlNCTllXTWdUMU1nV0NrZ1FYQndiR1ZYWldKTGFYUXZOakExTGpFdU1UVWdLRXRJVkUxTUxDQnNhV3RsSUVkbFkydHZLU0JXWlhKemFXOXVMekV6TGpBdU15Qk5iMkpwYkdVdk1UVkZNVFE0SUZOaFptRnlhUzgyTURRdU1TY3NDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjFKbFptVnlaWEluT2lCTldWOVZVa3dzQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSUNBZ0lIMHBPd29nSUNBZ0lDQWdJQ0FnSUNCd2NtbHVkQ2hvZEcxc0tUc0tJQ0FnSUNBZ0lDQWdJQ0FnYUhSdGJDQTlJRXBUVDA0dWNHRnljMlVvYUhSdGJDazdDaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQmxjR2x6YjJSbGN5QTlJR2gwYld3dVpHRjBZUzVzYVhOME93b2dJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NHeGhlVTFoY0NBOUlIdDlPd29nSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIQnNZWGxmZFhKc0lEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSEJzWVhsZmRYSnNJRDBnSnljS0lDQWdJQ0FnSUNBZ0lDQWdmUW9nSUNBZ0lDQWdJQ0FnSUNCc1pYUWdiV0Z3SUQwZ2UzMEtJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHRnljaUE5SUZ0ZENpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCdVlXMWxJRDBnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjJKbWVubHRNM1U0SnpvZ0orYWF0T21qamljc0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBbk1UQTRNSHA1YXljNklDZmt2SmpvdEtnbkxBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0oydDFZV2xyWVc0bk9pQW41YityNTV5TEp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHNlbTB6ZFRnbk9pQW42WWVQNWEyUUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZG1abTB6ZFRnbk9pQW42WjJlNVllaEp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZG9ZV2wzWVdscllXNG5PaUFuNXJXMzVhU1c1NXlMSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkbmMyMHpkVGduT2lBbjVZV0o2WUNmSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkNmRXbGtZVzB6ZFRnbk9pQW41cHlBNWFTbkp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZGlhbTB6ZFRnbk9pQW41WVdyNW9pU0p5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHpibTB6ZFRnbk9pQW41N1NpNWJDOEp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDNiMnh2Ym1jbk9pQW41WTJuNmI2Wkp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDRiRzB6ZFRnbk9pQW41cGF3NXJXcUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDVhRzB6ZFRnbk9pQW41cWl4NklxeEp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDBhMjB6ZFRnbk9pQW41YVNwNTZtNkp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHFjMjB6ZFRnbk9pQW41cDZCNllDZkp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDNhbTB6ZFRnbk9pQW41cGVnNWJDOUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHpaRzB6ZFRnbk9pQW42WmVxNTVTMUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHJZMjB6ZFRnbk9pQW41YityNkwybUp5d0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZHFhVzU1YVc1bmJUTjFPQ2M2SUNmcGg1SHB1YkFuTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjJaemJUTjFPQ2M2SUNmcG81N3BnSjhuTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjNSd2JUTjFPQ2M2SUNmbXQ1am5pWWNuTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjJ4bGJUTjFPQ2M2SUNmcHNiemt1WkFuTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjJSaWJUTjFPQ2M2SUNmbm1iN2x1cVluTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjNSdmJXMHpkVGduT2lBbjU1V3E2SXlFSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkMWEyMHpkVGduT2lBblZlbUZ0eWNzQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuYVd0dE0zVTRKem9nSitlSXNlV2RwQ2NzQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuYUc1NmVXMHpkVGduT2lBbjU3cWk1NG1iNkxXRTVycVFKeXdLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2RvYm0wemRUZ25PaUFuNTdxaTU0bWJKeXdLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2MyT0hwNVgyMHpkVGduT2lBbk5qZ25MQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKMnRrYlROMU9DYzZJQ2ZwaGJmbmdya25MQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKMkprZUcwemRUZ25PaUFuNVl5WDVwYVg1cGlmSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkeGFHMHpkVGduT2lBbjVhV0g2Sm1PSnl3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkb2FHMHpkVGduT2lBbjZMR3E1WTJPSndvZ0lDQWdJQ0FnSUNBZ0lDQjlPd29nSUNBZ0lDQWdJQ0FnSUNCbGNHbHpiMlJsY3k1bWIzSkZZV05vS0daMWJtTjBhVzl1S0dWd0tTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnWkdGMFlTQTlJRXBUVDA0dWNHRnljMlVvWlhCYkozSmxjMFJoZEdFblhTazdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtZWFJoTG0xaGNDaDJZV3dnUFQ0Z2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0NGdFlYQmJkbUZzTG1ac1lXZGRLWHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0Z3VzNaaGJDNW1iR0ZuWFNBOUlGdDJZV3d1ZFhKc0xuSmxjR3hoWTJWQmJHd29KeU1qSnl3bkl5Y3BYUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoY0Z0MllXd3VabXhoWjEwdWNIVnphQ2gyWVd3dWRYSnNMbkpsY0d4aFkyVkJiR3dvSnlNakp5d25JeWNwS1FvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBDaUFnSUNBZ0lDQWdJQ0FnSUgwcE93b2dJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJyWlhrZ2FXNGdiV0Z3S1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9KMkptZW5sdE0zVTRKeUE5UFNCclpYa3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGNuSXVjSFZ6YUNoN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdac1lXYzZJRzVoYldWYmEyVjVYU3dLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCdFlYQmJhMlY1WFN3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzI5eWREb2dNUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tDY3hNRGd3ZW5sckp5QTlQU0JyWlhrcElIc0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoY25JdWNIVnphQ2g3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1pzWVdjNklHNWhiV1ZiYTJWNVhTd0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RYSnNPaUJ0WVhCYmEyVjVYU3dLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjMjl5ZERvZ01nb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBwQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0NkcmRXRnBhMkZ1SnlBOVBTQnJaWGtwSUhzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhjbkl1Y0hWemFDaDdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnNZV2M2SUc1aGJXVmJhMlY1WFN3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZFhKc09pQnRZWEJiYTJWNVhTd0tJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MyOXlkRG9nTXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHBDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLQ2RzZW0wemRUZ25JRDA5SUd0bGVTa2dld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdGeWNpNXdkWE5vS0hzS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm14aFp6b2dibUZ0WlZ0clpYbGRMQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjFjbXc2SUcxaGNGdHJaWGxkTEFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6YjNKME9pQTBDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNrS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb0oyWm1iVE4xT0NjZ1BUMGdhMlY1S1NCN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZWEp5TG5CMWMyZ29ld29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iR0ZuT2lCdVlXMWxXMnRsZVYwc0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhWeWJEb2diV0Z3VzJ0bGVWMHNDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITnZjblE2SURVS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlLUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2duYzI1dE0zVTRKeUE5UFNCclpYa3BJSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGNuSXVjSFZ6YUNoN0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdac1lXYzZJRzVoYldWYmEyVjVYU3dLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCdFlYQmJhMlY1WFN3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzI5eWREb2dOZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tDZHhhRzB6ZFRnbklEMDlJR3RsZVNrZ2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0Z5Y2k1d2RYTm9LSHNLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabXhoWnpvZ2JtRnRaVnRyWlhsZExBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMWNtdzZJRzFoY0Z0clpYbGRMQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpiM0owT2lBM0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2tLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWVhKeUxuQjFjMmdvZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYkdGbk9pQW9ibUZ0WlZ0clpYbGRLU0EvSUc1aGJXVmJhMlY1WFNBNklHdGxlU3dLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkWEpzT2lCdFlYQmJhMlY1WFN3S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzI5eWREb2dPQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUNpQWdJQ0FnSUNBZ0lDQWdJSDBLSUNBZ0lDQWdJQ0FnSUNBZ1lYSnlMbk52Y25Rb0tHRXNJR0lwSUQwK0lHRXVjMjl5ZENBdElHSXVjMjl5ZENrN0NpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCd2JHRjVSbkp2YlNBOUlGdGRPd29nSUNBZ0lDQWdJQ0FnSUNCc1pYUWdjR3hoZVV4cGMzUWdQU0JiWFRzS0lDQWdJQ0FnSUNBZ0lDQWdZWEp5TG0xaGNDaDJZV3dnUFQ0Z2V3b2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0V2ZFc1a1pXWnBibVZrTHk1MFpYTjBLSFpoYkM1bWJHRm5LU2tnZXdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnNZWGxHY205dExuQjFjMmdvZG1Gc0xtWnNZV2NwT3dvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnNZWGxNYVhOMExuQjFjMmdvZG1Gc0xuVnliQ2s3Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5Q2lBZ0lDQWdJQ0FnSUNBZ0lIMHBDaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQjJiMlJmY0d4aGVWOW1jbTl0SUQwZ2NHeGhlVVp5YjIwdWFtOXBiaWduSkNRa0p5azdDaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQjJiMlJmY0d4aGVWOTFjbXdnUFNCd2JHRjVUR2x6ZEM1cWIybHVLQ2NrSkNRbktUc0tJQ0FnSUNBZ0lDQWdJQ0FnVms5RVd5ZDJiMlJmY0d4aGVWOW1jbTl0SjEwZ1BTQjJiMlJmY0d4aGVWOW1jbTl0T3dvZ0lDQWdJQ0FnSUNBZ0lDQldUMFJiSjNadlpGOXdiR0Y1WDNWeWJDZGRJRDBnZG05a1gzQnNZWGxmZFhKc093b2dJQ0FnSUNBZ0lDQWdJQ0F2THlCc2IyY29WazlFS1RzS0lDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdDaUFnSUNBZ0lDQWdJQ0FnSUd4dlp5Z242STYzNVkrVzVMcU01N3FuNksrbTVvT0Y2YUcxNVkrUjU1U2Y2WlNaNksrdk9pY2dLeUJsTG0xbGMzTmhaMlVwQ2lBZ0lDQWdJQ0FnZlE9PSIpKSknLAogICAgLy8g5pCc57SiOicjc2VhcmNoLXJlc3VsdCYmLm1lZGlhO2g1JiZhJiZUZXh0O2EmJmltZyYmZGF0YS1zcmM7LmxhYmVsJiZUZXh0O2EmJmhyZWYnLC8v56ys5LiJ5Liq5piv5o+P6L+w77yM5LiA6Iis5pi+56S65pu05paw5oiW6ICF5a6M57uTCgnmkJzntKI6Jy5jb2wtbWQtOCYmLm1lZGlhO2g1JiZhJiZUZXh0O2EmJmltZyYmZGF0YS1zcmM7LmxhYmVsJiZUZXh0O2EmJmhyZWYnLC8v56ys5LiJ5Liq5piv5o+P6L+w77yM5LiA6Iis5pi+56S65pu05paw5oiW6ICF5a6M57uTCiAgICBsYXp5OmAKICAgIGlmKC9cXC5tM3U4JC8udGVzdChpbnB1dCkpewogICAgICAgIGlucHV0ID0gewogICAgICAgICAgICBwYXJzZTowLAogICAgICAgICAgICB1cmw6Z2V0UHJveHlVcmwoKSsnJnVybD0nK2lucHV0LAogICAgICAgICAgICBqeDowCiAgICAgICAgfQogICAgfQogICAgYCwKICAgIHByb3h5X3J1bGU6IGBqczoKICAgIGxldCB1cmwgPSBpbnB1dC51cmw7CiAgICBsZXQgbTN1OCA9IGZpeEFkTTN1OEFpKHVybCk7CiAgICBpbnB1dCA9IFsyMDAsJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJyxtM3U4XQogIGAKfQ== \ No newline at end of file diff --git a/lib/爱迪影视.js b/lib/爱迪影视.js new file mode 100644 index 0000000..66cf2b3 --- /dev/null +++ b/lib/爱迪影视.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/片多多[优].js b/lib/片多多[优].js new file mode 100644 index 0000000..36d6838 --- /dev/null +++ b/lib/片多多[优].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICfniYflpJrlpJpb5LyYXScsCiAgaG9zdDogJ2h0dHBzOi8vd3d3LmhlcmJhbC1jaGluYS5jb20vJywKICB1cmw6ICcvbW8temVhNHMvZnljbGFzcy8xLzAvMC8wLzAvZnlwYWdlJywKICBzZWFyY2hVcmw6ICcvc2UtemVhNHMvKiotMScsCiAgc2VhcmNoYWJsZTogMiwKICBxdWlja1NlYXJjaDogMCwKICBmaWx0ZXJhYmxlOiAwLAogIGhlYWRlcnM6IHsKICAgICdVc2VyLUFnZW50JzogJ1VDX1VBJywKICB9LAogIGNsYXNzX3BhcnNlOiAnLnN0dWktaGVhZGVyX19tZW51IGxpOmd0KDApOmx0KDYpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS8nLAogIHBsYXlfcGFyc2U6IHRydWUsCiAgbGF6eTogImpzOlxuICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xuICBsZXQgaGNvbmYgPSBodG1sLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV07XG4gIGxldCBqc29uID0gSlNPTjUucGFyc2UoaGNvbmYpO1xuICBsZXQgdXJsID0ganNvbi51cmw7XG4gIGlmIChqc29uLmVuY3J5cHQgPT0gJzEnKSB7XG4gICAgdXJsID0gdW5lc2NhcGUodXJsKTtcbiAgfSBlbHNlIGlmIChqc29uLmVuY3J5cHQgPT0gJzInKSB7XG4gICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpO1xuICB9XG4gIGlmICgvXFwuKG0zdTh8bXA0fG00YXxtcDMpLy50ZXN0KHVybCkpIHtcbiAgICBpbnB1dCA9IHtcbiAgICAgIHBhcnNlOiAwLFxuICAgICAgang6IDAsXG4gICAgICB1cmw6IHVybCxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGlucHV0ID0gdXJsICYmIHVybC5zdGFydHNXaXRoKCdodHRwJykgJiYgdGVsbElzSngodXJsKSA/IHtwYXJzZTowLGp4OjEsdXJsOnVybH06aW5wdXQ7XG4gIH0iLAogIGxpbWl0OiA2LAogIGRvdWJsZTogdHJ1ZSwKICDmjqjojZA6ICd1bC5zdHVpLXZvZGxpc3QuY2xlYXJmaXg7bGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy50ZXh0LXRvcC1sZWZ0JiZUZXh0O2EmJmhyZWYnLAogIOS4gOe6pzogJy5zdHVpLXZvZGxpc3QgbGk7YSYmdGl0bGU7YSYmZGF0YS1vcmlnaW5hbDsudGV4dC10b3AtbGVmdCYmVGV4dDthJiZocmVmJywKICDkuoznuqc6IHsKICAgIHRpdGxlOiAnLnN0dWktY29udGVudF9fZGV0YWlsIC50aXRsZSYmVGV4dDsuc3R1aS1jb250ZW50X19kZXRhaWwmJnA6ZXEoLTIpJiZhJiZUZXh0JywKICAgIHRpdGxlMTogJy5zdHVpLWNvbnRlbnRfX2RldGFpbCAudGl0bGUmJlRleHQ7LnN0dWktY29udGVudF9fZGV0YWlsJiZwJiZUZXh0JywKICAgIGltZzogJy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcsCiAgICBkZXNjOiAnLnN0dWktY29udGVudF9fZGV0YWlsIHAmJlRleHQ7LnN0dWktY29udGVudF9fZGV0YWlsJiZwOmVxKC0yKSYmYTplcSgyKSYmVGV4dDsuc3R1aS1jb250ZW50X19kZXRhaWwmJnA6ZXEoLTIpJiZhOmVxKDEpJiZUZXh0Oy5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDIpJiZUZXh0Oy5zdHVpLWNvbnRlbnRfX2RldGFpbCBwOmVxKDEpJiZUZXh0JywKICAgIGRlc2MxOiAnLnN0dWktY29udGVudF9fZGV0YWlsIHA6ZXEoNCkmJlRleHQ7Ozsuc3R1aS1jb250ZW50X19kZXRhaWwgcDplcSgxKSYmVGV4dCcsCiAgICBjb250ZW50OiAnLnRleHQtbXV0ZWQmJnAmJlRleHQnLAogICAgdGFiczogJy50YWImJmxpJywKICAgIHRhYnMxOiAnLnN0dWktcGFubmVsX2JkIGgxJywKICAgIGxpc3RzOiAnZGl2LnYxLWRpdjplcSgjaWQpIGEnLAogIH0sCiAg5pCc57SiOiAndWwuc3R1aS12b2RsaXN0X19tZWRpYSx1bC5zdHVpLXZvZGxpc3QsI3NlYXJjaExpc3QgbGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy50ZXh0LXRvcC1sZWZ0JiZUZXh0O2EmJmhyZWY7LmRldGFpbCYmVGV4dCcsCn0= \ No newline at end of file diff --git a/lib/牌牌影院.js b/lib/牌牌影院.js new file mode 100644 index 0000000..5f004db --- /dev/null +++ b/lib/牌牌影院.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/5VVTW/bNhg+J79CSAZ9BJVUO10x2POGArukh/WQGj2shUFJlMWEohiSaqyuvg7I0BY97DJgw9BeEmDYYcB2yTrszyx29i/2kpJTfxYoYVjm+/G8z0s+r/UUCUuUFFs969ttC9bk4s3k5386ljP95bfr8+/azi1jVkRRrK1nL+Bz9ffv//34tnFlhVQdaydTistOGHJE4FNVQVzkO3VETJGUA4ZyQNiZ/vAnpNvwAPirs3N7+te767NL++r7i8m7X20oC8aFxFJQyGvZbXvfvmN/2vgkRiLO+trnhE+LpN6He3v+zUorjoYYfgSZyqkzn4ci3U67Np2UJD4+NPaOdbvpCqMEC9lpjkUvpy+x8O8NMVMOFD04fDDo32tQx/WjrOkQluBRwDMeIk40uV1VcdxLK9NQWqWEKixsza5Xk2xgEqwQoe+bqvdhWpFkvgdOUTXgSEjoQYkS11ZKcgI3cbfeTV5dXL98DThRkVS2HfAyoiT2KZHKj4pRF9m2udRuQNEzCEiQQn4hyJAwRLsL4VxEtv0Qj5ROygROGxr/Xr6YXp7PH9FMJoGkJME+YWnhG1uTP2fv4BN33/N9qUTBhrW/wdWL5EONUx+Az0m8xHAuNMEy1rGpQLEiBVut5QucI3Esdc2W92F/21vPtb3Eddnf2txLXDAFogGOuxkmw0wNzFWtxCkUSd0IYioraDGsgtPiNEhBiAesz8FMcqRwApcpTwkHLZ4KxOFp22gRZaAA2FxDHVcz9Qkw5Iit1NWXvFj4Ria6s12SeBCzqPTJ65+mf7w1NczgGE0FKivzyFcjNTujj9fWDCSi5cwFlbe2NFLH+uRIBqo4VIKwoet6Vu8LUB84sbL0fMDf2P3DB18HZjZcgU9KLJVLGC+VF8DhxZkbCjM+WAyCvS97Lnx5n4feN60nXrcBgiEGHA0XwE9tJanlmj1msai4sno9y2k5nqm9VceXDGSIOHZh64F5bGEqsbU2tb0hNUIS373zFY6LpMYxQNsaI3wc5PvlZ2GgdEfGNzd35haBup51AJw1rsO6K0GUQD2I0sGB5JQo13nMnDWRumLfUGQlpYv+tBCWO4OzirSGXSZVy4vp94t+BHBxubtUyYw7tGgCMEvkI6Iy1zH9Ot46RL3ec4MujwrCdLe3NMYa+GYKZUFxAPp2m+QNkZHA6HjVNd7evDMSu3mJzq+j0c07ZX6ZN8Wsh+fP9X41qPmLv71YuGbW6MvI6MPVFab0QN4fGTlsYPJR5bUmt8YANf4fizqYsD8IAAA= \ No newline at end of file diff --git a/lib/玩偶哥哥[盘].js b/lib/玩偶哥哥[盘].js new file mode 100644 index 0000000..5fac2c1 --- /dev/null +++ b/lib/玩偶哥哥[盘].js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teG9uZTUu5LqM57qnLHsKICAgIC8vdGFiczogJy5tb2R1bGUtdGFiLWl0ZW0nLAogICAgbGlzdHM6ICcubW9kdWxlLXJvdy1vbmU6ZXEoI2lkKSYmYS5tb2R1bGUtcm93LXRleHQnLAogICAgbGlzdF90ZXh0OidoNCYmVGV4dCcsCiAgICBsaXN0X3VybDonYSYmZGF0YS1jbGlwYm9hcmQtdGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAn546p5YG25ZOl5ZOlW+ebmF0nLAogICAg5qih5p2/OiAnbXhvbmU1JywKICAgIGhvc3Q6ICdodHRwczovL3d3dy53b2dnLm5ldCcsCiAgICAvL3VybDogJy9pbmRleC5waHAvdm9kL3Nob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgdXJsOiAnL2luZGV4LnBocC92b2RzaG93L2Z5Y2xhc3MtZnlmaWx0ZXIuaHRtbCcsCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5hcmVhfX0te3tmbC5ieSBvciAidGltZSJ9fS17e2ZsLmNsYXNzfX0te3tmbC5sYW5nfX0te3tmbC5sZXR0ZXJ9fS0tLWZ5cGFnZS0tLXt7ZmwueWVhcn19JywKICAgIHNlYXJjaFVybDogJy9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUErMmEyVkliUnhTRzMwWFhUbWtHakxjNzcvdStPK1VMMlZFbHJqaE9sU0dwb2x4VXNVbVdzSTJBd3NnRUFTWm1Ed0t4aElDSTRHWFVNOUpiZUtSdW5UbnpEMldOQTBrcVRsL3ErMytkN2o3ZG96bEhNeTlDWnVqWTF5OUMzMGRiUThkQ2p5TXQwZlBmaEE2RW5rVitpRHFmN2VVdE1mYksrZnh6NU9sUDBhcnhtWU5GYkxiY05WdkJ6Z2N6MVBhdzdRQkZlQnBwYm5ZRGlPU00xUlg3ZElCUTVkdFZPcFJ4L0lxR3E1SENpdFVzZG1KWnhYTXRpdFVzVmtlZjFUN2t0U2hHQS9YTUZnc1pHRWd5R21pbVgyeHV3VUNTVVJSYUc0c2lHYzBsOGE2WVQ4SmNKS3RaU3RscDhYcmVhMUdNNXRLelpCZkFvaGhia1QyNDVWdFJoWkZsNnFWdlJZclJkTFBUeGUzM01GM0pLRXA4b0R3OEIxRWtveWhqODg0YUlZcGtuN0ZIVnVlQ1BkUVBGc25JMHRWamRmNENGc2tvZFZzcEVkdUExRWxXczVSSEI2eDNVMTZMWWpUUTBNdFNNZzhEU1VaNTJWNjBCMzhYaFdWSURXRXlwaVpMSC9EVVNFYVczcmhJcllCRk1qbzFPMzNPOXNLcGtjemRxWXcxMm84N1ZXVms2ZDZ4ZjRPbEswWUpMUFRiVzVuZGx1WlIrRTlBNUhrMHduNEJNam54T2gvMEYyQnlwandjcjQxVENSUldpSFpyZXRqYVdQSTRGSElUbkxNMnQ3MHhKS0kxYmZlS2tZTEhvUkJ0K09wYmRDaEVHL0JxR1IwS1VZejBsSlZaOE1hUWlOWXlQb2N4RkhKUDFSL29VTWlkYWM0LzA1d254cHVjeUU5N1kwaEVNYnBUVHBaRllzNGJoaWl0ZVdySFRtWHQ1TEIzMlVUZEg2UDMxcXNkNTh2ZVFZbVNMN1plM0JyeW1pVGl4K2xwNU5tMzduRXFMV1ZMcysxQmo5Tkl3ZkhYQnFnRUNpdkV0aEVkQ3RGaFdabEVoMEswamVtQ2VKTkdrMHZaZHZ0TUVyRWpndzZGMk1IME9TUmlSOGEzWm9sWTJzVmlsOWNoRVU5N2F6VHkzRTI3bFY0dnA5Y0NwcjNCYURoWUMxOEpFNjRDcGphaTJzalZCbFFidUdxaWFuTFZRTlZncW5rVVZBY3c5UWlxUjdoNkdOWERYRDJFNmlHdU5xSGF4RlhNbGNselpXS3VUSjRyRTNObDhseVptQ3VUNThyRVhKazhWd2JteXVDNU1qQlhCcytWZ2JreWVLNE16SlhCYzJWZ3JneWVLd056WmZCY0daZ3JnK2ZLd0Z3WlBGY0c1c3JndVRJd1Z3N3cvRVpGVzFxaTdISVIyYlMxOUNiZzVYS2NMc1ZxbFBCeFVrNkFjb0tVazZDY0pPVVVLS2RJT1EzS2FWTE9nSEtHbExPZ25DWGxIQ2puU0RrUHlubFNMb0J5Z1pTTG9Gd2s1UklvbDBpNURNcGxVcTZBY29XVXE2QmNKZVVhS05kSXVRN0tkVkp1Z0hLRGxKdWczQ1RsRmlpM1NMa055bTFTN29CeWg1UzdvTndsNVI0bzkwaTVEOHA5VWg2QThvQVU0NnVqb0ZVSXZ3UWV0Yks3UmUrQXlLZDh4OSs5aVZUaVBHb050enh4N0xVaGl2bThsUnRrNm5kUFdwcmRHL1ZTdDBqRW1kcjgrTWZuMGNvTUhoNElOZXl4aFczWXR4YldIcy82V2xqRldGRlN6TS80RzkwcWhqclg1M0tZdGIwS3ZZdm9XQmRkcWQwNkdLVjhSb010RnRkRlBnc1d5VDZ2SGEzWFlBZG9Sd00wMkFGYXBRQXRZSEZ6d3RjcUtlYjJtakZyZUFrMlF6S2F5OXU0cis5VmpIVlQvdU1oMmU1RnNZcmlyNHIzMG1URlk0N2ZXM1pMRkx3eDJZODJySDZERktSUnE5ZitCR2pVaG5KT2J5SkdKN3hoaU9wMjVTKzNLN3JWMEsyR2JqVjBxNkZiRGQxcWZCbXRSdU1lVzQzR2ZXczF5dTFKZTZZZHFuN0plTkhhUGU0dldoMUdpMTNjS2VVU1hvdGlGR1VnYS9YQVV3TEYzRW9nWm0xQWphMllXMDZzRmpmN1lMcVNzWEt2L0FHbXF4aFo4dk5pY1F3c2t0RmNSbGI4RDJza295aUQ0OVlhUHR5VGpLSnNiRmlKVkRFLzRIdk00bEVvald1L09qMEZwRkV5aXJqY1dlcDREYkVrKzhjSyswcExtZkk2RkdJMW5WUGxZVkZlUWVSWW1IRTJ4ZXVRU0pmQnVneldaYkF1ZzNVWnJNdGdYUVovMFdYd3dUMld3VTM3VmdZSHFIRUR2TXRsZDJWTEUxQk1LMFlEOWM3YWZYRVlTREt5OUkzWkMvak9rbVJ1alZiMy9hbFMzMmlwRjE0YVU0d0dlajhoUnVCZmVzVm9vUHAvd1Z1WnZQOUZMY2xvTHZYZk13cndqcHZJT2NsZWc3bEl4aTFUcTM3TGxQdXd3NTdjTHY0SnIzc3BSbEY2eDBWaUJLSkk1aDc2RlpHRlBrUXhHbWlreHhxR0RrSXhON3ZMWWllTjJhMHlWdlQ5M1gva3kwZEdubnJmK3hTcC9sL3NuNmptZDEySC90dGIxL3U2M3RmMXZxNzNkYjNQRkYzdmY5bjFmdE8rMXZ2Nll0WVg4Ly84WXRiRm55NytkUEVYc1BqN1Z4LzRIdG5yRTE5Mzc2eGt1NVZKVnA1WEZ0N2F5WmZNb0crTyt1YW9iNDc2NXFodmp2cm0rSis1T2JaOUJCSGRNVDA5UUFBQScsCiAgICBjbGFzc19wYXJzZTogJy5ncmlkLWJveCYmdWwmJmxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS5odG1sJywKICAgIGNhdGVfZXhjbHVkZTogJ+WFqOmDqOW9seeJhycsCiAgICDkuIDnuqc6ICcubW9kdWxlLWl0ZW1zIC5tb2R1bGUtaXRlbTthJiZ0aXRsZTtpbWcmJmRhdGEtc3JjOy5tb2R1bGUtaXRlbS10ZXh0JiZUZXh0O2EmJmhyZWYnLAogICAgbGF6eTogYAogIGlmICgvKHBhbi5xdWFyay5jbnx3d3cuYWxpeXVuZHJpdmUuY29tfHd3dy5hbGlwYW4uY29tKS8udGVzdChpbnB1dCkpewpsZXQgdHlwZT0iYWxpIjsKaWYgKGlucHV0LmluY2x1ZGVzKCJwYW4ucXVhcmsuY24iKSl7CnR5cGU9InF1YXJrIjsKfSBlbHNlIGlmIChpbnB1dC5pbmNsdWRlcygid3d3LmFsaXl1bmRyaXZlLmNvbSIpIHx8IGlucHV0LmluY2x1ZGVzKCJ3d3cuYWxpcGFuLmNvbSIpKXsKdHlwZT0iYWxpIjsKfQpsZXQgY29uZmlybT0iIjsKLy9sZXQgY29uZmlybT0iJmNvbmZpcm09MCI7CmlucHV0ID0gZ2V0UHJveHlVcmwoKS5yZXBsYWNlKCdqcycsdHlwZSkrJyZ0eXBlPXB1c2gnK2NvbmZpcm0rJyZ1cmw9JytlbmNvZGVVUklDb21wb25lbnQoaW5wdXQpOwovL2lucHV0PXtwYXJzZTowLHVybDppbnB1dH0KfQogIAogIGAsCn0= \ No newline at end of file diff --git a/lib/电影先生.js b/lib/电影先生.js new file mode 100644 index 0000000..92a6c9b --- /dev/null +++ b/lib/电影先生.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV2y7g637nkMoiC8thhxc2MTHM8V5zFVJ3Kfp9HMHk+XBCLXss69MvvD7DUOUNMHw9czZtTkwRe+nf24nepINguO5frz+yzSaAXKVHlLG1Q6gd0cZUhdjFhjoy2hF4NXf0WuRZP9ZVw8GFB0o2npdBhQYFIWmSPl3iMtCENDUghIbTJg6DifKzjV1EcML+kzjj/2X8KXtMqlf0+9MzM0+mcIwuU1UTPsCmqUzNPthy+fEvY1mH2ae8yGwhsjCjNNUbJsXNqcq8V+qoaGGk839X7xLxIgX4mgzE2snvMG3drLkBEMzDiY3nv0Ep8o8ZO33o+skc3nNEvWvX7Knr8VloCMM4FpzErrZnhLbBBM+6fnZt2ID1aJDSvKtm5TxIH9B/ZPFcJw/kIXNSNMRzvaoXC8= \ No newline at end of file diff --git a/lib/电影兔.js b/lib/电影兔.js new file mode 100644 index 0000000..9524018 --- /dev/null +++ b/lib/电影兔.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICfnlLXlvbHlhZQnLAogIGhvc3Q6ICdodHRwczovL3d3dy5kaWFueWluZ3R1LmNvbScsCiAgY2xhc3NfbmFtZTogJ+eUteW9sSbnlLXop4bliacm57u86Im6JuWKqOa8qyblvq7nlLXlvbEm55+t5YmnJywKICBjbGFzc191cmw6ICdkaWFueWluZyZkaWFuc2hpanUmem9uZ3lpJmRvbmdtYW4md2VpZGlhbnlpbmcmZGlhbnNoaWp1L2R1YW5qdScsCiAgc2VhcmNoVXJsOiAnL3NlYXJjaC8qKi9wYWdlL2Z5cGFnZScsCiAgc2VhcmNoYWJsZTogMiwKICBxdWlja1NlYXJjaDogMCwKICBoZWFkZXJzOiB7CiAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogIH0sCiAgdXJsOiAnL2Z5Y2xhc3MvcGFnZS9meXBhZ2UnLAogIGZpbHRlcmFibGU6IDAsCiAgZmlsdGVyX3VybDogJycsCiAgZmlsdGVyOiB7fSwKICBmaWx0ZXJfZGVmOiB7fSwKICBkZXRhaWxVcmw6ICcnLAogIHBsYXlfcGFyc2U6IHRydWUsCiAgbGF6eTogJycsCiAgbGltaXQ6IDYsCiAg5o6o6I2QOiAnKicsCiAg5LiA57qnOiAnLm1vdmllLWl0ZW0gbGk7YSYmdGl0bGU7LmxhenktbG9hZC1pbWcmJl9zcmM7LnJzLXN0YXRlJiZUZXh0O2EmJmhyZWYnLAogIOS6jOe6pzogewogICAgdGl0bGU6ICdoMSYmVGV4dCcsCiAgICBpbWc6ICcubGF6eS1sb2FkLWltZyYmX3NyYycsCiAgICAvL+S4u+imgeS/oeaBrzvlubTku6M75Zyw5Yy6O+a8lOWRmDvlr7zmvJQsCiAgICBkZXNjOiAnLm1vdmllLXR4dCYmcDplcSgyKSYmVGV4dDsubW92aWUtdHh0JiZwOmVxKDQpJiZUZXh0Oy5tb3ZpZS10eHQmJnA6ZXEoNSkmJlRleHQ7Lm1vdmllLXR4dCYmcDplcSgxKSYmVGV4dDsubW92aWUtdHh0JiZwOmVxKDApJiZUZXh0JywKICAgIGNvbnRlbnQ6ICcuY29udGVudC0tcCYmVGV4dCcsCiAgICB0YWJzOiAnLnRhYi1saXN0IGxpJywKICAgIGxpc3RzOiAnLmVwaXNvZGVzLWxpc3Q6ZXEoI2lkKSYmYScKICB9LAogIOaQnOe0ojogJy5jb2xsZWN0LWxpc3QubXQxNSBsaTtoNSYmVGV4dDsubGF6eS1sb2FkLWltZyYmX3NyYzsucnN0eXBlJiZUZXh0Oyo7LmxpbmUtdHdvJiZUZXh0Jwp9 \ No newline at end of file diff --git a/lib/电影天堂.js b/lib/电影天堂.js new file mode 100644 index 0000000..81f3216 --- /dev/null +++ b/lib/电影天堂.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/5WTzU4bMRDH730KS5UMAXYjCqdEvAWcAK0mu05s4V0be5Y0RVy4IFU99NAjSLSqxMcNCS5IiJchCY+BnTUoJHz6sF6Nf/+/Z8b2DhhiSsnICtn9QtwYnP4dHN02yMz9wXn/5+nMwiiKAiVzweGfq/7NRf//Wf94f70iNgPClUVHcETdqNe73W7MVdFpgeJbcaryQKUSrE00GOvtYouliDiDjJkkyVlREimaQOkq+45+5oa1m7MbG9l8LeaYy+BSGunUdaPKers3sozCaPc0dJj7GcctA5PytUpknWhuLoreVNxd/xpenzRCT8Y7UKWcqgJZgUmSMQQhSTxaDnm/jOgoshoKSkN5YSc/RN6ZdkZe5i0SS/jRkwoySjNAiJQRHVGAHFNnzKavJqYbbHt2ueb2RuOO4yMZTn9dzt7mW+2z8iBcfFNIqa7cHzXvokvP0LFWBNx341EwQSC07FOznEXBZJL4C0j40gS2+MTtqEwKiy+BPm6nu68l9PySz/aryGqOC6K9ahr8Phxe/nPCUj7bg9LqAYzuU/O102/GWqQRutImnspk2XsPn8HGPuADAAA= \ No newline at end of file diff --git a/lib/电影港.json b/lib/电影港.json new file mode 100644 index 0000000..85fda74 --- /dev/null +++ b/lib/电影港.json @@ -0,0 +1,131 @@ +//写法思路来海阔视界,xpath筛选。本人是海阔用户,所以搬了海阔的jsoup写法过来。2022年9月17日 +//jsoup规则写法请查阅海阔视界或者海阔影视相关教程。不支持js写法 +//本文档为完整模板,请不要去无中生有添加多余的键值参数。 +{ + //规则名 + "title": "电影港", + //作者 + "author": "香雅情", + //请求头UA,键名$键值,每一组用#分开,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA + //多个请求头参数写法示例,"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok",每一组用#分开。 + //习惯查看手机源码写建议用手机版UA,习惯查看PC版源码写建议用电脑版UA + "Headers":"PC_UA", + //网页编码格式默认UTF-8编码,UTF-8,GBK,GB2312 + "Coding_format":"gb2312", + //图片是否需要代理 + "PicNeedProxy":"0", + //是否开启获取首页数据,0关闭,1开启 + "homeContent":"0", + //分类链接起始页码,禁止负数和含小数点。 + "firstpage": "1", + //分类链接,{cateId}是分类,{catePg}是页码,第一页没有页码的可以这样写 第二页链接[firstPage=第一页的链接] + "class_url": "https://www.dygang.tv/{cateId}/index_{catePg}.htm[firstPage=https://www.dygang.cc/{cateId}/index.htm]", + //分类名,分类1&分类2&分类3 + "class_name": "最新电影&经典高清&国配电影&经典港片&国剧&日韩剧&美剧&综艺&动漫&纪录片&高清原盘&4K高清区&3D电影&电影专题", + //分类名替换词,替换词1&替换词2&替换词3,替换词包含英文&的用两个中文&&代替,示例:&&id=0&&&id=1 + "class_value": "ys&bd&gy&gp&dsj&dsj1&yx&zy&dmq&jilupian&1080p&4K&3d&dyzt", + //筛选数据,json格式,参考xpath的筛选写法 + "filterdata":{}, + + //分类页面截取数据模式,0为json,其它数字为普通网页。 + "cat_mode": "1", + //分类列表数组定位,最多支持3层,能力有限,不是所有页面都能支持 + "cat_arr_rule": "body&&table[width=388]", + //分类片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法 + "cat_is_jsoup":"1", + //分类片单标题 + "cat_title": "img&&alt", + //分类片单链接 + "cat_url": "a&&href", + //分类片单图片,支持自定义图片链接 + "cat_pic": "img&&src", + //分类片单副标题 + "cat_subtitle":"[align=center]&&Text", + //分类片单链接补前缀 + "cat_prefix": "https://www.dygang.tv", + //分类片单链接补后缀 + "cat_suffix": "", + + //搜索请求头参数,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA + //多个请求头参数写法示例,键名$键值,每一组用#分开。"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok"。 + "SHeaders":"User-Agent$PC_UA#Content-Type$charset=gb2312", + //搜索链接,搜索关键字用{wd}表示,post请求的最后面加;post + //POST链接示例 http://www.lezhutv.com/index.php?m=vod-search;post + "search_url": "https://www.dygang.tv/e/search/index123.php;post", + //POST搜索body,填写搜索关键字的键值,一般常见的是searchword和wd,不是POST搜索的可留空或删除。 + "sea_PtBody":"keyboard={wd}&submit=搜+索&show=title,smalltext&tempid=1&tbname=article", + + //搜索截取模式,0为json搜索,只支持列表在list数组里的,其它数字为网页截取。 + "search_mode": "1", + //搜索列表数组定位,不填默认内置list,最多支持3层,能力有限,不是所有页面都能支持。 + "sea_arr_rule": "body&&table[width=388]", + //搜索片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法 + "sea_is_jsoup":"1", + //搜索片单图片,支持自定义图片链接 + "sea_pic": "img&&src", + //搜索片单标题 + "sea_title": "img&&alt", + //搜索片单链接 + "sea_url": "a&&href", + //搜索片单副标题 + "sea_subtitle":"", + //搜索片单链接补前缀 + "search_prefix": "https://www.dygang.tv", + //搜索片单链接补后缀,这个一般json搜索的需要 + "search_suffix": "", + + //片单链接是否直接播放,0否,1分类片单链接直接播放,2详情选集链接直接播放。 + //设置成直接播放后,后面3个参数请注意该留空的请务必留空。 + "force_play": "0", + //直接播放链接补前缀 + "play_prefix": "", + //直接播放链接补后缀,设置为#isVideo=true#可强制识别为视频链接 + "play_suffix": "", + //直接播放链接设置请求头,只对直链视频有效,每一组用#分开 + "play_header": "", + + //项目信息jsoup与xb截取写法切换,1为jsoup写法(默认),0为xb写法 + "proj_is_jsoup":"0", + //类型数据,截取前缀&&截取后缀 + "proj_cate": "", + //年代数据,截取前缀&&截取后缀 + "proj_year": "", + //地区数据,截取前缀&&截取后缀 + "proj_area": "", + //演员数据,截取前缀&&截取后缀 + "proj_actor": "演  员&&var player_aaaa={"flag":"play","encrypt这种源码的链接解析 + //如果网页源码里没有这种请设置为0 + "Anal_MacPlayer":"0", + //是否开启手动嗅探,只对网页嗅探有效,0否,1是 + "ManualSniffer":"0", + //手动嗅探视频链接关键字,每个用#隔开 + "VideoFormat":".mp4#.m3u8#.flv", + //手动嗅探视频链接过滤关键词,每个用#隔开 + "VideoFilter":".html#=http" +} \ No newline at end of file diff --git a/lib/畅梦影视[优].js b/lib/畅梦影视[优].js new file mode 100644 index 0000000..1512dcd --- /dev/null +++ b/lib/畅梦影视[优].js @@ -0,0 +1 @@ +Ly8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKLy8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKLy8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKZ2xvYmFsVGhpcy5nZXRIZWFkZXJzID0gZnVuY3Rpb24gKGlucHV0KSB7CiAgICBsZXQgdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKCk7CiAgICBsZXQgaGVhZGVycyA9IHsKICAgICAgICAndmVyc2lvbl9uYW1lJzogJzEuMC42JywKICAgICAgICAndmVyc2lvbl9jb2RlJzogJzYnLAogICAgICAgICdwYWNrYWdlX25hbWUnOiAnY29tLmFwcC5uYW5ndWF0dicsCiAgICAgICAgJ3NpZ24nOiBtZDUoJ2M0MzFlYTU0MmNlZTk2NzkjdUJGc3pkRU0wb0wwSlJuQCcgKyB0KS50b1VwcGVyQ2FzZSgpLAogICAgICAgICdpbWVpJzogJ2M0MzFlYTU0MmNlZTk2NzknLAogICAgICAgICd0aW1lTWlsbGlzJzogdCwKICAgICAgICAnVXNlci1BZ2VudCc6ICdva2h0dHAvNC42LjAnCiAgICB9OwogICAgcmV0dXJuIGhlYWRlcnMKfQoKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eVheaipuW9seinhlvkvJhdJywKICAgIGhvc3Q6ICdodHRwOi8veXMuY2hhbmdtZW5neXVuLmNvbScsCiAgICBob21lVXJsOiAnL2FwaS5waHAvcHJvdmlkZS92b2RfcmFuaz9hcHA9eWx5cyZzb3J0X3R5cGU9bW9udGgmaW1laT1jNDMxZWE1NDJjZWU5Njc5JmlkPTImcGFnZT0xJywKICAgIHVybDogJy9hcGkucGhwL3Byb3ZpZGUvdm9kX2xpc3Q/YXBwPXlseXMmaWQ9ZnljbGFzc2Z5ZmlsdGVyJnBhZ2U9ZnlwYWdlJmltZWk9YzQzMWVhNTQyY2VlOTY3OScsCiAgICBkZXRhaWxVcmw6ICcvYXBpLnBocC9wcm92aWRlL3ZvZF9kZXRhaWw/YXBwPXlseXMmaW1laT1jNDMxZWE1NDJjZWU5Njc5JmlkPWZ5aWQnLAogICAgc2VhcmNoVXJsOiAnL2FwaS5waHAvcHJvdmlkZS9zZWFyY2hfcmVzdWx0X21vcmU/YXBwPXlseXMmdmlkZW9fbmFtZT0qKiZwYWdlU2l6ZT0yMCZ0aWQ9MCZpbWVpPWM0MzFlYTU0MmNlZTk2NzkmcGFnZT1meXBhZ2UnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcl91cmw6ICcmYXJlYT17e2ZsLmFyZWF9fSZ5ZWFyPXt7ZmwueWVhcn19JnR5cGU9e3tmbC5jbGFzc319JnRvdGFsPXt7ZmwudG90YWwgb3IgIueKtuaAgSJ9fSZvcmRlcj17e2ZsLmJ5IG9yICLmlrDkuIrnur8ifX0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyWFVYUFNRQkRIdjB1ZWVRQnFLZlNyT0gySURrOWluV21yTTB5SG1WYWtGdHFDMWhtMEZxc2RXNEpqS1VGckxjRzBYeVozZ1c5aHd1VjI5M0FHaWtaZnpCdS8vLzV6MlZ4Mjk4SzZsdEFXNzY1ckQ3SjViVkc3bjlOWFY3V1l0cXcvekhyb2R2dnNhTWZqSjNydWNYYmtXL1prVm1vTml5MWZSazhoRnNRcUxjZHV1T1huUVJnWkhQVUdLeHZFQVN3ZDduYVhGMHZvUUFhSDhaTDErc1FCTEIxODh3WGZxS01ER2ZJb0c4cGRrR0dON1RlT1ZTWnJBSU9qV09GUDN4SUhjR0hKOTRoZDFWZXlPbTRxYTVoczE1cThxWUVIVXQyckRqcHRHUk1nWThQbUFiL3E0S0xqRW16WmRaVWQybksvQk1Cam5Cbjg0b3Q4QmdHdy92dFBlRjBBY04zclU5NDRrOWNKZ0p4ckp1OWRLM2twRXF6eDFjVDFBNWgxRGJabk1xc0orek1DaUpVdTJYbFJ4Z1RRbDVQUDZpdms1ZlF1bkw0OTVlVUlqN3hCTXA2Y0N5S2puMFJQb3A2a2VnTDFCTlhqcU1lSm5zaUE3djBrZWhyMU5OVVhVRitnZWdyMUZOWG5VWjhIUFJFZlBlakhJQVlvNDNFMUhoK1BaOVI0Wmp5ZVZ1T0E5T1hjeStPcjRkVjladFYrZVRWdXNjMzMyN3paa0tVTkRCVndhZzg2ejlDQkREVllONTJyaW12ZHlESUU5cEpaaW1uSmNFZmtvZTFZaGpkdVpEN0FrSS9YdlRVVEhjamhqcFd0a3FmSW1JQlp4OHJVRm8xYUxXcTFHVnB0THR4V096R0dCMXN5R1FGcWt5a2RSZzgyNzZqRGc4MEhjbGg2eHljZWxqNzhzN1lNTmVub2hJemE5bFpOZWVjdm5ILzh4MmZsL1BOWnJWWjBJS3UxVGh6QWFxY1FCM0NvemVwY3RiMzhsVG1qU0xmNVZKNzRpUjAxYnRTNHY5ZTRjS3UxUjJ0NmpyUnM1Wkp2YkU1cFdlR1I5eG5jSEExc1dhRUJRQldlNzdyOVY3S0FCQVJqSXhYcTNCQTlUcjZLZ2RWbUlRNWdjSHo3ems3cXhBRWM2bFNZMU5GS2h1UHBUWmdTay80b0QzYTZHQXVBMUFpcmZHRHZqckZHQWlaenhPblhjWTc0RU0yUi8ybU8vT2wzZStFbnR6VkpORWNVQUFBPScsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgIlVzZXItQWdlbnQiOiAib2todHRwLzQuNi4wIgogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19uYW1lOiAn55S16KeG5YmnJueUteW9sSbliqjmvKsm57u86Im6Jua1t+WklueyvumAiScsIC8vIC9hcGkucGhwL3Byb3ZpZGUvaG9tZV9uYXYKICAgIGNsYXNzX3VybDogJzImMSY0JjMmNDYnLAogICAgbGltaXQ6IDIwLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6IGBqczoKICAgICAgICB0cnkgewogICAgICAgICAgICBmdW5jdGlvbiBnZXR2aWRlbyh1cmwpIHsKICAgICAgICAgICAgICAgIGxldCBqRGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHsKICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBnZXRIZWFkZXJzKHVybCkKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIGlmIChqRGF0YS5jb2RlID09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gakRhdGEuZGF0YS51cmwKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vNDMuMTU0LjEwNC4xNTI6MTIzNC9qaGFwaS9jcy5waHA/dXJsPScgKyB1cmwuc3BsaXQoJz0nKVsxXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgvLC8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgICAgIGxldCBtanVybCA9IGlucHV0LnNwbGl0KCcsJylbMV0KICAgICAgICAgICAgICAgIGxldCB2aWRlb1VybCA9IGdldHZpZGVvKG1qdXJsKTsKICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwsCiAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyLWFnZW50JzogJ0xhdmYvNTguMTIuMTAwJwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBsZXQgdmlkZW9VcmwgPSBnZXR2aWRlbyhpbnB1dCk7CiAgICAgICAgICAgICAgICBpZiAoL2poYXBpLy50ZXN0KHZpZGVvVXJsKSkgewogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gZ2V0dmlkZW8odmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB2aWRlb1VybCwKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXItYWdlbnQnOiAnTGF2Zi81OC4xMi4xMDAnCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBsb2coZS50b1N0cmluZygpKQogICAgICAgIH0KCWAsCiAgICDmjqjojZA6IGBqczoKICAgICAgICB2YXIgZCA9IFtdOwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwgewogICAgICAgICAgICBoZWFkZXJzOiBnZXRIZWFkZXJzKGlucHV0KQogICAgICAgIH0pOwogICAgICAgIGh0bWwgPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgIGh0bWwuZm9yRWFjaChmdW5jdGlvbihpdCkgewogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IGl0Lm5hbWUsCiAgICAgICAgICAgICAgICBpbWc6IGl0LmltZywKICAgICAgICAgICAgICAgIGRlc2M6IGl0LnJlbWFya3MsCiAgICAgICAgICAgICAgICB1cmw6IGl0LmlkCiAgICAgICAgICAgIH0pCiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgYCwKICAgIOS4gOe6pzogYGpzOgoJCXZhciBkID0gW107CgkJbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0LCB7CgkJCWhlYWRlcnM6IGdldEhlYWRlcnMoaW5wdXQpCgkJfSk7CgkJaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CgkJaHRtbC5saXN0LmZvckVhY2goZnVuY3Rpb24oaXQpIHsKCQkJZC5wdXNoKHsKCQkJCXRpdGxlOiBpdC5uYW1lLAoJCQkJaW1nOiBpdC5pbWcsCgkJCQlkZXNjOiBpdC5tc2csCgkJCQl1cmw6IGl0LmlkCgkJCX0pCgkJfSk7CgkJc2V0UmVzdWx0KGQpOwoJYCwKICAgIOS6jOe6pzogYGpzOgogICAgICAgIHZhciBkID0gW107CiAgICAgICAgVk9EID0gewogICAgICAgICAgICB2b2RfaWQ6IGlucHV0LnNwbGl0KCdpZD0nKVsxXQogICAgICAgIH07CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0LCB7CiAgICAgICAgICAgICAgICBoZWFkZXJzOiBnZXRIZWFkZXJzKGlucHV0KQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgIGxldCBub2RlID0gaHRtbC5kYXRhOwogICAgICAgICAgICBWT0QgPSB7CiAgICAgICAgICAgICAgICB2b2RfbmFtZTogbm9kZVsnbmFtZSddLAogICAgICAgICAgICAgICAgdm9kX3BpYzogbm9kZVsnaW1nJ10sCiAgICAgICAgICAgICAgICB0eXBlX25hbWU6IG5vZGVbJ3R5cGUnXSwKICAgICAgICAgICAgICAgIHZvZF95ZWFyOiBub2RlWyd5ZWFyJ10sCiAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogJ+abtOaWsOiHszogJyArIG5vZGVbJ21zZyddICsgJyAvIOivhOWIhjogJyArIG5vZGVbJ3Njb3JlJ10sCiAgICAgICAgICAgICAgICB2b2RfY29udGVudDogbm9kZVsnaW5mbyddLnN0cmlwKCkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgbGV0IGVwaXNvZGVzID0gbm9kZS5wbGF5ZXJfaW5mbzsKICAgICAgICAgICAgbGV0IHBsYXlNYXAgPSB7fTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBwbGF5X3VybCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHZhciBwbGF5X3VybCA9ICcnCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXBpc29kZXMuZm9yRWFjaChmdW5jdGlvbihlcCkgewogICAgICAgICAgICAgICAgbGV0IHBsYXl1cmxzID0gZXBbJ3ZpZGVvX2luZm8nXTsKICAgICAgICAgICAgICAgIHBsYXl1cmxzLmZvckVhY2goZnVuY3Rpb24ocGxheXVybCkgewogICAgICAgICAgICAgICAgICAgIGxldCBzb3VyY2UgPSBlcFsnc2hvdyddOwogICAgICAgICAgICAgICAgICAgIGlmICghcGxheU1hcC5oYXNPd25Qcm9wZXJ0eShzb3VyY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlNYXBbc291cmNlXSA9IFtdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHBsYXlNYXBbc291cmNlXS5hcHBlbmQocGxheXVybFsnbmFtZSddLnN0cmlwKCkgKyAnJCcgKyBwbGF5X3VybCArIHVybGVuY29kZShwbGF5dXJsWyd1cmwnXSkpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgbGV0IHBsYXlGcm9tID0gW107CiAgICAgICAgICAgIGxldCBwbGF5TGlzdCA9IFtdOwogICAgICAgICAgICBPYmplY3Qua2V5cyhwbGF5TWFwKQogICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICAgICAgICAgICAgcGxheUZyb20uYXBwZW5kKGtleSk7CiAgICAgICAgICAgICAgICAgICAgcGxheUxpc3QuYXBwZW5kKHBsYXlNYXBba2V5XS5qb2luKCcjJykpCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgbGV0IHZvZF9wbGF5X2Zyb20gPSBwbGF5RnJvbS5qb2luKCckJCQnKTsKICAgICAgICAgICAgbGV0IHZvZF9wbGF5X3VybCA9IHBsYXlMaXN0LmpvaW4oJyQkJCcpOwogICAgICAgICAgICBWT0RbJ3ZvZF9wbGF5X2Zyb20nXSA9IHZvZF9wbGF5X2Zyb207CiAgICAgICAgICAgIFZPRFsndm9kX3BsYXlfdXJsJ10gPSB2b2RfcGxheV91cmwKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGxvZygn6I635Y+W5LqM57qn6K+m5oOF6aG15Y+R55Sf6ZSZ6K+vOicgKyBlLm1lc3NhZ2UpCiAgICAgICAgfQoJYCwKICAgIOaQnOe0ojogYGpzOgogICAgICAgIHZhciBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0LCB7CiAgICAgICAgICAgIGhlYWRlcnM6IGdldEhlYWRlcnMoaW5wdXQpCiAgICAgICAgfSk7CiAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgaHRtbC5kYXRhLmZvckVhY2goZnVuY3Rpb24oaXQpIHsKICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgIHRpdGxlOiBpdC52aWRlb19uYW1lLAogICAgICAgICAgICAgICAgaW1nOiBpdC5pbWcsCiAgICAgICAgICAgICAgICBkZXNjOiBpdC5xaW5neGlkdSArICcvJyArIGl0LmNhdGVnb3J5LAogICAgICAgICAgICAgICAgdXJsOiBpdC5pZCwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0LmJsdXJiCiAgICAgICAgICAgIH0pCiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgYCwKfQ== \ No newline at end of file diff --git a/lib/白嫖者联盟.js b/lib/白嫖者联盟.js new file mode 100644 index 0000000..5d07d4a --- /dev/null +++ b/lib/白嫖者联盟.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eZveWrluiAheiBlOebnycsCiAgICDmqKHmnb86ICfpppblm74nLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LnF5emY4OC5jb20nLAogICAgdXJsOiAnL3F5dm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvcXl2b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLmh0bWwnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIGZpbHRlcmFibGU6IDAsCiAgICBjbGFzc19wYXJzZTogJy5teXVpLWhlYWRlcl9fbWVudSBsaTpndCgwKTpsdCg1KTthJiZUZXh0O2EmJmhyZWY7LyhcXGQrKS5odG1sJywKfQ== \ No newline at end of file diff --git a/lib/百忙无果[官].js b/lib/百忙无果[官].js new file mode 100644 index 0000000..f01c30d --- /dev/null +++ b/lib/百忙无果[官].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/直播转点播[合].js b/lib/直播转点播[合].js new file mode 100644 index 0000000..754cc45 --- /dev/null +++ b/lib/直播转点播[合].js @@ -0,0 +1 @@ +LyoqCiAqIOaUr+aMgeacrOWcsOWMheebtOaSremTvuaOpQogKiDkvKDlj4IgP3R5cGU9dXJsJnBhcmFtcz0uLi9qc29uL2xpdmUyY21zLmpzb24KIGxpdmUyY21zLmpzb24KIOaUr+aMgW0zdeexu+ebtOaSre+8jOaUr+aMgee6v+i3r+W9kuW5tuOAguaUr+aMgeetm+mAieWIh+aNouaYvuekuuaooeW8jwogWwogewogICAgIm5hbWUiOiAiR2l0SHViIiwKICAgICJ1cmwiOiAiaHR0cHM6Ly9naHByb3h5Lm5ldC9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc3NpbGkxMjYvdHYvbWFpbi9pdHZsaXN0LnR4dCIKICB9LAogewogICAgIm5hbWUiOiAiQ05UViIsCiAgICAidXJsIjogIi4vbGl2ZV9jbnR2LnR4dCIKICB9CiBdCiAqLwoKLyoqCiAqIG0zdeebtOaSreagvOW8j+i9rOS4gOiIrOebtOaSreagvOW8jwogKiBAcGFyYW0gbTN1CiAqIEByZXR1cm5zIHtzdHJpbmd9CiAqLwpmdW5jdGlvbiBjb252ZXJ0TTN1VG9Ob3JtYWwobTN1KSB7CiAgICB0cnkgewogICAgICAgIGNvbnN0IGxpbmVzID0gbTN1LnNwbGl0KCdcbicpOwogICAgICAgIGxldCByZXN1bHQgPSAnJzsKICAgICAgICBsZXQgVFYgPSAnJzsKICAgICAgICAvLyBsZXQgZmxhZz0nI2dlbnJlIyc7CiAgICAgICAgbGV0IGZsYWcgPSAnI20zdSMnOwogICAgICAgIGxldCBjdXJyZW50R3JvdXBUaXRsZSA9ICcnOwogICAgICAgIGxpbmVzLmZvckVhY2goKGxpbmUpID0+IHsKICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgnI0VYVElORjonKSkgewogICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgvJy9nLCAnIicpOwogICAgICAgICAgICAgICAgbGV0IGdyb3VwVGl0bGUgPSAn5pyq55+l6aKR6YGTJzsKICAgICAgICAgICAgICAgIGxldCB0dmdfbmFtZSA9ICcnOwogICAgICAgICAgICAgICAgbGV0IHR2Z19sb2dvID0gJyc7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGdyb3VwVGl0bGUgPSBsaW5lLm1hdGNoKC9ncm91cC10aXRsZT0iKC4qPykiLylbMV0udHJpbSgpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB0dmdfbmFtZSA9IGxpbmUubWF0Y2goL3R2Zy1uYW1lPSIoLio/KSIvKVsxXS50cmltKCk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHR2Z19sb2dvID0gbGluZS5tYXRjaCgvdHZnLWxvZ289IiguKj8pIi8pWzFdLnRyaW0oKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFRWID0gbGluZS5zcGxpdCgnLCcpLnNsaWNlKC0xKVswXS50cmltKCk7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEdyb3VwVGl0bGUgIT09IGdyb3VwVGl0bGUpIHsKICAgICAgICAgICAgICAgICAgICBjdXJyZW50R3JvdXBUaXRsZSA9IGdyb3VwVGl0bGU7CiAgICAgICAgICAgICAgICAgICAgbGV0IHJldF9saXN0ID0gW2N1cnJlbnRHcm91cFRpdGxlLCBmbGFnXTsKICAgICAgICAgICAgICAgICAgICAvLyBpZih0dmdfbmFtZSl7CiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHJldF9saXN0LnB1c2godHZnX25hbWUpOwogICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAvLyBpZih0dmdfbG9nbyl7CiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHJldF9saXN0LnB1c2godHZnX2xvZ28pOwogICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYFxuJHtyZXRfbGlzdC5qb2luKCIsIil9XG5gOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7CiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdExpbmUgPSBsaW5lLnNwbGl0KCcsJyk7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gYCR7VFZ9XCwke3NwbGl0TGluZVswXX1cbmA7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICAvLyByZXN1bHQgPSByZXN1bHQudHJpbSgpOwogICAgICAgIHJlc3VsdCA9IG1lcmdlQ2hhbm5lbHMocmVzdWx0KTsKICAgICAgICAvLyBsb2cocmVzdWx0KTsKICAgICAgICByZXR1cm4gcmVzdWx0CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgbG9nKGBtM3Xnm7Tmkq3ovazmma7pgJrnm7Tmkq3lj5HnlJ/plJnor686JHtlLm1lc3NhZ2V9YCk7CiAgICAgICAgcmV0dXJuIG0zdQogICAgfQp9CgovKioKICog57q/6Lev5b2S57G7L+Wwj+ajieiihOeul+azlQogKiBAcGFyYW0gYXJyIOaVsOe7hAogKiBAcGFyYW0gcGFyc2Ug6Kej5p6Q5byPCiAqIEByZXR1cm5zIHtbWypdXX0KICovCmZ1bmN0aW9uIHNwbGl0QXJyYXkoYXJyLCBwYXJzZSkgewogICAgcGFyc2UgPSBwYXJzZSAmJiB0eXBlb2YgKHBhcnNlKSA9PSAnZnVuY3Rpb24nID8gcGFyc2UgOiAnJzsKICAgIGxldCByZXN1bHQgPSBbW2FyclswXV1dOwogICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKICAgICAgICBsZXQgaW5kZXggPSAtMTsKICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJlc3VsdC5sZW5ndGg7IGorKykgewogICAgICAgICAgICBpZiAocGFyc2UgJiYgcmVzdWx0W2pdLm1hcChwYXJzZSkuaW5jbHVkZXMocGFyc2UoYXJyW2ldKSkpIHsKICAgICAgICAgICAgICAgIGluZGV4ID0gajsKICAgICAgICAgICAgfSBlbHNlIGlmICgoIXBhcnNlKSAmJiByZXN1bHRbal0uaW5jbHVkZXMoYXJyW2ldKSkgewogICAgICAgICAgICAgICAgaW5kZXggPSBqOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChpbmRleCA+PSByZXN1bHQubGVuZ3RoIC0gMSkgewogICAgICAgICAgICByZXN1bHQucHVzaChbXSk7CiAgICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0ucHVzaChhcnJbaV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdFtpbmRleCArIDFdLnB1c2goYXJyW2ldKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzdWx0Owp9CgovKioKICog5pCc57Si57uT5p6c55Sf5oiQ5YiG57uE5a2X5YW4CiAqIEBwYXJhbSBhcnIKICogQHBhcmFtIHBhcnNlIHg9Pnguc3BsaXQoJywnKVswXQogKiBAcmV0dXJucyB7e319CiAqLwpmdW5jdGlvbiBnZW5fZ3JvdXBfZGljdChhcnIsIHBhcnNlKSB7CiAgICBsZXQgZGljdCA9IHt9OwogICAgYXJyLmZvckVhY2goKGl0KSA9PiB7CiAgICAgICAgbGV0IGsgPSBpdC5zcGxpdCgnLCcpWzBdOwogICAgICAgIGlmIChwYXJzZSAmJiB0eXBlb2YgKHBhcnNlKSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICBrID0gcGFyc2Uoayk7CiAgICAgICAgfQogICAgICAgIGlmICghZGljdFtrXSkgewogICAgICAgICAgICBkaWN0W2tdID0gW2l0XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkaWN0W2tdLnB1c2goaXQpOwogICAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIGRpY3QKfQoKLyoqCiAqIHR4dOagvOW8j+ebtOaSreiHquWKqOWQiOW5tumikemBk+mTvuaOpQogKiBAcGFyYW0gdGV4dAogKiBAcmV0dXJucyB7c3RyaW5nfQogKi8KZnVuY3Rpb24gbWVyZ2VDaGFubmVscyh0ZXh0KSB7CiAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xuJyk7CiAgICBjb25zdCBjaGFubmVsTWFwID0gbmV3IE1hcCgpOwogICAgbGV0IGN1cnJlbnRDaGFubmVsID0gJyc7IC8vIOW9k+WJjeWkhOeQhueahOmikemBkwoKICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7CiAgICAgICAgLy8g5L2/55So5q2j5YiZ6KGo6L6+5byP5Yy56YWN6aKR6YGT6KGM77yM5YGH6K6+6aKR6YGT6KGM5YyF5ZCrIiwjIuWNs+WPr+ivhuWIq+S4uumikemBk+ihjAogICAgICAgIGlmICgvLCMvLnRlc3QobGluZSkpIHsKICAgICAgICAgICAgLy8g5aaC5p6c5piv6aKR6YGT5ZCN56ew77yM5L2c5Li66ZSu5YC85a2Y5YKo77yM5Yid5aeL5YyW5Li656m65pWw57uECiAgICAgICAgICAgIGN1cnJlbnRDaGFubmVsID0gbGluZTsKICAgICAgICAgICAgaWYgKCFjaGFubmVsTWFwLmhhcyhsaW5lKSkgewogICAgICAgICAgICAgICAgY2hhbm5lbE1hcC5zZXQobGluZSwgW10pOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChsaW5lKSB7IC8vIOW/veeVpeepuuihjAogICAgICAgICAgICAvLyDlsIblvZPliY3ooYzvvIjpk77mjqXvvInmt7vliqDliLDlvZPliY3popHpgZPmlbDnu4TkuK0KICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFubmVsKSB7CiAgICAgICAgICAgICAgICBjaGFubmVsTWFwLmdldChjdXJyZW50Q2hhbm5lbCkucHVzaChsaW5lKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwoKICAgIC8vIOaehOW7uue7k+aenOWtl+espuS4sgogICAgbGV0IHJlc3VsdCA9ICcnOwogICAgY2hhbm5lbE1hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7CiAgICAgICAgcmVzdWx0ICs9IGtleSArICdcbicgKyB2YWx1ZS5qb2luKCdcbicpICsgJ1xuXG4nOwogICAgfSk7CgogICAgcmV0dXJuIHJlc3VsdC50cmltKCk7IC8vIOenu+mZpOWwvumDqOeahOWkmuS9meaNouihjOespgp9CgpnbG9iYWxUaGlzLm1lcmdlQ2hhbm5lbHMgPSBtZXJnZUNoYW5uZWxzOwpnbG9iYWxUaGlzLmNvbnZlcnRNM3VUb05vcm1hbCA9IGNvbnZlcnRNM3VUb05vcm1hbDsKZ2xvYmFsVGhpcy5zcGxpdEFycmF5ID0gc3BsaXRBcnJheTsKZ2xvYmFsVGhpcy5nZW5fZ3JvdXBfZGljdCA9IGdlbl9ncm91cF9kaWN0OwpnbG9iYWxUaGlzLmdldFJhbmRvbUl0ZW0gPSBmdW5jdGlvbiAoaXRlbXMpIHsvL+S7juWIl+ihqOmaj+acuuWPluWHuuS4gOS4quWFg+e0oAogICAgcmV0dXJuIGl0ZW1zW01hdGgucmFuZG9tKCkgKiBpdGVtcy5sZW5ndGggfCAwXTsKfQpnbG9iYWxUaGlzLl9fZXh0ID0ge2RhdGFfZGljdDoge319Owp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAn55u05pKt6L2s54K55pKtW+WQiF0nLAogICAgYXV0aG9yOiAn6YGT6ZW/JywKICAgIHZlcnNpb246ICcyMDI0MDYyOCBiZXRhNycsCiAgICB1cGRhdGVfaW5mbzogYAoyMDI0MDYyOCBiZXRhNjoKMS7lop7liqDojIPlhrDlhrB2Nua6kAoyLuS/ruWkjeW4puWbvuagh+eahG0zdea6kOivhuWIqwozLuS/ruWkjW0zdTjpk77mjqXluKblj4LmlbDovazkuYnpl67popgKNC7lkIjlubbph43lpI3nmoTpopHpgZPlkI3np7DkuIvnmoTpk77mjqUKNS7mlK/mjIHnm7jlr7nlm77niYfpk77mjqUKMjAyNDA2MjcgYmV0YTE6CjEu5bCG5Y6fZHJweemhueebrueahGxpdmUyY21zLmpz6L2s5o2i5oiQaGlweeS8oOWPgua6kOOAggrjgJDnibnliKvor7TmmI7jgJHmlK/mjIFtM3Xlkox0eHTnmoTnm7Tmkq0KYCwKICAgIGhvc3Q6ICcnLAogICAgaG9tZVVybDogJycsCiAgICBzZWFyY2hVcmw6ICcjd2Q9KiomcGc9I1RydWVQYWdlIyNwYWdlPWZ5cGFnZScsCiAgICB1cmw6ICdmeWNsYXNzI3BnPWZ5cGFnZSZ0PWZ5ZmlsdGVyJywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLnNob3d9fScsCiAgICBoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJ30sCiAgICB0aW1lb3V0OiA1MDAwLCAvLyBjbGFzc19uYW1lOiAn55S15b2xJueUteinhuWJpybnu7zoibom5Yqo5ryrJywKICAgIGxpbWl0OiAyMCwKICAgIHNlYXJjaF9saW1pdDogNSwgLy8g5pCc57Si6ZmQ5Yi25Y+W5YmNNeS4qu+8jOWPr+S7peazqOmHiuaOie+8jOWwseS4jemZkOWItuaQnOe0ogogICAgc2VhcmNoYWJsZTogMSwvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHF1aWNrU2VhcmNoOiAwLC8v5piv5ZCm5ZCv55So5b+r6YCf5pCc57SiLAogICAgZmlsdGVyYWJsZTogMSwvL+aYr+WQpuWQr+eUqOWIhuexu+etm+mAiSwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICAvLyBwYXJhbXM6ICdodHRwOi8vMTI3LjAuMC4xOjU3MDcvZmlsZXMvanNvbi9saXZlMmNtcy5qc29uJywKICAgIC8vIOS4i+mdouiHquWumuS5ieS4gOS6m+a6kOeahOmFjee9rgogICAgLy8gZGVmX3BpYzogJ2h0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85NzM4OTQzMz9zPTEyMCZ2PTQnLCAvL+m7mOiupOWIl+ihqOWbvueJhwogICAgZGVmX3BpYzogJ2h0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2hqZGhueC9oaXB5LXNlcnZlci9tYXN0ZXIvYXBwL3N0YXRpYy9pbWcvbGl2ZXMuanBnJywgLy/pu5jorqTliJfooajlm77niYcKICAgIHNob3dNb2RlOiAnZ3JvdXBzJywvLyBncm91cHPmjInnu4TliIbnsbvmmL7npLogYWxs5YWo6YOo5LiA5p2h57q/6Lev5bGV56S6CiAgICBncm91cERpY3Q6IHt9LC8vIOaQnOe0ouWIhue7hOWtl+WFuAogICAgdGlwczogJycsIC8v5LqM57qn5o+Q56S65L+h5oGvCiAgICDpooTlpITnkIY6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgLy8g5Yid5aeL5YyW5L+d5a2Y55qE5pWw5o2uCiAgICAgICAgcnVsZS5zaG93TW9kZSA9IGdldEl0ZW0oJ3Nob3dNb2RlJywgJ2dyb3VwcycpOwogICAgICAgIHJ1bGUuZ3JvdXBEaWN0ID0gSlNPTi5wYXJzZShnZXRJdGVtKCdncm91cERpY3QnLCAne30nKSk7CiAgICAgICAgcnVsZS50aXBzID0gYOmBk+mVv+ebtOaSrei9rOeCueaSrWpzLeW9k+WJjeeJiOacrCR7cnVsZS52ZXJzaW9ufWA7CgogICAgICAgIGlmICh0eXBlb2YgKGJhdGNoRmV0Y2gpID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIC8vIOaUr+aMgeaJuemHj+ivt+axguebtOaOpeaUvumjnuiHquaIkeOAguaQnOe0oumZkOWItuacgOWkp+e6v+eoi+aVsOmHjzE2CiAgICAgICAgICAgIHJ1bGUuc2VhcmNoX2xpbWl0ID0gMTY7CiAgICAgICAgICAgIGxvZygn5b2T5YmN56iL5bqP5pSv5oyB5om56YeP6K+35rGCW2JhdGNoRmV0Y2hdLOaQnOe0oumZkOWItuW3suiuvue9ruS4ujE2Jyk7CiAgICAgICAgfQogICAgICAgIGxldCBfdXJsID0gcnVsZS5wYXJhbXM7CiAgICAgICAgaWYgKF91cmwgJiYgdHlwZW9mIChfdXJsKSA9PT0gJ3N0cmluZycgJiYgL14oaHR0cHxmaWxlKS8udGVzdChfdXJsKSkgewogICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoX3VybCk7CiAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKCiAgICAgICAgICAgIGxldCBfY2xhc3NlcyA9IFtdOwogICAgICAgICAgICBydWxlLmZpbHRlciA9IHt9OwogICAgICAgICAgICBydWxlLmZpbHRlcl9kZWYgPSB7fTsKICAgICAgICAgICAganNvbi5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgICAgIGlmIChpdC51cmwgJiYgIS9eKGh0dHB8ZmlsZSkvLnRlc3QoaXQudXJsKSkgewogICAgICAgICAgICAgICAgICAgIGl0LnVybCA9IHVybGpvaW4oX3VybCwgaXQudXJsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpdC5pbWcgJiYgIS9eKGh0dHB8ZmlsZSkvLnRlc3QoaXQuaW1nKSkgewogICAgICAgICAgICAgICAgICAgIGl0LmltZyA9IHVybGpvaW4oX3VybCwgaXQuaW1nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxldCBfb2JqID0gewogICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZTogaXQubmFtZSwKICAgICAgICAgICAgICAgICAgICB0eXBlX2lkOiBpdC51cmwsCiAgICAgICAgICAgICAgICAgICAgaW1nOiBpdC5pbWcsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NsYXNzZXMucHVzaChfb2JqKTsKICAgICAgICAgICAgICAgIGxldCBqc29uMSA9IFt7J24nOiAn5aSa57q/6Lev5YiG57uEJywgJ3YnOiAnZ3JvdXBzJ30sIHsnbic6ICfljZXnur/ot68nLCAndic6ICdhbGwnfV07CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHJ1bGUuZmlsdGVyW19vYmoudHlwZV9pZF0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsna2V5JzogJ3Nob3cnLCAnbmFtZSc6ICfmkq3mlL7lsZXnpLonLCAndmFsdWUnOiBqc29uMX0KICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgIGlmIChqc29uMS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuZmlsdGVyX2RlZltpdC51cmxdID0geyJzaG93IjoganNvbjFbMF0udn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgIHJ1bGUuZmlsdGVyW2l0LnVybF0gPSBqc29uMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgX19leHQuZGF0YSA9IGpzb247CiAgICAgICAgICAgIHJ1bGUuY2xhc3NlcyA9IF9jbGFzc2VzOwogICAgICAgIH0KICAgIH0pLAogICAgY2xhc3NfcGFyc2U6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgaW5wdXQgPSBydWxlLmNsYXNzZXM7CiAgICB9KSwKICAgIOaOqOiNkDogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgdXBkYXRlX2luZm8gPSBbewogICAgICAgICAgICB2b2RfbmFtZTogJ+abtOaWsOaXpeW/lycsCiAgICAgICAgICAgIHZvZF9pZDogJ3VwZGF0ZV9pbmZvJywKICAgICAgICAgICAgdm9kX3JlbWFya3M6IGDniYjmnKw6JHtydWxlLnZlcnNpb259YCwKICAgICAgICAgICAgdm9kX3BpYzogJ2h0dHBzOi8vZ2hwcm94eS5uZXQvaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2hqZGhueC9oaXB5LXNlcnZlci9tYXN0ZXIvYXBwL3N0YXRpYy9pbWcvbG9nby5wbmcnCiAgICAgICAgfV07CiAgICAgICAgVk9EUyA9IFtdOwogICAgICAgIGlmIChydWxlLmNsYXNzZXMpIHsKICAgICAgICAgICAgbGV0IHJhbmRvbUNsYXNzID0gZ2V0UmFuZG9tSXRlbShydWxlLmNsYXNzZXMpOwogICAgICAgICAgICBsZXQgX2dldF91cmwgPSByYW5kb21DbGFzcy50eXBlX2lkOwogICAgICAgICAgICAvLyBsZXQgY3VycmVudF92b2QgPSBydWxlLmNsYXNzZXMuZmluZChpdGVtID0+IGl0ZW0udHlwZV9pZCA9PT0gX2dldF91cmwpOwogICAgICAgICAgICAvLyBsZXQgX3BpYyA9IGN1cnJlbnRfdm9kID8gY3VycmVudF92b2QuaW1nIDogJyc7CiAgICAgICAgICAgIGxldCBfcGljID0gcmFuZG9tQ2xhc3MuaW1nOwogICAgICAgICAgICBsZXQgaHRtbDsKICAgICAgICAgICAgaWYgKF9fZXh0LmRhdGFfZGljdFtfZ2V0X3VybF0pIHsKICAgICAgICAgICAgICAgIGh0bWwgPSBfX2V4dC5kYXRhX2RpY3RbX2dldF91cmxdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QoX2dldF91cmwpOwogICAgICAgICAgICAgICAgaWYgKC8jRVhUTTNVLy50ZXN0KGh0bWwpKSB7CiAgICAgICAgICAgICAgICAgICAgaHRtbCA9IGNvbnZlcnRNM3VUb05vcm1hbChodG1sKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaHRtbCA9IG1lcmdlQ2hhbm5lbHMoaHRtbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfX2V4dC5kYXRhX2RpY3RbX2dldF91cmxdID0gaHRtbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgYXJyID0gaHRtbC5tYXRjaCgvLio/WyzvvIxdI1tcc1xTXS4qPyMvZyk7IC8vIOWPr+iDveWtmOWcqOS4reaWh+mAl+WPtwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgYXJyLmZvckVhY2goaXQgPT4gewogICAgICAgICAgICAgICAgICAgIGxldCB2bmFtZSA9IGl0LnNwbGl0KC9bLO+8jF0vKVswXTsKICAgICAgICAgICAgICAgICAgICBsZXQgdnRhYiA9IGl0Lm1hdGNoKC8jKC4qPykjLylbMF07CiAgICAgICAgICAgICAgICAgICAgVk9EUy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9kX25hbWU6IHZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB2b2RfaWQ6IF9nZXRfdXJsICsgJyQnICsgdm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9waWM6IF9waWMgfHwgcnVsZS5kZWZfcGljLAogICAgICAgICAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogdnRhYiwKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBsb2coYOebtOaSrei9rOeCueaSreiOt+WPlummlumhteaOqOiNkOWPkemAgemUmeivrzoke2UubWVzc2FnZX1gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBWT0RTID0gdXBkYXRlX2luZm8uY29uY2F0KFZPRFMpOwogICAgfSksCiAgICDkuIDnuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgVk9EUyA9IFtdOwogICAgICAgIC8vIOS4gOe6p+mZkOWItumhteaVsOS4jeWFgeiuuOe/u+mhtQogICAgICAgIGlmIChydWxlLmNsYXNzZXMgJiYgTVlfUEFHRSA8PSAxKSB7CiAgICAgICAgICAgIGlmIChNWV9GTC5zaG93KSB7CiAgICAgICAgICAgICAgICBydWxlLnNob3dNb2RlID0gTVlfRkwuc2hvdzsKICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3Nob3dNb2RlJywgcnVsZS5zaG93TW9kZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IF9nZXRfdXJsID0gaW5wdXQuc3BsaXQoJyMnKVswXTsKICAgICAgICAgICAgbGV0IGN1cnJlbnRfdm9kID0gcnVsZS5jbGFzc2VzLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGVfaWQgPT09IE1ZX0NBVEUpOwogICAgICAgICAgICBsZXQgX3BpYyA9IGN1cnJlbnRfdm9kID8gY3VycmVudF92b2QuaW1nIDogJyc7CiAgICAgICAgICAgIGxldCBodG1sOwogICAgICAgICAgICBpZiAoX19leHQuZGF0YV9kaWN0W19nZXRfdXJsXSkgewogICAgICAgICAgICAgICAgaHRtbCA9IF9fZXh0LmRhdGFfZGljdFtfZ2V0X3VybF07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBodG1sID0gcmVxdWVzdChfZ2V0X3VybCk7CiAgICAgICAgICAgICAgICBpZiAoLyNFWFRNM1UvLnRlc3QoaHRtbCkpIHsKICAgICAgICAgICAgICAgICAgICBodG1sID0gY29udmVydE0zdVRvTm9ybWFsKGh0bWwpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBodG1sID0gbWVyZ2VDaGFubmVscyhodG1sKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9fZXh0LmRhdGFfZGljdFtfZ2V0X3VybF0gPSBodG1sOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBhcnIgPSBodG1sLm1hdGNoKC8uKj9bLO+8jF0jW1xzXFNdLio/Iy9nKTsgLy8g5Y+v6IO95a2Y5Zyo5Lit5paH6YCX5Y+3CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBhcnIuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHZuYW1lID0gaXQuc3BsaXQoL1ss77yMXS8pWzBdOwogICAgICAgICAgICAgICAgICAgIGxldCB2dGFiID0gaXQubWF0Y2goLyMoLio/KSMvKVswXTsKICAgICAgICAgICAgICAgICAgICBWT0RTLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAvLyB2b2RfbmFtZTppdC5zcGxpdCgnLCcpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICB2b2RfbmFtZTogdm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9pZDogX2dldF91cmwgKyAnJCcgKyB2bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgdm9kX3BpYzogX3BpYyB8fCBydWxlLmRlZl9waWMsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiB2dGFiLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGxvZyhg55u05pKt6L2s54K55pKt6I635Y+W5LiA57qn5YiG57G76aG15Y+R55Sf6ZSZ6K+vOiR7ZS5tZXNzYWdlfWApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSksCiAgICDkuoznuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgVk9EID0ge307CiAgICAgICAgaWYgKG9ySWQgPT09ICd1cGRhdGVfaW5mbycpIHsKICAgICAgICAgICAgVk9EID0gewogICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IHJ1bGUudXBkYXRlX2luZm8udHJpbSgpLAogICAgICAgICAgICAgICAgdm9kX25hbWU6ICfmm7TmlrDml6Xlv5cnLAogICAgICAgICAgICAgICAgdHlwZV9uYW1lOiAn5pu05paw5pel5b+XJywKICAgICAgICAgICAgICAgIHZvZF9waWM6ICdodHRwczovL3Jlc291cmNlLWNkbi50dXhpYW9iZWkuY29tL3ZpZGVvL0Z0V2hzMm1ld1hfN25FdUU1MV9rNnp2ZzZhd2wucG5nJywKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBg54mI5pysOiR7cnVsZS52ZXJzaW9ufWAsCiAgICAgICAgICAgICAgICB2b2RfcGxheV9mcm9tOiAn6YGT6ZW/5Zyo57q/JywKICAgICAgICAgICAgICAgIC8vIHZvZF9wbGF5X3VybDogJ+WXheaOouaSreaUviRodHRwczovL3Jlc291cmNlLWNkbi50dXhpYW9iZWkuY29tL3ZpZGVvLzEwLzhmLzEwOGZjOWQxYWMzZjY5ZDI5YTczOGNkYzA5N2M5MDE4Lm1wNCcsCiAgICAgICAgICAgICAgICB2b2RfcGxheV91cmw6ICfpmo/mnLrlsI/op4bpopEkaHR0cDovL2FwaS55dWpuLmNuL2FwaS96enhqai5waHAnLAogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChydWxlLmNsYXNzZXMpIHsKICAgICAgICAgICAgICAgIGxldCBfZ2V0X3VybCA9IG9ySWQuc3BsaXQoJyQnKVswXTsKICAgICAgICAgICAgICAgIGxldCBfdGFiID0gb3JJZC5zcGxpdCgnJCcpWzFdOwogICAgICAgICAgICAgICAgaWYgKG9ySWQuaW5jbHVkZXMoJyNzZWFyY2gjJykpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgdm9kX25hbWUgPSBfdGFiLnJlcGxhY2UoJyNzZWFyY2gjJywgJycpOwogICAgICAgICAgICAgICAgICAgIGxldCB2b2RfcGxheV9mcm9tID0gJ+adpeiHquaQnOe0oic7CiAgICAgICAgICAgICAgICAgICAgdm9kX3BsYXlfZnJvbSArPSBgOiR7X2dldF91cmx9YDsKICAgICAgICAgICAgICAgICAgICBsZXQgdm9kX3BsYXlfdXJsID0gcnVsZS5ncm91cERpY3RbX2dldF91cmxdLm1hcCh4ID0+IHgucmVwbGFjZSgnLCcsICckJykpLmpvaW4oJyMnKTsKICAgICAgICAgICAgICAgICAgICBsb2cob3JJZCk7CiAgICAgICAgICAgICAgICAgICAgVk9EID0gewogICAgICAgICAgICAgICAgICAgICAgICB2b2RfbmFtZTogJ+aQnOe0ojonICsgdm9kX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZTogIuebtOaSreWIl+ihqCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9waWM6IHJ1bGUuZGVmX3BpYywKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdm9kX2NvbnRlbnQ6IG9ySWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9jb250ZW50OiBvcklkLnJlcGxhY2UoZ2V0SG9tZShvcklkKSwgJ2h0dHA6Ly8qKionKSwKICAgICAgICAgICAgICAgICAgICAgICAgdm9kX3BsYXlfZnJvbTogdm9kX3BsYXlfZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgdm9kX3BsYXlfdXJsOiB2b2RfcGxheV91cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9kaXJlY3RvcjogcnVsZS50aXBzLAogICAgICAgICAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogcnVsZS50aXBzLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfdm9kID0gcnVsZS5jbGFzc2VzLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGVfaWQgPT09IF9nZXRfdXJsKTsKICAgICAgICAgICAgICAgICAgICBsZXQgX3BpYyA9IGN1cnJlbnRfdm9kID8gY3VycmVudF92b2QuaW1nIDogJyc7CiAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWw7CiAgICAgICAgICAgICAgICAgICAgaWYgKF9fZXh0LmRhdGFfZGljdFtfZ2V0X3VybF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCA9IF9fZXh0LmRhdGFfZGljdFtfZ2V0X3VybF07CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QoX2dldF91cmwpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLyNFWFRNM1UvLnRlc3QoaHRtbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgPSBjb252ZXJ0TTN1VG9Ob3JtYWwoaHRtbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sID0gbWVyZ2VDaGFubmVscyhodG1sKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBfX2V4dC5kYXRhX2RpY3RbX2dldF91cmxdID0gaHRtbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBuZXcgUmVnRXhwKGAuKj8ke190YWIucmVwbGFjZSgnKCcsJ1xcKCcpLnJlcGxhY2UoJyknLCdcXCknKX1bLO+8jF0jW1xcc1xcU10uKj8jYCk7CiAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSBodG1sLm1hdGNoKGEpWzBdOwogICAgICAgICAgICAgICAgICAgIGxldCBjID0gaHRtbC5zcGxpdChiKVsxXTsKICAgICAgICAgICAgICAgICAgICBpZiAoYy5tYXRjaCgvLio/WyzvvIxdI1tcc1xTXS4qPyMvKSkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IGMubWF0Y2goLy4qP1ss77yMXSNbXHNcU10uKj8jLylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBjLnNwbGl0KGQpWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsZXQgYXJyID0gYy50cmltKCkuc3BsaXQoJ1xuJyk7CiAgICAgICAgICAgICAgICAgICAgbGV0IF9saXN0ID0gW107CiAgICAgICAgICAgICAgICAgICAgYXJyLmZvckVhY2goKGl0KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC50cmltKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ID0gaXQudHJpbSgpLnNwbGl0KCcsJylbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdSA9IGl0LnRyaW0oKS5zcGxpdCgnLCcpWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xpc3QucHVzaCh0ICsgJyQnICsgdSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgbGV0IHZvZF9uYW1lID0gX19leHQuZGF0YS5maW5kKHggPT4geC51cmwgPT09IF9nZXRfdXJsKS5uYW1lOwogICAgICAgICAgICAgICAgICAgIGxldCB2b2RfcGxheV91cmw7CiAgICAgICAgICAgICAgICAgICAgbGV0IHZvZF9wbGF5X2Zyb207CgogICAgICAgICAgICAgICAgICAgIGlmIChydWxlLnNob3dNb2RlID09PSAnZ3JvdXBzJykgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXBzID0gc3BsaXRBcnJheShfbGlzdCwgeCA9PiB4LnNwbGl0KCckJylbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGFicyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJzLnB1c2godm9kX25hbWUgKyAnQDEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFicy5wdXNoKGBAJHtpICsgMX1gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2b2RfcGxheV91cmwgPSBncm91cHMubWFwKGl0ID0+IGl0LmpvaW4oJyMnKSkuam9pbignJCQkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9wbGF5X2Zyb20gPSB0YWJzLmpvaW4oJyQkJCcpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9wbGF5X3VybCA9IF9saXN0LmpvaW4oJyMnKTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9kX3BsYXlfZnJvbSA9IHZvZF9uYW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsb2cob3JJZCk7CiAgICAgICAgICAgICAgICAgICAgVk9EID0gewogICAgICAgICAgICAgICAgICAgICAgICB2b2RfaWQ6IG9ySWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9uYW1lOiB2b2RfbmFtZSArICd8JyArIF90YWIsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZTogIuebtOaSreWIl+ihqCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9waWM6IF9waWMgfHwgcnVsZS5kZWZfcGljLAogICAgICAgICAgICAgICAgICAgICAgICAvLyB2b2RfY29udGVudDogb3JJZCwKICAgICAgICAgICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IG9ySWQucmVwbGFjZShnZXRIb21lKG9ySWQpLCAnaHR0cDovLyoqKicpLAogICAgICAgICAgICAgICAgICAgICAgICB2b2RfcGxheV9mcm9tOiB2b2RfcGxheV9mcm9tLAogICAgICAgICAgICAgICAgICAgICAgICB2b2RfcGxheV91cmw6IHZvZF9wbGF5X3VybCwKICAgICAgICAgICAgICAgICAgICAgICAgdm9kX2RpcmVjdG9yOiBydWxlLnRpcHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBydWxlLnRpcHMsCiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBWT0RTID0gW107CiAgICAgICAgaWYgKHJ1bGUuY2xhc3NlcyAmJiBNWV9QQUdFIDw9IDEpIHsKICAgICAgICAgICAgbGV0IF9nZXRfdXJsID0gX19leHQuZGF0YVswXS51cmw7CiAgICAgICAgICAgIGxldCBjdXJyZW50X3ZvZCA9IHJ1bGUuY2xhc3Nlcy5maW5kKGl0ZW0gPT4gaXRlbS50eXBlX2lkID09PSBfZ2V0X3VybCk7CiAgICAgICAgICAgIGxldCBfcGljID0gY3VycmVudF92b2QgPyBjdXJyZW50X3ZvZC5pbWcgOiAnJzsKICAgICAgICAgICAgbGV0IGh0bWw7CiAgICAgICAgICAgIGlmIChfX2V4dC5kYXRhX2RpY3RbX2dldF91cmxdKSB7CiAgICAgICAgICAgICAgICBodG1sID0gX19leHQuZGF0YV9kaWN0W19nZXRfdXJsXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KF9nZXRfdXJsKTsKICAgICAgICAgICAgICAgIGlmICgvI0VYVE0zVS8udGVzdChodG1sKSkgewogICAgICAgICAgICAgICAgICAgIGh0bWwgPSBjb252ZXJ0TTN1VG9Ob3JtYWwoaHRtbCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGh0bWwgPSBtZXJnZUNoYW5uZWxzKGh0bWwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX19leHQuZGF0YV9kaWN0W19nZXRfdXJsXSA9IGh0bWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IHN0ciA9ICcnOwogICAgICAgICAgICBPYmplY3Qua2V5cyhfX2V4dC5kYXRhX2RpY3QpLmZvckVhY2goKCkgPT4gewogICAgICAgICAgICAgICAgc3RyICs9IF9fZXh0LmRhdGFfZGljdFtfZ2V0X3VybF07CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBsZXQgbGlua3MgPSBzdHIuc3BsaXQoJ1xuJykuZmlsdGVyKGl0ID0+IGl0LnRyaW0oKSAmJiBpdC5pbmNsdWRlcygnLCcpICYmIGl0LnNwbGl0KCcsJylbMV0udHJpbSgpLnN0YXJ0c1dpdGgoJ2h0dHAnKSk7CiAgICAgICAgICAgIGxpbmtzID0gbGlua3MubWFwKGl0ID0+IGl0LnRyaW0oKSk7CiAgICAgICAgICAgIGxldCBwbGF5cyA9IEFycmF5LmZyb20obmV3IFNldChsaW5rcykpOwogICAgICAgICAgICBsb2coJ+aQnOe0ouWFs+mUruivjTonICsgS0VZKTsKICAgICAgICAgICAgbG9nKCfov4fmu6TliY06JyArIHBsYXlzLmxlbmd0aCk7CiAgICAgICAgICAgIC8vIHBsYXlzID0gcGxheXMuZmlsdGVyKGl0ID0+IGl0LmluY2x1ZGVzKEtFWSkpOwogICAgICAgICAgICBwbGF5cyA9IHBsYXlzLmZpbHRlcihpdCA9PiBuZXcgUmVnRXhwKEtFWSwgJ2knKS50ZXN0KGl0KSk7CiAgICAgICAgICAgIGxvZygn6L+H5ruk5ZCOOicgKyBwbGF5cy5sZW5ndGgpOwogICAgICAgICAgICBsb2cocGxheXMpOwogICAgICAgICAgICBsZXQgbmV3X2dyb3VwID0gZ2VuX2dyb3VwX2RpY3QocGxheXMpOwogICAgICAgICAgICBydWxlLmdyb3VwRGljdCA9IE9iamVjdC5hc3NpZ24ocnVsZS5ncm91cERpY3QsIG5ld19ncm91cCk7CiAgICAgICAgICAgIC8vIOaQnOe0ouWIhue7hOe7k+aenOWtmOiHs+acrOWcsOaWueS+v+S6jOe6p+iwg+eUqAogICAgICAgICAgICBzZXRJdGVtKCdncm91cERpY3QnLCBKU09OLnN0cmluZ2lmeShydWxlLmdyb3VwRGljdCkpOwogICAgICAgICAgICAvLyDov5Tlm57nmoTov5jmmK/mkJzntKLnmoRuZXdfZ3JvdXAKICAgICAgICAgICAgT2JqZWN0LmtleXMobmV3X2dyb3VwKS5mb3JFYWNoKChpdCkgPT4gewogICAgICAgICAgICAgICAgVk9EUy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAndm9kX25hbWUnOiBpdCwKICAgICAgICAgICAgICAgICAgICAndm9kX2lkJzogaXQgKyAnJCcgKyBLRVkgKyAnI3NlYXJjaCMnLAogICAgICAgICAgICAgICAgICAgICd2b2RfcGljJzogX3BpYyB8fCBydWxlLmRlZl9waWMsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSksCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlmICgvXC4obTN1OHxtcDQpLy50ZXN0KGlucHV0KSkgewogICAgICAgICAgICBpZiAoaW5wdXQuaW5jbHVkZXMoJz8nKSAmJiB0eXBlb2YgKHBsYXlPYmopID09ICdvYmplY3QnICYmIHBsYXlPYmoudXJsKSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IHBsYXlPYmoudXJsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlucHV0ID0ge3BhcnNlOiAwLCB1cmw6IGlucHV0fQogICAgICAgIH0gZWxzZSBpZiAoL3lhbmdzaGlwaW58MTkwNVwuY29tLy50ZXN0KGlucHV0KSkgewogICAgICAgICAgICBpbnB1dCA9IHtwYXJzZTogMSwgang6IDAsIHVybDogaW5wdXQsIGpzOiAnJywgaGVhZGVyOiB7J1VzZXItQWdlbnQnOiBQQ19VQX0sIHBhcnNlX2V4dHJhOiAnJmlzX3BjPTEnfTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbnB1dAogICAgICAgIH0KICAgIH0pLAp9 \ No newline at end of file diff --git a/lib/看57.js b/lib/看57.js new file mode 100644 index 0000000..7270a28 --- /dev/null +++ b/lib/看57.js @@ -0,0 +1 @@ +bOHh4qyJ30YH+RrYfWhs9iLk3wRJr60oo4tIYwSK5Owtcoalu4pZ09cOTrZU8jQvvpUqFv98DxpS/Y3TSRC1kXz4mQLCSufc1xdK7i1q9TJr/4WWFhpiWSfLi5jm7nnbaMWi+3PAzkLQ8/wq+KmbIt6OI2Gh7Na8TFdKUnd4MM8FUgHNEWMduemp32a+HQiExYeueAqElCwjPTbs0OxhtCqqKO7Rpxprmov0ejf/+0J5Nvq41N9k0Hq9jyAY7R6YtgL+PlL9+0pNZMNXpFbrmnnQu3Nzgc4LkuDWZwT1AM9Ng/N/RmQUu6YamqaSP9PKQGyzI+zXoiC7UyLuXiLqbFoxZ0NfkWkW9/WLX1mtCgXdxBD0OE1WAsZNxbMfhwzOl81OtPfo3BLpNtuFI0LFI0f1SOsqojfPM2rY4wKAaWFKEct2u5rO6zvHqrf0zonvYbsRvX5LtgHLXk/ItI7CfEHdkE70qeMyvm12sRaRLIOkTZfEJk+GhbvrhMOatshyy3nf3BPu1DpjJdwzAGB+ccT4KSxS5az6FGJdLjCaOIpYXX5xILTb9xumPh3kzLEIAolfEB6l4eMdmWJ65UQJQcb/k13HymmDM9ygF4R5I+IpyEPSdmfP3ypkcj+V4nax152uatwQEVO5AHsP9RlWB/QzJsLmuiJvpjdDsm/KCFkfKCinzsLabBFtIrovmadrifrVnrwdHwnpnoezggV5iXxS488GEFoqG4+dTaykarytuuyNCxWNbo+PJwE935On508MmI3IjinKT3UVOJSJ6+Mz20sXmXxtPWeJCxYe8lz3hnovEXzK8BBrYiZpKVk4zVAkQGZh1XnN1yo8GkGqnRC0dzo3UZyWATpk3Zj7PzFqdFQN8ZiJj872+HDDKEcnioRtPoW2wz+jNVOzZcmtJeATCizpMpV9VeIpfNzpotB2GF8fwYhiUFg3ARTQENyBWeWicSwTl4ncmzLc0IxbIUT8bE+/w/1ugPxX1KQTw8VvmNj/iOEADQUBJDVlXrc+voKqtD2py1wMXeCVg+pyw+Jxgdz4gnmdLUl+7oKuvvyjSfG88M87vWXvumZ/HVCe3bMKZ/71ZcuTzi30jxLCzz8iMQMlProy7h1n6XeWLQt+cSr/i989rm4MTsOOXNpR4e0/DNWbGiJDRG9+kRQ8DTHeJ9e8bbcB9thwNsXAFutGS/wR9SRdi+li/ag+cRCxpUmnOX1vlBQhT7id536SU6BaTeuvG0k7pCJ8NpDYnSigFcsAHlwus4sKHUaWhMoPA5KN/ETKNvrpR7T+MAGdlJafMva17KQ1X1jQR1VRqCqRmgyjaQ7WN2nAZ6yuy2RxTox9bL4lkQWlctHcn/szvG4uERgtzWrBldX96b13xpCOXlEt7cIen/6UsFJWHdijwdIUgXfdpnc6D55ImVCll3cQ8ZxmNcEDuKsGngg/P2RMWaTqS//C51RhzYnWNNN4HT3IHXrTF8mBo2ZI3H0Y2HSlCNVysVHHQBSTkYDKYbh6yXOeAXCnWpiD0jYxKJVRpOJ1sstNctiyfg/yCcTA2Q== \ No newline at end of file diff --git a/lib/看了么.js b/lib/看了么.js new file mode 100644 index 0000000..40e3e4a --- /dev/null +++ b/lib/看了么.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/看客影院.js b/lib/看客影院.js new file mode 100644 index 0000000..200e5b9 --- /dev/null +++ b/lib/看客影院.js @@ -0,0 +1 @@ +YIusz8yDu42XX/8kPCrvQiUo+S3gpRsIhnRLJyJpx7juGczFK9dOfANbyoHHGcCPb4xrr4spkhfdVAr2vcBKvzR5JqTSS9AodPvEzdfu2G67rijk9UMHSGAvU49RVJ1NgvLZOy54mtiwkw2bg4HfiCjkBI7l4SZGQAfWbwKukZmZBYYqR7N12Z1J9x+A4qv4pdmPl1KJ5GWKItojJZC0WxwwGh8biK9Zu3kmWa2VWpDwfG/CULT+WcyAE6YbuxbznaZW6+hvtUAqE5nXtps0b+uF6M54z/6OcYjmP65YFgKYLjYSp1IwIU0tbnEBJpxzz/B/UamESiwE9NGjdbOa8m/rJBFmshJ9PzqnnFa92TRjIMmDCr9V/nfA1sGn93t1bWcQUvEu0otSo91aIoowyKaMI5v3/Vwjcn0XESMi86o= \ No newline at end of file diff --git a/lib/看戏网.js b/lib/看戏网.js new file mode 100644 index 0000000..e8355bb --- /dev/null +++ b/lib/看戏网.js @@ -0,0 +1 @@ +qz2VfkB3O9fqiff5MjJa/NOxIkzNuMv7K54K23vKJOSw++yJ8kLPZGH7bSG3+EXPHtsnVBmFYEG//5tWToijkxfdHGHVqoK2oq34UXrPH4XoX01t+fZJ6skrjGglXWQ6LCr4BaZYYaeSeiEhk66XaJFMJALOYxtGcyoh/KcSqFFNBA4VCcO2qVtwBlBbwR2IYyI3sqzHUfD/2U4PVG/9i7hoSOl4rhYkb6VupTYDkHDCvWGQXC+lL6p1ZvaBDdNljxtb1jkwaO92DCydyDjtClWnW5RVR+DeoCt0AoO8SHt2lIg6Uxv5Gmupcu5GyIibEl0kSE+B1Jzi4lABZ0rQS6ibXjRwUUBiIKSywRqGOa4LbVIc9zAMnAQFmNHivUGsIDl0bL437dN1WN6TYyXOadEn/pZOOSUxvMh8Jxi1EF4= \ No newline at end of file diff --git a/lib/短剧TV网.js b/lib/短剧TV网.js new file mode 100644 index 0000000..529616e --- /dev/null +++ b/lib/短剧TV网.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/2VRS0vDMBy/71MUhG4ra+rjtuI3ELxMryVNszUjfdj+swcieBVU5sWLiujB7eLNgwzUL7Ot+i1M16zMmUBI/r/H/5FDt0sJIJymrBPWAuHiEP283M7vPnfRbHqZTccN7bSiyQXYTZtaFaUgmBnjMKTccXyKPc3fqzaWFBZ0SgaJQqAhOA74InBzSNfThEjmWd2u9HCiJYJTbV+5LyZPi4cvqVbJlSMw4FRGs8fX+cW4dZx93CjEj1KQgA8QNy2r3+8jT+CwK6CHCFEckXBJsXqRB8OYWu0h4bJRsz2McYciHwKuiCnFCfGPSnrxtgzDLFchkpd13eJ68n01kiLBi66llrMUEOHSoc0GNme2UWwl8SLh5i1BImgRmb2fyzGXg1MWmlRiXV8OwF5Nz0YxIybQAeh6S545w09oe1XO6D57e/5fjuME1GO4SU9q2/XGBqiiW0XPB5upDRvl+cxAAPX+Zl1Hchdzp14Q8k/+BdKLoJVZAgAA \ No newline at end of file diff --git a/lib/短剧天堂.js b/lib/短剧天堂.js new file mode 100644 index 0000000..22f7211 --- /dev/null +++ b/lib/短剧天堂.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/磁力熊[磁].js b/lib/磁力熊[磁].js new file mode 100644 index 0000000..25d0af2 --- /dev/null +++ b/lib/磁力熊[磁].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7Cgl0aXRsZTon56OB5Yqb54aKW+ejgV0nLAoJaG9zdDonaHR0cHM6Ly93d3cuY2lsaXhpb25nLmNvbScsCglob21lVXJsOicvdG9wMjUwL2luZGV4Lmh0bWwnLAoJLy8gdXJsOiAnL2Z5Y2xhc3MvaW5kZXhfKGZ5cGFnZS0xKS5odG1sJywKCXVybDogJy9meWNsYXNzZnlmaWx0ZXItKGZ5cGFnZS0xKS5odG1sJywKCWZpbHRlcl91cmw6Jy17e2ZsLmNsYXNzIG9yICIwIn19LXt7ZmwuYXJlYSBvciAiMCJ9fScsCglmaWx0ZXI6ewoJCSIxIjpbeyJrZXkiOiJjbGFzcyIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIwIn0seyJuIjoi5Ymn5oOFIiwidiI6IjEifSx7Im4iOiLllpzliaciLCJ2IjoiMiJ9LHsibiI6IuaDiuaCmiIsInYiOiIzIn0seyJuIjoi5Yqo5L2cIiwidiI6IjQifSx7Im4iOiLniLHmg4UiLCJ2IjoiNSJ9LHsibiI6IueKr+e9qiIsInYiOiI2In0seyJuIjoi5oGQ5oCWIiwidiI6IjcifSx7Im4iOiLlhpLpmakiLCJ2IjoiOCJ9LHsibiI6IuaCrOeWkSIsInYiOiI5In0seyJuIjoi56eR5bm7IiwidiI6IjEwIn0seyJuIjoi5a625bqtIiwidiI6IjExIn0seyJuIjoi5aWH5bm7IiwidiI6IjEyIn0seyJuIjoi5Yqo55S7IiwidiI6IjEzIn0seyJuIjoi5oiY5LqJIiwidiI6IjE0In0seyJuIjoi5Y6G5Y+yIiwidiI6IjE1In0seyJuIjoi5Lyg6K6wIiwidiI6IjE2In0seyJuIjoi6Z+z5LmQIiwidiI6IjE3In0seyJuIjoi5q2M6IieIiwidiI6IjE4In0seyJuIjoi6L+Q5YqoIiwidiI6IjE5In0seyJuIjoi6KW/6YOoIiwidiI6IjIwIn0seyJuIjoi54G+6Zq+IiwidiI6IjIxIn0seyJuIjoi5Y+k6KOFIiwidiI6IjIyIn0seyJuIjoi5oOF6ImyIiwidiI6IjIzIn0seyJuIjoi5ZCM5oCnIiwidiI6IjI0In0seyJuIjoi5YS/56ulIiwidiI6IjI1In0seyJuIjoi57qq5b2V54mHIiwidiI6IjI2In1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiMCJ9LHsibiI6IuWkp+mZhiIsInYiOiIxIn0seyJuIjoi6aaZ5rivIiwidiI6IjIifSx7Im4iOiLlj7Dmub4iLCJ2IjoiMyJ9LHsibiI6Iue+juWbvSIsInYiOiI0In0seyJuIjoi5pel5pysIiwidiI6IjUifSx7Im4iOiLpn6nlm70iLCJ2IjoiNiJ9LHsibiI6IuiLseWbvSIsInYiOiI3In0seyJuIjoi5rOV5Zu9IiwidiI6IjgifSx7Im4iOiLlvrflm70iLCJ2IjoiOSJ9LHsibiI6IuWNsOW6piIsInYiOiIxMCJ9LHsibiI6IuazsOWbvSIsInYiOiIxMSJ9LHsibiI6IuS4uem6piIsInYiOiIxMiJ9LHsibiI6IueRnuWFuCIsInYiOiIxMyJ9LHsibiI6IuW3tOilvyIsInYiOiIxNCJ9LHsibiI6IuWKoOaLv+WkpyIsInYiOiIxNSJ9LHsibiI6IuS/hOe9l+aWryIsInYiOiIxNiJ9LHsibiI6IuaEj+Wkp+WIqSIsInYiOiIxNyJ9LHsibiI6IuavlOWIqeaXtiIsInYiOiIxOCJ9LHsibiI6IueIseWwlOWFsCIsInYiOiIxOSJ9LHsibiI6Iuilv+ePreeJmSIsInYiOiIyMCJ9LHsibiI6Iua+s+Wkp+WIqeS6miIsInYiOiIyMSJ9LHsibiI6IuazouWFsCIsInYiOiIyMiJ9LHsibiI6IuWcn+iAs+WFtiIsInYiOiIyMyJ9LHsibiI6Iui2iuWNlyIsInYiOiIyNCJ9XX1dLAoJCSIyIjpbeyJrZXkiOiJjbGFzcyIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIwIn0seyJuIjoi5Ymn5oOFIiwidiI6IjEifSx7Im4iOiLllpzliaciLCJ2IjoiMiJ9LHsibiI6IuaDiuaCmiIsInYiOiIzIn0seyJuIjoi5Yqo5L2cIiwidiI6IjQifSx7Im4iOiLniLHmg4UiLCJ2IjoiNSJ9LHsibiI6IueKr+e9qiIsInYiOiI2In0seyJuIjoi5oGQ5oCWIiwidiI6IjcifSx7Im4iOiLlhpLpmakiLCJ2IjoiOCJ9LHsibiI6IuaCrOeWkSIsInYiOiI5In0seyJuIjoi56eR5bm7IiwidiI6IjEwIn0seyJuIjoi5a625bqtIiwidiI6IjExIn0seyJuIjoi5aWH5bm7IiwidiI6IjEyIn0seyJuIjoi5Yqo55S7IiwidiI6IjEzIn0seyJuIjoi5oiY5LqJIiwidiI6IjE0In0seyJuIjoi5Y6G5Y+yIiwidiI6IjE1In0seyJuIjoi5Lyg6K6wIiwidiI6IjE2In0seyJuIjoi6Z+z5LmQIiwidiI6IjE3In0seyJuIjoi5q2M6IieIiwidiI6IjE4In0seyJuIjoi6L+Q5YqoIiwidiI6IjE5In0seyJuIjoi6KW/6YOoIiwidiI6IjIwIn0seyJuIjoi54G+6Zq+IiwidiI6IjIxIn0seyJuIjoi5Y+k6KOFIiwidiI6IjIyIn0seyJuIjoi5oOF6ImyIiwidiI6IjIzIn0seyJuIjoi5ZCM5oCnIiwidiI6IjI0In0seyJuIjoi5YS/56ulIiwidiI6IjI1In0seyJuIjoi57qq5b2V54mHIiwidiI6IjI2In1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiMCJ9LHsibiI6IuWkp+mZhiIsInYiOiIxIn0seyJuIjoi6aaZ5rivIiwidiI6IjIifSx7Im4iOiLlj7Dmub4iLCJ2IjoiMyJ9LHsibiI6Iue+juWbvSIsInYiOiI0In0seyJuIjoi5pel5pysIiwidiI6IjUifSx7Im4iOiLpn6nlm70iLCJ2IjoiNiJ9LHsibiI6IuiLseWbvSIsInYiOiI3In0seyJuIjoi5rOV5Zu9IiwidiI6IjgifSx7Im4iOiLlvrflm70iLCJ2IjoiOSJ9LHsibiI6IuWNsOW6piIsInYiOiIxMCJ9LHsibiI6IuazsOWbvSIsInYiOiIxMSJ9LHsibiI6IuS4uem6piIsInYiOiIxMiJ9LHsibiI6IueRnuWFuCIsInYiOiIxMyJ9LHsibiI6IuW3tOilvyIsInYiOiIxNCJ9LHsibiI6IuWKoOaLv+WkpyIsInYiOiIxNSJ9LHsibiI6IuS/hOe9l+aWryIsInYiOiIxNiJ9LHsibiI6IuaEj+Wkp+WIqSIsInYiOiIxNyJ9LHsibiI6IuavlOWIqeaXtiIsInYiOiIxOCJ9LHsibiI6IueIseWwlOWFsCIsInYiOiIxOSJ9LHsibiI6Iuilv+ePreeJmSIsInYiOiIyMCJ9LHsibiI6Iua+s+Wkp+WIqeS6miIsInYiOiIyMSJ9LHsibiI6IuazouWFsCIsInYiOiIyMiJ9LHsibiI6IuWcn+iAs+WFtiIsInYiOiIyMyJ9LHsibiI6Iui2iuWNlyIsInYiOiIyNCJ9XX1dCgl9LAoJc2VhcmNoVXJsOiAnL2Uvc2VhcmNoL2luZGV4LnBocCNjbGFzc2lkPTEsMiZzaG93PXRpdGxlJnRlbXBpZD0xJmtleWJvYXJkPSoqO3Bvc3QnLAoJc2VhcmNoYWJsZToyLAoJcXVpY2tTZWFyY2g6MCwKCWZpbHRlcmFibGU6MSwKCWhlYWRlcnM6ewoJCSdVc2VyLUFnZW50JzogJ01PQklMRV9VQScKCX0sCgl0aW1lb3V0OjUwMDAsCgljbGFzc19uYW1lOifnlLXlvbEm5Ymn6ZuGJuixhueTo+eUteW9sVRvcDI1MCZJTURCIFRvcDI1MCbpq5jliIbmgqznlpHniYcm6auY5YiG5Zac5Ymn54mHJumrmOWIhuS8oOiusOeJhybpq5jliIbniLHmg4XniYcm6auY5YiG54qv572q54mHJumrmOWIhuaBkOaAlueJhybpq5jliIblhpLpmanniYcm6auY5YiG5q2m5L6g54mHJumrmOWIhuWlh+W5u+eJhybpq5jliIbljoblj7LniYcm6auY5YiG5oiY5LqJ54mHJumrmOWIhuatjOiInueJhybpq5jliIbngb7pmr7niYcm6auY5YiG5oOF6Imy54mHJumrmOWIhuilv+mDqOeJhybpq5jliIbpn7PkuZDniYcm6auY5YiG56eR5bm754mHJumrmOWIhuWKqOS9nOeJhybpq5jliIbliqjnlLvniYcm6auY5YiG57qq5b2V54mHJuWGt+mXqOS9s+eJhycsCgljbGFzc191cmw6JzEmMiYvdG9wMjUwLyYvcy9pbWRidG9wMjUwLyYvcy9zdXNwZW5zZS8mL3MvY29tZWR5LyYvcy9iaW9waWMvJi9zL3JvbWFuY2UvJi9zL2NyaW1lLyYvcy9ob3Jyb3IvJi9zL2FkdmVudHVyZS8mL3MvbWFydGlhbC8mL3MvZmFudGFzeS8mL3MvaGlzdG9yeS8mL3Mvd2FyLyYvcy9tdXNpY2FsLyYvcy9kaXNhc3Rlci8mL3MvZXJvdGljLyYvcy93ZXN0LyYvcy9tdXNpYy8mL3Mvc2NpLWZpLyZzL2FjdGlvbi8mL3MvYW5pbWF0aW9uLyYvcy9kb2N1bWVudGFyeS8mL3MvdW5wb3B1bGFyLycsCglwbGF5X3BhcnNlOnRydWUsCglsYXp5OicnLAoJbGltaXQ6NiwKCeaOqOiNkDogYGpzOgoJCXBkZmg9anNwLnBkZmg7cGRmYT1qc3AucGRmYTtwZD1qc3AucGQ7CgkJdmFyIGQgPSBbXTsKCQl2YXIgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwoJCXZhciBsaXN0ID0gcGRmYShodG1sLCAnYm9keSYmLmNvbCcpOwoJCWxpc3QuZm9yRWFjaChpdCA9PiB7CgkJCWQucHVzaCh7CgkJCQl0aXRsZTogcGRmaChpdCwgJ2gyJiZUZXh0JyksCgkJCQlkZXNjOiBwZGZoKGl0LCAnLm1lLWF1dG8mJlRleHQnKSArICfliIYgLyAnICsgcGRmaChpdCwgJy5zbWFsbCYmVGV4dCcpLAoJCQkJLy8gcGljX3VybDogcGQoaXQsICcuY2FyZC1pbWcmJnN0eWxlJyksIC8vIOWPquaciSDlvbHop4ZUVibniLHkvazniYgg5pyJ5Zu+54mHCgkJCQlwaWNfdXJsOiAvIScvLnRlc3QocGQoaXQsICcuY2FyZC1pbWcmJnN0eWxlJykpP3BkKGl0LCAnLmNhcmQtaW1nJiZzdHlsZScpOnBkKGl0LCAnLmNhcmQtaW1nJiZzdHlsZScpLnJlcGxhY2VBbGwoIiciLCIiKSwgLy8g5YW85a65IOW9seinhlRWJueIseS9rOeJiCDku6XlpJbnmoTlhbblroPlo7PlrZAKCQkJCXVybDogcGQoaXQsICdhJiZocmVmJykKCQkJfSk7CgkJfSkKCQlzZXRSZXN1bHQoZCk7CglgLAoJ5LiA57qnOiBganM6CgkJcGRmaD1qc3AucGRmaDtwZGZhPWpzcC5wZGZhO3BkPWpzcC5wZDsKCQl2YXIgZCA9IFtdOwoJCWlmIChNWV9DQVRFICE9PSAnMScgJiYgTVlfQ0FURSAhPT0gJzInKSB7CgkJCWxldCB0dXJsID0gKE1ZX1BBR0UgPT09IDEpPyAnaW5kZXgnIDogJ2luZGV4XycrIE1ZX1BBR0U7CgkJCWlucHV0ID0gSE9TVCArIE1ZX0NBVEUgKyB0dXJsICsgJy5odG1sJzsKCQl9CgkJdmFyIGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKCQl2YXIgbGlzdCA9IHBkZmEoaHRtbCwgJ2JvZHkmJi5jb2wnKTsKCQlsaXN0LmZvckVhY2goaXQgPT4gewoJCQlkLnB1c2goewoJCQkJdGl0bGU6IHBkZmgoaXQsICdoMiYmVGV4dCcpLAoJCQkJZGVzYzogcGRmaChpdCwgJy5tZS1hdXRvJiZUZXh0JykgKyAn5YiGIC8gJyArIHBkZmgoaXQsICcuc21hbGwmJlRleHQnKSwKCQkJCS8vIHBpY191cmw6IHBkZmgoaXQsICcuY2FyZC1pbWcmJnN0eWxlJyksIC8vIOWPquaciSDlvbHop4ZUVibniLHkvazniYgg5pyJ5Zu+54mHCgkJCQlwaWNfdXJsOiAvIScvLnRlc3QocGQoaXQsICcuY2FyZC1pbWcmJnN0eWxlJykpP3BkKGl0LCAnLmNhcmQtaW1nJiZzdHlsZScpOnBkKGl0LCAnLmNhcmQtaW1nJiZzdHlsZScpLnJlcGxhY2VBbGwoIiciLCIiKSwgLy8g5YW85a65IOW9seinhlRWJueIseS9rOeJiCDku6XlpJbnmoTlhbblroPlo7PlrZAKCQkJCXVybDogcGQoaXQsICdhJiZocmVmJykKCQkJfSk7CgkJfSkKCQlzZXRSZXN1bHQoZCk7CglgLAoJ5LqM57qnOnsKCQl0aXRsZTonaDEmJlRleHQ7cC5tYi0yOmVxKDQpJiZUZXh0JywKCQlkZXNjOidwLm1iLTI6ZXEoMSkmJlRleHQ7OztwLm1iLTI6ZXEoNykmJlRleHQ7cC5tYi0yOmVxKDUpJiZUZXh0JywKCQlpbWc6Jy5yb3VuZGVkLTImJnNyYycsCgkJY29udGVudDonLm12X2NhcmRfYm94JiZUZXh0JywKCQkvLyB0YWJzOidqczpUQUJTID0gWyLpgZPplb/no4HlipsiXScsCgkJLy8gbGlzdHM6Jy5tdl9kb3duOmVxKCNpZCkmJi5ib3JkZXItYm90dG9tJywKCQkvLyBsaXN0X3RleHQ6J2EmJlRleHQnLAoJCS8vIGxpc3RfdXJsOidhJiZocmVmJywKCgkJdGFiczonanM6VEFCUyA9IFsi6YGT6ZW/56OB5YqbIiwi6YGT6ZW/5Zyo57q/6aKE6KeIIl0nLAoJCWxpc3RzOmBqczoKCQlsb2coVEFCUyk7CgkJcGRmaD1qc3AucGRmaDtwZGZhPWpzcC5wZGZhO3BkPWpzcC5wZDsKCQlMSVNUUyA9IFtdOwoJCXZhciBkZD1bXTsKCQlUQUJTLmZvckVhY2goZnVuY3Rpb24odGFiKSB7CgkJCWlmICgv6YGT6ZW/56OB5YqbLy50ZXN0KHRhYikpIHsKCQkJCXZhciBkID0gcGRmYShodG1sLCAnLm12X2Rvd24mJi5ib3JkZXItYm90dG9tJyk7CgkJCQlkID0gZC5tYXAoZnVuY3Rpb24oaXQpIHsKCQkJCQl2YXIgdGl0bGUgPSBwZGZoKGl0LCAnYSYmVGV4dCcpOwoJCQkJCWxvZygndGl0bGUgPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4nICsgdGl0bGUpOwoJCQkJCXZhciBidXJsID0gcGQoaXQsICdhJiZocmVmJyk7CgkJCQkJbG9nKCdidXJsID4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+JyArIGJ1cmwpOwoJCQkJCXJldHVybiB0aXRsZSArICckJyArIGJ1cmwKCQkJCX0pOwoJCQkJTElTVFMucHVzaChkKQoJCQl9IGVsc2UgaWYgKC/pgZPplb/lnKjnur/pooTop4gvLnRlc3QodGFiKSkgewoJCQkJdmFyIGQgPSBwZChodG1sLCAnaWZyYW1lJiZzcmMnKTsKCQkJCWlmIChkKSB7CgkJCQkJZD1bJ+esrOS4gOmbhuWcqOe6v+aSreaUvumihOiniCQnICsgZF0KCQkJCX0gZWxzZSB7CgkJCQkJZD1bJ+ayoeaciemihOiniOS4jeimgeeCuSRodHRwOi8vd3d3LnNoYXJlbmljZS5uZXQvZG91eWluLzIzODUyJ10KCQkJCX0KCQkJCUxJU1RTLnB1c2goZCkKCQkJfQoJCX0pOwoJCWAsCgl9LAoJ5pCc57SiOicuY29sO2gyJiZUZXh0Oy5jYXJkLWltZyYmc3R5bGU7Lm1lLWF1dG8mJlRleHQ7YSYmaHJlZicsCn0= \ No newline at end of file diff --git a/lib/神仙影视.js b/lib/神仙影视.js new file mode 100644 index 0000000..b4285c0 --- /dev/null +++ b/lib/神仙影视.js @@ -0,0 +1 @@ +bXViYW4ubXhwcm8u5LqM57qnLmRlc2MgPSAnLm1vZHVsZS1pbmZvLWl0ZW06ZXEoNCkmJlRleHQ7Lm1vZHVsZS1pbmZvLXRhZy1saW5rJiZUZXh0Oy5tb2R1bGUtaW5mby10YWctbGluazplcSgxKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbTplcSgyKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbTplcSgxKSYmVGV4dCc7CnZhciBydWxlID0gewogICAgdGl0bGU6ICfnpZ7ku5nlvbHop4YnLAogICAg5qih5p2/OiAnbXhwcm8nLAogICAgaG9zdDogJ2h0dHBzOi8veXMuc3h0di50b3AnLAogICAgdXJsOiAnL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWZpbHRlci5odG1sJywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLuexu+Wei319e3tmbC7lnLDljLp9fXt7Zmwu5o6S5bqPfX17e2ZsLuWJp+aDhX19e3tmbC7or63oqIB9fXt7Zmwu5a2X5q+NfX0vcGFnZS9meXBhZ2V7e2ZsLuW5tOS7vX19JywKICAgIHNlYXJjaFVybDogJy9pbmRleC5waHAvdm9kL3NlYXJjaC9wYWdlL2Z5cGFnZS93ZC8qKi5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJiVzI4VFJ4VEh2OHMrcC9Lc25UZ0piOXp2VU82WGxnY1hXUzBxcFZLU1ZrSUlDWEJpN0lUWUNZSVlOMDRnSlZlSWlRTWhFQnNuWDhhemEzK0xyajJ6Wjg0Y0krekl0R3JWZWR6LzcyUXVaM1luNTcrenZtUFoxcDd2N2xnL1IyOWJleXgzdmNSbng2d3U2MWJrbHlpKy9qMXk4N2RvSS9DV0ovT1I1VnBzdVM1N0Y3WjF0MHZLbzh1VmNzNU5QcFFrck1oVWppZVhGT2tGNHR5ZmNPNU5LZElIeEYyYTVGc2xSZm9WU2F3N3NSRkZiS1k2U2k3cFNJM09TVHlyRkpNSUJmSEEzU2NsOThsN1hsNlhOT2dONUZxZGk4U0lkbFZpNFBvTGlTR3psMnJnK3MzSTRHQkFhdnFVOUJDcDZablNRNlNtTHdEcFNHaDZWa2xIUXROelNGb1JtcDVMTWhhaCtTSFYvQ0ovOUVvUGtScU1aWFROTFpNUXFla3IwelNqdWdZaEN3K2JaaVExR0c1K3NiTDlnZ3hYYU5CSy9IRXR1MEphRVJxME12dktteU5wUldpN1dDUG53YW83TlVsQ2hBWWhzVkhud1I4a1JHaVF1bEthajN3a3FST2FIMUtiZWV3OFc5QkRwQVlkVFQyc0pvdWtJNkZCWHJiZmFNK0ZueHFRSVRBOVgzMUo3eHFoUVVncXp0TnZTWWpRNEs3Wm1mQ1dsOXcxUWxNcmxYTm1KdWxLTlRRSUdkNXhYNU9wU3cwU1dKNTBTN25QVFUwajJoNlFLL0JIUmJRSCtOZHQ3UUh6UzdWczNPOHBNaENOQktRRTY3V1lkVDZ1YVJGU1Vpa3VPRnZiZWh0Q2dsbHRwL2gwV1l1UUVpejV1NmMwUWtxd0JHUHJORUpLMEVabXdjbXQ2bTBJQ2VieWZJVzJJU1YxWDMyZ0VWSlNJeTAwajdTZ3RURmU0TVZGdlEwaFFSdkRhUy9MUExHaU53TXF6SGxoeDAzbjNXUlduemFvYWp0NjRZenRlSCtzZHdvcXhJMXNWa3BUZXBDUThBMVZYY3RYbCsrcEd3cXUyN3FocHN0ZXZOL0Z6Y2l0SHdOU1FndEpJNlFFdDh2YmVSb2hKVmpJVEptUFoyaVFVdEdDTndVSkNkMDBORUpLNk5ac2loQVN1bW1hNWl3a2xIaitKcVpIQ0VsN2tyYzJLcVV5ZXBMOTZ5OGsvbnVWK2lBTGR2dGQzSTVHQmdJTkFkRVFwU0ZNZzVRR01iVXB0VEZsbERKRTdYNUM3WDVNK3lqdHc3U1gwbDVNdzVTR01lMmh0QWRUbWlzYjU4cW11Ykp4cm15YUt4dm55cWJac0hFMkdNMEd3OWxnTkJzTVo0UFJiRENjRFVhendYQTJHTTBHdzlsZ05Cc01aNFBSYkRDY0RVYXp3WEEyR0wxekdMNXpHTTBWVTdteSsvdjFYRFVFUlBzbzdjTzBsOUplVE1PVWhqSHRvYlFIMDI1S3V6RU5VUnJDTkVocEVGT2JVaHRUUmluVHQ0OTh4bGtiUjl1SGYwMjJENUR4dnIwWE5xZm8wRkIwSUxBWHlENUM5Z0haVDhoK0lBY0lPUURrSUNFSGdSd2k1QkNRdzRRY0JuS0VrQ05BamhKeUZNZ3hRbzRCT1U3SWNTQW5DRGtCNUNRaEo0R2NJdVFVa05PRW5BYnlMU0hmQWpsRHlCa2dad2s1QytRY0llZUFuQ2ZrUEpBTGhGd0FjcEdRaTBBdUVYSUp5R1ZDTGdPNVFzZ1ZJRmNKdVFxRWZkTlBXRjNCajRDVGVzeUxhZlVJd0xYK0NEaVp6VnBtUThGNml6L2NEZ3pkOFA3STc2eFNMRHFGSjAweFA5MFlHbFNsek5vd1Q4U2JZZ2F2L3pvUXJZL3JXcGNWN1BBMUJub2JNRjJ1RkplVVkwZi9rYnhxM0t1NEVWSWJrbGZNMUV0Y2hkUk81cXd1MWF0d2hjSmY4ZDFDYTl2Vmhsa1h2cERmMytTeHRCNm9rVjI4ME9Cdk5ua3hUMEtFdGp2NzMrcUZSaHYydjQwWEdtMVkwellzZDJWcnJzbWFTazE1K3hFbnUwWVdRMmd3bHFmeHB2Y01Va1B1dFdrQnBQWjVDeUpiYWZZZ25abmErSWdYcjlzY0liVnZCTCtHN1cxdFNOc3h4cTNzWmh2R2VLcmdlVUUrTTZjM0E2cXhoeDNZUTJQdGpMVXoxczVZTzJQdGpMVXoxdTcvWk8xQ0hWbzd0WG1JSXhlMzlFa2RlNkYvczhMZDZSU2RIemNNbms3VnhpTThuazVELzJTbExRYXZGNTVDMGlkQXErUzZwRTlDanhDU3FVdE5YV3JxVWxPWG1yclUxS1dtTGpWMXFXWHEwaTZydThPNlZHMHQ4c2hoZE5uNTlOcXZIdEhSZ2poMTBDZzZYUkFIRHhwVkc1NDhlOUJvNzljN2ZxaS91aDUrN3VkSHZjNzJOS2pXV245eDZNYnkxYmw3SkVSbzBGRnEyWjJJazQ2RUJpRVRzKzRxL2JKT2FLcU1idm1WWDNWaXBwb2lweVZTZzQ1ZXpQRnBjclloTmVpbzljR0ZreXMyZjA0b05CaEw2Ni9oMmpqYzRRVXYyUnRrTEVMRElRdnZta004RGRab2ZydnlpWHlVS0RWb0pmV2NKNlpKSzBKVFQ5NWJucC9RUTZRR0hVMlBPbG55VWFMVVZIYlgrVTZHWnJlaG9hcjg3ei8rYUR5MXVpa1QwcTVNV2NmZjBuM0J0dmtSN3ovd2VmM0FRVXJHMkJsalo0eWRNWGJHMkJsalo0eWRNWGFXTVhaZFZrK0h4ZzZaczF5U3Z5VFdUVzJINGtPdFNpbXJmcDBVUXI5bHExY1NMOTJWbmVybXFFL1YxbElkbm5RMlpyVmZFNFhVdHVTbUN0N2YxbUpsL3ZHQlQ5RXhTSHE4V2w1MUUyWDFFVkVJbWRHRmQ3VS9KNTM3WTI3Qy8ybE1xTWZVUEtibU1UVVBwcWJtd2RUVVBKYXBlVXpOODkrdGVVSmhWUFNZSjlROG9lWUovVmM5b1hmL0Fwck1kMENxUXdBQScsCiAgICBmaWx0ZXJfZGVmOiB7CiAgICAgICAgMToge+exu+WeizogJzEnfSwKICAgICAgICAyOiB757G75Z6LOiAnMid9LAogICAgICAgIDM6IHvnsbvlnos6ICczJ30sCiAgICAgICAgNDoge+exu+WeizogJzQnfSwKICAgICAgICA1OiB757G75Z6LOiAnNSd9LAogICAgICAgIDM2OiB757G75Z6LOiAnMzYnfQogICAgfSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyBsaTpndCgxKTpsdCg4KTthJiZUZXh0O2EmJmhyZWY7LyhcXGQrKS5odG1sJywKfQ== \ No newline at end of file diff --git a/lib/神马影院[自动].js b/lib/神马影院[自动].js new file mode 100644 index 0000000..1e2eac6 --- /dev/null +++ b/lib/神马影院[自动].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/21WW6/jVhV+7684mocp1J1xfIvtGfVh247tJL7EceKbKlW241vi+H4vIyEBDwgoiBeKVIqohCgSpVQqD7Sq+DPM6fRfkHNOp52BsWStvdb69reWtrf3/jq3uqraNHjr3deurpqkSYNHV/e+/vOH3/z1b0+/+uyb3390781L4vrjP13/4d+P7p2HospvI3FeNxdk3DTFIxj2kjp/6Pu3mbZKLwm4jvMeDscwSZugehg35/Q2Wwdu5cf7bzG3DvzGGw++e8KxcKPgMvh+yh2F6920hnwfuBCIeL0Ezx8IccwZ5W2HIy1hhFoYs92pYDFMhbFgnlNbxtBz0i2QtW6USaQrg+qtmEir9/KwYCoQC6CPGcYe4OMmELwmJASEIBvFTB1zaZgGWXQbNSTOBNydD5mH7v1REcMJ3QejODX0kUE3kH5KlU2ONckBhSFEzQYJPsChaE2tHZJ9MNPryQog3zsAzkdVmdYALBtUTWzg/SIV0doRl2VqHtLNmEL+ycJWaUT0iwIyBdQ01VO0tfzN3MXl9ZzkuFmVVoHjkwWiduUwX+siDxliECUlbLOn1m8KlzqFYQkv1/pJ3Ge2k7NnNxj6/VHk1/00z1kJsKRUAqbeyCJnA5ppkjOwHL7ezzhSXsUZ4FEiZAimZMw1NRZO30bA5TJOn0jnoIFEJOf5aLVOr2pK1y6g/gygdG2X6JzuK9zWRJFewuagDBcq2VCkSKOHKeLM8pyRaTaTKTUX9oxL4lwLaTICxiO2T/NUOTIYQNhqh095SqqXmgCVZ3S51mBPEViy9RMbLoSg9NDzfqeDRuah1CD4SQPu4BeaDGw8iZzesJS5XSQlGukn2rCohohWYF2A4BB1hNurJqEjR3HF036/G/t40KkmX6VUOKcOqrBg0yzudgLV2G6k4ubCpNu9xbuRVMKKGwkJfWx6NFpaFRYd98CQk2w975lcOtaVjDd20TOIDBXK0IvRMqQBWoOWpXnUCRI+DKhS6okjpwK8q3TNNS4bwJdsqjg17TpjMaLkVnI8LTo8tQiX9Vc5r2+EENGq0MKJcpJxsByLo7+dN/ZW4nDWFyQr1c4olIy+gDv2ecgiAuIo1MuBvVZsMFPZbqqAEAG7NBFvU4/9xJ/kwgGbBS8AJVrFpnZUwA4I20QTklgoi3TW2UDxXDQdq7QuEk/n28LeDisSt3YkKewoAZMP1BnaHSffP5OT1OoHIsYYlUYXl1ff4IDq/VNHwATsSOEA99Do+RM2EsTUBAbklX41dtNhl4YXp/KreTspYRpeVqmiNoR6XIUxrCCOhKsEZC07ZlJHgidUZ7AoRXWXS7O2MrxdRcdkGu3lzFqzIpCSBSeI0S6VJ4aPjjEz8avkODA9R8TRMOALYlf3K3uBa/6wtk+U7oPW3stuwKh7TBZMTl2IsnmWNosMbM4iJ2YXrs0EjEi6cC2cRBr4niXi5ZDiArGTe8Ne33CZdkltfQDZrnwImHZPypzJtBeu3XnVLTAgnfmjgEXeZXtvZGU6WeI5ief+Yku4Dp7HKrrKq01FB72b9CJC8bimrQOWgLKkXBtwCMExoOduCjf7uoF1EZswaoQOR4/00a0qkTBDbw9HqNQkkpycAJH57T60RmmZIWKXiD17WiZesLS5phOVvqaCapfAZyFG2RU/HyB4JioOn6xVssPDWEyYWqY6TziVWXOggyUwea0iR7p0DYQ4CEtnpq7I3vM6CRU7xhRvrKpQY2ZMQYaGJ9ZWoXAmbHK35zQKIWcUWQtAFdataQPzaHAqtlnBdhbB6O54ngODhtONaOk22iMYQtckmjJYpp8EJt0qO0HOcT+u4NqotgU+8FkmjJwiZB0P43HmHdrIkUzKFlcENNc34Sw/N5MYA3PYq7V5Cjxjj/eus2oUC8V2Kke7830GwWxOLYFrevMi1x1WY4xDmerr0Rsobg3wk70OIraDe6Zfb1dzgM8MwM1RLN1jMXS8nAlSzAVlV+sU0DeyiSjLkxt5GkU51uCbBdhqmFpa1lyVPMDM95yDyAY523YRi6zXFYcWELPxtbmwYJpqs9u3BR03QISTbHH5u8s5pu1QS91NXS/Wre26wFkYSdlrcD7We0Hnl0k3M4zyckK1M60a8+N2v55OR5rSZy3X4POJbeEqXLIK0zaV5dVZc1rJ0za2KJHGTqtGOM10IBSTr+BhX0MyWETeudOsud4OwBogD6aN9mjP9ttuYU4RQFS3cneGGhM2gwjeUnIyNQhWUtOLs27FdZ2wwKIyt1PhpGRoAC6YkNVnl3MRcqqgEOHFUo3UpVAg21FUZRnnzlAZFfkC8NoZkrkgutynEduOeFk661O709kzxgSUZTaX63iTuRpDrjyOPHGHOEQvPbVD7yjL5DS4TiNfjL7e0ZXpNKITzzJ33swM0vC21tZqjIY/0LXXIRBLtEax2CaTi7miKilVCA+th0KMjCAwHYhH+SIk3nrrBdnxzp2ceffdMH349WdfPv3wF0+ePLj1nn7wj6e//OK5d/3eb59+8evvcj//y/VPfvbce/bpJ88+/vF3uU9+d/3pry7eC2LnLvGvz//z5VdPnrxY/RCEj65upNnVFfJ8cHV118ilLeTebeTJm7cGfQUCfQmBvQKBvYTAX4HAX0IQr0AQL1d5VSPY805e+xbnp25dv1O4VX0jOR9mbue51YOkCc71/ftp8ti9f38XDM2NjasgfPyDt98+QD+8XRzfbYJ3gsFP28PN3Gf//Omzv3/6o+v337t+/4+3gMb1XsjffZs7IfubD77+/KNHV697+WG8enjODxfte1v08XPHd6vDbeTBrRz+touHqTuNae4e7t8/uI37IK+SKMnc9PGLHA+yvAn+p+3/p02yML8Dvf7ma0/+C5WB1x2BCwAA \ No newline at end of file diff --git a/lib/笔趣阁[书].js b/lib/笔趣阁[书].js new file mode 100644 index 0000000..23988db --- /dev/null +++ b/lib/笔趣阁[书].js @@ -0,0 +1 @@ +H4sIAEqSbWYC/61WbW/bVBT+zq8wBV3ba2qnhYHkkE1TVQkYgmmlH9A6Ra59k7i9sd17r9OGNBKMaQixdZ3UDxObAA2xTqIDBhPqVjb+TJ10/2Ln3uu8OKk0hMiX2Oc85+We85xz3XSpRhOCtbLWfk2DX+/RYfr9t46mp7/fPP7tsV6w7fTZo+O9a1vpzv7Rk/tb3b9/6e0ebim1NOEBJxgsevu7x3/99OL2l5cAd1kvSGU9Yhx0dc5j5tj2xsaGtbK+5lqelwESSkBvr7IoPMsiygO/XG15xGUMxW4Nw4v4y8BSXgndhoy3fTV9coi6D+8fPf8RvfjqWXpwBaXb19Kbf6Des1vdgwPU27slIOnPf/Z2f0Dpr9e7d/dzrlT0WTSH3kJvo9PoHfQuKmYIhl3q1ZdUfgnD1FYSq84b5Ox6+dSpHNBdEVWYU6L1JPDWFqXc0YpKVg0Ix1TBZkdF4F8ffc+yyst8XHW0dierKnZ9TJmTNU389CXIcOZcDYdcB+ML85Wlc5mHzIgHDRwl0I3TxWKWkudyXMGbHkl8PIwYE7dViV3KQMZpgpXUtrX0zvPeN1937/zTvXHPeXOVWTxa5DQIa4ZhauUzWptENSMI44SbJfkHtKphfoFGmy2oo2FOazqCw5X1aame1hFvxbgcNGp6qWOqOMT9vOVoJ3kfnJVgrokmgHuK1xPMeD9qDiKJCZjYr9YNgS9ouuVFIYcaIVSfRehTvMn1ESs4ozDMMGOmb0CPY2jFwMP7INdNi2IomIcN+70VesauAXI5HBUvh8vhQJzP8D8GUv6mpkyLxSTgxpSIDG+KKkZTVKsJShIAuljQZuZMazUKQmNqOZwaS4FiEf7DxU8+tpisdlBtGcNSDwa8kBNlqQ1knRGv/c63MwpBAorQYdTEBJaArk2LsAVtlQnSdZRpv/9+lMgRqbqEZVG72w+Ob+wANiFOjRtFEyESlFzVv1KJxW7o4HVjZtbMRKCqU1zN+Hx08EXv6d4rOGXbqiHRWoAVbT/guGFcXPpooTJ/HrqS50kOrOvjqpPYWWj3x7Y9Ly0d5aDTGWvJv6C2WJf9tskyS+6MgXxAXLo8lAkjqxrRBderGwHPn1+W3ooTVh/r/siKD7jlwob2CBYruDAB8zHzFCrh9YhOAmDQpR74UIHnSYAkSgYgAeOTiIx5EhWEnEZ5SMc8kZMM84uYJYQbvpmn29HT65Icw0P377PBghhGkPmLHdLEFCF4Q4hRbwSgKqALRlpwwfA8LQfiPnNLFmu4hIAX0ExEGxxVVydFyPcnQNxdEVNkUTIiFKWTUvHQcINQmDphxA2rEVEM+bh5FxUOXsFgJfJbEyGEk1cD1IznJ29UWYlBHmwOr5nsWuru3O09vvc/TyfcQ3p65UH68Hbvu6vKzBFrRz1ObOET5jioasbrGXxsTIRNW6kKclg7alrVVBsnfeyo74d6o//tIHI5v/BZQdzo8o7NBRjJT8aD00wkrg7KxgsxgesMnnDTJYb42LPUQhzcJzrsYV3WcGQ2Oi8Br/ZhHxsKAAA= \ No newline at end of file diff --git a/lib/第一韩漫[画].js b/lib/第一韩漫[画].js new file mode 100644 index 0000000..8b72ba1 --- /dev/null +++ b/lib/第一韩漫[画].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/米爱影视.json b/lib/米爱影视.json new file mode 100644 index 0000000..65655a3 --- /dev/null +++ b/lib/米爱影视.json @@ -0,0 +1,421 @@ + { + + "作者":"cc", + + "站名":"米爱影视", + + "主页url":"https://www.miai9.cc/", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗!", + + "导演":"导演:&&", + + "主演":"主演:&&", + + "影片状态":"集数:&&", + + "影片类型":"video-info-aux scroll-content\">&&立即播放", + + "数组":"module-item-pic\">&&module-item\">", + + "标题":"title=\"&&\"", + + "副标题":"module-item-text\"&&", + + "图片":"data-src=\"&&\"", + + "链接":"href=\"&&\"", + + "搜索url":"/vodsearch/-------------.html?wd={wd}", + + "搜索数组":"lazy lazyload\"&&

    ", + + "搜索标题":"alt=\"&&\"", + + "搜索副标题":"&&", + + "搜索图片":"data-src=\"&&\"", + + "搜索链接":"href=\"&&\"", + + "线路数组":"data-dropdown-value=&&", + + "线路标题":"🌸cc接口🌸+&&[替换:HD高清->>高清#>>共]+集", + + "播放数组":"sort-item\"&&", + + "播放标题":"&&", + + "播放列表":"", + + "分类url":"https://www.miai9.cc/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html;;ak", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4#纪录片$32", + + "筛选":{ + "1":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"剧情片","v":"11"}, + {"n":"喜剧片","v":"7"}, + {"n":"动作片","v":"6"}, + {"n":"科幻片","v":"9"}, + {"n":"犯罪片","v":"35"}, + {"n":"悬疑片","v":"36"}, + {"n":"爱情片","v":"8"}, + {"n":"恐怖片","v":"10"}, + {"n":"战争片","v":"12"}, + {"n":"动漫片","v":"28"}, + {"n":"其他电影","v":"53"} + ] + }, + {"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":"网络电影"} + ] + }, + {"key":"area","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":"lang","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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"国产剧","v":"13"}, + {"n":"韩国剧","v":"15"}, + {"n":"日本剧","v":"29"}, + {"n":"欧美剧","v":"16"}, + {"n":"港澳剧","v":"44"}, + {"n":"台湾剧","v":"14"}, + {"n":"泰国剧","v":"27"} + ] + }, + {"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":"其他"} + ] + }, + {"key":"area","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":"lang","name":"语言","value":[ + {"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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "3":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"内地","v":"23"}, + {"n":"港台","v":"24"}, + {"n":"日韩","v":"25"}, + {"n":"欧美","v":"26"} + ] + }, + {"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":"求职"} + ] + }, + {"key":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"内地","v":"内地"}, + {"n":"港台","v":"港台"}, + {"n":"日韩","v":"日韩"}, + {"n":"欧美","v":"欧美"} + ] + }, + {"key":"lang","name":"语言","value":[ + {"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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "4":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"国产","v":"20"}, + {"n":"日韩","v":"21"}, + {"n":"欧美","v":"22"}, + {"n":"港台","v":"59"} + ] + }, + {"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":"其他"} + ] + }, + {"key":"area","name":"地区","value":[ + {"n":"全部地区","v":""}, + {"n":"国产","v":"国产"}, + {"n":"日本","v":"日本"}, + {"n":"欧美","v":"欧美"}, + {"n":"其他","v":"其他"} + ] + }, + {"key":"lang","name":"语言","value":[ + {"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":"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"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ], + "32":[ + {"key":"cateId","name":"类型","value":[ + {"n":"全部类型","v":""}, + {"n":"国语记录片","v":"42"}, + {"n":"外语记录片","v":"43"} + ] + }, + {"key":"by","name":"排序","value":[ + {"n":"全部排序","v":""}, + {"n":"时间排序","v":"time"}, + {"n":"人气排序","v":"hits"}, + {"n":"评分排序","v":"score"} + ] + } + ] + } + } diff --git a/lib/素白白[优].js b/lib/素白白[优].js new file mode 100644 index 0000000..b7fb397 --- /dev/null +++ b/lib/素白白[优].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/索尼资源[资].js b/lib/索尼资源[资].js new file mode 100644 index 0000000..234dc02 --- /dev/null +++ b/lib/索尼资源[资].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/9PXV8goKSkottLXLy7Nz8tMLMjUS87P1QfRBRkF+gVF+WWZKan6Zfkp+vaJybY5mcUlXPokaEorAkoU5+Ual1ogDOAqSyxSKCrNSVWwVajmUgCCZysWPpu730pB/WV7+8vZbYbqOmDhksySnFSg6PMti55u2PNia8uzXROigVQsVD4jv7gEKI3NNVAVILfm56aGZKYA1Rkaw/XBhKACyYklqfGpFck5pSlg+6Zsfbp3Yw2QerG87Wnn8prnu/e86NxV87RrxbM9q2sg0i+WL36xfkvNk72TXzRtqnm2Z8rTiTNqnk3b8HL6bqATX6xbX/Ni/a6nrd01T5dufrloItSmgsSi4tT40qIciOW1AMONT36CAQAA \ No newline at end of file diff --git a/lib/维奇动漫.js b/lib/维奇动漫.js new file mode 100644 index 0000000..8dbbebb --- /dev/null +++ b/lib/维奇动漫.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/6WWWW/bRhCA3/srDBeQm7A2KVOnhT6Q1n1f1OEXY0kuyZV4mZeOwECKtklTNEnRu0hRtAXSBiiK9KFAg6RJ/kwsO/+iy0OxnNeuAGl35ptjZ2YBecDaslwVbn2wdeOdLbwc5KjwYGvn/NnfZw9vn332aPXvHzvvByrFsB2sURzHtA9Icjab7bnIQ1O0JxjaBlO1MbU+QyBCCwtu7HA2tHYZGerODtY3WmylXjjmmJ3TkDz/99vznz/EGteRdjORuYM0aLg4apKiqHUEDXKWikEygtzwBHQM79pQhYKzKy0kpDrQ2lMcTY24UHIc4jduSOqeABxYEU9Pd4MTsCBY7/nFeieowLbxwV/SwgQyxJtAs4DAOj2NnIvQAUgNE4tENtYLCnclO4OcieT165tphRjg/bLHQ9GJi4RpL5C/kYXZX8GC1I51oPkNu3j508Xz52HDYmcPnvs/q+8eXrYvpMPbqwjoS4BismtoQI9ZCH9frZIIpYNoJPwVGWBRWLNLH+v++St0twmFkk0miLWJhMFPAyDiTMuYL479udyopo4kCVoHW9EcIHuARGhcAqYKFscmsGxs5FgujKS+ILp1BKpgudg4IQ3hActGbTTcoMISUO3Iw+reo4u7X2CD67nogy1J8uzT7y5+eZRb/Xz79a/f584evDi/czu3un//4uVfuddfvVjde5i7ePzb6qNP3ju7//jVk7tnt364Fvh79eTm+dPfsb89zxBVZDs4hRyIxYKXl0OaHIuJwAG7UFCM3JrZDbSxWB/OHR9WLChFF3j19PPA32WztgN4+2Bre89WjNmxhWTFOUa6ZBzAk/eoa7GYitY73+H2ZXe2cXzfMEjDtoRNlQhtwddtygRDd/CLDmIZHrRwD3Yd7PKNY5I8f/ry4p/Hq2/+On/28UaKgLcDK7yJxfZ0Y+ZntWkQFPaKwbHvOcqAJFdf/rn6+kXod+v1zTuvH9wKe3Jp41cujOIPh3/yr/0uEvHFQeAktHs7lk9eDRZyYV/f4vBs+VjUlO31HP+PCVl98eP537/6E3flTWJBOWFXmPUi9rl9Ko04tldK01pj5DUKnmHNDa1d6edbFQTlaR6VFaOIujWBM3RuXK5Wxt18Shl3UvliZlIX2/yyWGxCpeo1Dkder8WThO2IopJdZFWzPkNFOl1DVm9fR2qVpttpyjyhtCNY7/amVhH2nFFlyc7ZUnaaVMhFW8sSpcNslR2hMV1IIPdkEh8VGtxkWjeJEp9Iks1Mt8c2y5n93rJTiCs8XV52GMroD4uEUQSyLDTJtOUOBI6lWCDU7YZJ0Vwhr+iJZWfBL6Y605BEsdEXjL7MTBQbVrvGYTxVJ7KWXYp3qoxmiZksO+s3Oz2Cz6L6XBOp8ow1M0NSak2FpjwUs1JXGRQnXYupJfvxTH/SFrnqrD5q9Psl6oQdM0tVTR7GF01Brs50MLbE6uiEbTEJrzsYN1mhoOM5P5wnUniP2amkJBq1ZKcvlzWj7emDcrvDzpZTO61P8ipbOnSgUjMK2QrjtqWi3lW6ZaZeBqDJ8HFGYErOiKEL86q8z6TiS072GsN4R2cIwuFpdaGTneJsVOZOUtp+jSHYZF0fdc1api7DFmxldKJQn7Qst8Q3HXyHqjEv1htHoHNoe/0JwUBqmBBa6ay7nCSL+57clkaUW8O/4/IsTwkex8drHsfMyiW3qNJ0rZNiCNIb5IcOrlnVWo7VMTWBpVlbHAyJWg9OxQrtQonLe1qWnLb0ZkNErAcKXB21O3RX0soeHEuL7kSvH3mq2qaLtdHSHoieTZpkrwmGvczYSIpVKWF5FM9nTdJckISWZkEfmpmWUjA9m0dJ76jJj468o0UJTC3a44d0RWnCJWcX2/m+TKWbcN7ms3K651qjkwGhSyadwv8xRno25TWIAUmMmRHPcl38Qj7Yeef0P5Bu8hXiCAAA \ No newline at end of file diff --git a/lib/维奇动漫[漫].js b/lib/维奇动漫[漫].js new file mode 100644 index 0000000..f215f00 --- /dev/null +++ b/lib/维奇动漫[漫].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/网飞啦[自动].js b/lib/网飞啦[自动].js new file mode 100644 index 0000000..75aa479 --- /dev/null +++ b/lib/网飞啦[自动].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/ytLLFIoKs1JVbBVqOZSAIJnKxY+m7vfSkH9Rfuqp10r1HXAoiWZJTmpQMHneye+XDzv6dRl0RDpWKh8Rn5xCVA6o6SkoNhKX7+8vFyvPDEvPS01Uy8nEaqmtCgHqES/LD9Ftzgjv1w3M0U3rTI5J7G4WLcgMT0VyAFRehkluTlQHWDJ+ILEomKQ3Xp5iWVJiUW6mSWpucVqajmZ1olqaiGpFSUgOqMoNc0abHZJZUEqyGwNPS17TWTTilMTi5IzQpFcARZAtly3PEVXSwumqRYAdvT4Dh0BAAA= \ No newline at end of file diff --git a/lib/网飞猫[优].js b/lib/网飞猫[优].js new file mode 100644 index 0000000..dd74ff7 --- /dev/null +++ b/lib/网飞猫[优].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/美剧窝.js b/lib/美剧窝.js new file mode 100644 index 0000000..302687e --- /dev/null +++ b/lib/美剧窝.js @@ -0,0 +1 @@ +dmFyIHJ1bGU9ewogICAgICAgICAgICB0aXRsZTogJ+e+juWJp+eqnScsCiAgICAgICAgICAgIGhvc3Q6ICdodHRwczovL3d3dy5tandvLm5ldC8nLAogICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy5tandvLm5ldC90eXBlL2Z5Y2xhc3MtZnlwYWdlLycsCiAgICAgICAgICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vd3d3Lm1qd28ubmV0L3NlYXJjaC8qKi0tL3BhZ2UvZnlwYWdlLycsCiAgICAgICAgICAgIHNlYXJjaGFibGU6IDIsLy/mmK/lkKblkK/nlKjlhajlsYDmkJzntKIsCiAgICAgICAgICAgIHF1aWNrU2VhcmNoOiAwLC8v5piv5ZCm5ZCv55So5b+r6YCf5pCc57SiLAogICAgICAgICAgICBmaWx0ZXJhYmxlOiAwLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgICAgICAgICBoZWFkZXJzOiB7Ly/nvZHnq5nnmoTor7fmsYLlpLQs5a6M5pW05pSv5oyB5omA5pyJ55qELOW4uOW4pnVh5ZKMY29va2llcwogICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywgLy8gIkNvb2tpZSI6ICJzZWFyY2huZWVkPW9rIgogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGFzc19wYXJzZTogJy5uYXYtbGlzdCBsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykvJywKICBjYXRlX2V4Y2x1ZGU6ICfmmI7mmJ985rC45LmFfOabtOaWsCcsICAgICAgIAogICAgICAgICAgICAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgICAgICAgICBsYXp5OiAnJywKICAgICAgICAgICAgbGltaXQ6IDYsCiAgICAgICAgICAgIOaOqOiNkDogJ3VsLm15dWktdm9kbGlzdC5jbGVhcmZpeDtsaTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5waWMtdGV4dCYmVGV4dDthJiZocmVmJywKICAgICAgICAgICAgZG91YmxlOiB0cnVlLCAvLyDmjqjojZDlhoXlrrnmmK/lkKblj4zlsYLlrprkvY0KICAgICAgICAgICAg5LiA57qnOiAnLm15dWktdm9kbGlzdCBsaTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5waWMtdGV4dCYmVGV4dDthJiZocmVmJywKICAgICAgICAgICAg5LqM57qnOiB7CiAgICAgICAgICAgICAgICAidGl0bGUiOiAiLm15dWktY29udGVudF9fZGV0YWlsIC50aXRsZSYmVGV4dDsubXl1aS1jb250ZW50X19kZXRhaWwgcDplcSgtMikmJlRleHQiLAogICAgICAgICAgICAgICAgImltZyI6ICIubXl1aS1jb250ZW50X190aHVtYiAubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWwiLAogICAgICAgICAgICAgICAgImRlc2MiOiAiLm15dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMCkmJlRleHQ7Lm15dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMSkmJlRleHQ7Lm15dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMikmJlRleHQiLAogICAgICAgICAgICAgICAgImNvbnRlbnQiOiAiLmNvbnRlbnQmJlRleHQiLAogICAgICAgICAgICAgICAgInRhYnMiOiAiLm15dWktcGFuZWxfX2hlYWQuYWN0aXZlLmJvdHRvbS1saW5lIGgzIiwKICAgICAgICAgICAgICAgICJsaXN0cyI6ICIubXl1aS1jb250ZW50X19saXN0OmVxKCNpZCkgYSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAg5pCc57SiOiAnI3NlYXJjaExpc3QgbGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5waWMtdGV4dCYmVGV4dDthJiZocmVmOy5kZXRhaWwmJnA6ZXEoMSkgcCYmVGV4dCcsCiAgICAgICAgfQ== \ No newline at end of file diff --git a/lib/老王电影[自动].js b/lib/老王电影[自动].js new file mode 100644 index 0000000..9683e87 --- /dev/null +++ b/lib/老王电影[自动].js @@ -0,0 +1 @@ +dmFyIHJ1bGU9ewogIHRpdGxlOiAi6ICB546L55S15b2xIiwKICDmqKHmnb86ICLoh6rliqgiLAogIGhvc3Q6ICJodHRwczovL2xhb3dhbmcuY28iLAogIHVybDogIi92cy9meWNsYXNzZnlmaWx0ZXIuaHRtbCIsCiAgc2VhcmNoVXJsOiAiL3MqKi9wYWdlL2Z5cGFnZS5odG1sIiwKICBmaWx0ZXJhYmxlOiAxLAogIGZpbHRlcjogIkg0c0lBQUFBQUFBQUErMmFhVzhUVnhTRy80cy9VMm5HMlFhK3NTOWwzNkhpQTZvaUZiV2xVcUdWS29Ua3hGbWNRR0lIaFJoak40RW16b0t5T0lTR3hNYk9uL0dkR2YrTFRuelBmYzl4RW8wS0lsM1FmUFA3SE44Nzl6MitubnVPeDQ5aWR1elFONDlpMzNmL0Zqc1VVLzN6amVTOEdwcHprLzJ4QTdIN2QzL3MzazEvdmZ2REw5M05RZmYzQ0FZbzl2Z0F4U1lLUVlBb0NSUHpVcXM4Z29TSnVUMFpOekZCTVJLWWMzaStYaTJZT2JYQW5ITmphck5pNXRRQzQrUUtTZUI2cVJmMThwQzVuaGFZYzNqRnE3NHhjMnFCT1FlZU5YSUxaazR0TUdmdm9qY3hadWJVQXJIa3NOdjcwc1MwRVA2ODhRcjcyeGFJRlFmWkh3bk11VFJicjcweWMyb0JENVcwNnQ4d0hyVEFuT2taZnhwNTBRS3gwUUdWZm10aVdpQ1dlZW9tOE5scVlXS04zai9kVXBwaUpFeXMvV3Zpd1F2RC9PV1NxajRuVHVMeG5lMW95N1lzbE5UVDhxNXRhZWllMnhMQmxtMDVNOWZJRFppbGE0RlUxVVpWdm1wU3BRVnN6ZWJjalJWalN3dkVwaFo0SEFsOE5ObWlXMWcwSDQwV25QNlN1MWxEK3BzQ3NaR1NLcythbUJhWWM2M0UxeU9CZEQ1WjVSZ0pIdmRjam5zdVk2cjJubU1rVEt5K3NkbkFXa2dnWjJPVFludHBnVG5mdi9PTFcyWk9MWGlydjNLZmJBVWZBSGE3MGJqcVZwOVh6Ym9USnVtczRhY3ZIUXhRS2ZNdFpJMTNySXdIMHMydW0zZEFpMXVSS28yci9oTGZqVWdqbzhVdEw3M2tEZVZNVXFGeGxkcWF2bTY5akMrMlJQRGN2MTZ2bUZzYmlkMWIzVjlaOHVjVE83YzY2RjVibllNdFd6MWZEUUxtY2xxSWJjSXhFa2pKMnhtT2tjQld6MWJWU0piRHJNV1hRWVMxRUY4R2pwRVFtMVBFdEJDYlV6alJRaVJWTFNjNXFkdGlkMUtEajd5UmZiY3pxYUI3SlpXRE1xbHhLOTVPclBsUzhEYm1iWkxIbWNjbHQ1bmJrbHZNTGNIdGcrREJTOEVkNW83a1hjeTdKTzlrM2lsNUIvTU95ZG12TGYzYTdOZVdmbTMyYTB1L052dTFwVitiL2RyU3I4VitMZW5YWXIrVzlHdXhYMHY2dGRpdkpmMWE3TmVTZmkzMmEwbS9GdnUxcEYrTC9WclNyOFYrTGVuWFlyOFcrN1VQSGpSK215OEZkNWc3a25jeDc1SzhrM21uNUIzTU95UnZaOTR1ZVJ2ek5zbmp6T09TMjh4dHlTM20wcS9EZmgzcDEyRy9qdlRyc0Y5SCtuWFlyeVA5T3V6WGtYNGQ5dXRJdnc3N2RhUmZoLzA2MHEvRGZvT1hMYmVjcGF5N011Sk9GZDJobXJqbHROSWR0NXdkUVhuTE9VemdNTWdSSWtkQWpoSTVDbktNeURHUTQwU09nNXdnY2dMa0pKR1RJS2VJbkFJNVRlUTB5QmtpWjBCTW9jZDEzbGtpWjBIT0VUa0hjcDdJZVpBTFJDNkFYQ1J5RWVRU2tVc2dsNGxjQnJsQzVBcklWU0pYUWE0UnVRWnluY2gxa0J0RWJvRGNKSElUNUJhUld5QzNpZHdHc2I0eXU5OXEyVHI2MEhGSG42bHltcmZPRHRxNmRYWUdBL1R3WGpBTWRWUzU3SmJHVytMZjNYdjRnRXVCbFQ2VkdtaUpQL2oycDUrN3Q5ZDE1MEFzdm84dFlyNWFMNk1BMUVMVzFHZ2ZTZnlkdGlXc25WTTk2eXBwUEpKQUxLUmRWY3ZycW96eVF3c1VTMkV0WWtpN0d0Yk9oYmFybjloYWh1VWxySDFzSkt0cW85ZDhEbHBnblIvYkl2NDdiVjFZZXhiVzhvVzFibUh0WUZoYnR4L3QyYWUyaWxFN0V0S09SRzFGMUZiRW9yWWlhaXVpdGlJV3RSVlJXL0c1MjRxMi9Xc3J2TUpVc0RodnpsUWdyTEcydmxXVm51WjNzRVpwa0h0Wi80QlNXZ3VVRklraEhrcUNTL0IrdDI4S0pYaFRjQ215VnQvTW9CUnBDbEdITnFiTk9CSmZVTGtjVmhLSGx0SlJpUnFWcUZHSit2OG9VYU5TSlNwVnZzUlNwWDMvU3BXd2NpSHNEeTFlY3NsL2pmcEdDOHc1T3U5bHpObE9BckhNcExlSVh3KzF3SEVTOG9jV1AvTzdQMnArUFNTQk9WKzlWbmtjVVZwZ3pwQmZRTjFDMlUyOU1PTzB3UFcyTXNHN3pmVzB3TGl3WDNoTFFack15VVZDeG9wckloWUk1SE9teHVVZUNZd2JuVktwdkJtbkJlK3N0MnJKbEhRa01HZCsyTTJaeW9zRTUyVlZiV1dSbDZiNHVKcm5IeWtGdzBxNlQvMnpUR2dwR0ZKNjd2bkxhVlFLUnFWZ0xDb0ZvMUl3RnBXQ1VTbTRSekQyZVV2QmpuMThHQjd5VU52UFpkeWVKK2JBMFFKSFJtTEEvd05IaGhZNE1rSWVGbnZGU1g4VkQ2NjF3SnlESTk2NEtVdEo4RHBIL09vaTF0a1VYRXVNMUN1RHFDV2FBdGRiMlBMWGg4MzF0TUE2RXhWL3VzZXNVd3VNR3krb1pmTndtZ1N1OTZIc0o1QXpMWkN6K1FSbm1RVG1URlhkQ2JOT0VwaXp1TWE1SnNFSCtCdTFZTXBFRXBoenRzSXhFaGdYOGhEZDd4dHozMDJhZFdxQjNWcko4WU41RXNoWlVNSHlrMTB0NENHVGF1UlIwMm14ditVQUh5TnhlWXo4eDh1RTZKaUtqcWt2NzVoNi9CZFNpaHY5MkRNQUFBPT0iLAogIGZpbHRlcl91cmw6ICIte3tmbC7lhajpg6jlnLDljLp9fS17e2ZsLuaXtumXtOaOkuW6j319LXt7Zmwu5YWo6YOo5Ymn5oOFfX0te3tmbC7lhajpg6jor63oqIB9fS17e2ZsLuWtl+avjeafpeaJvn19LS0tZnlwYWdlLS0te3tmbC7lhajpg6jml7bpl7R9fSIsCiAgY2xhc3NfcGFyc2U6ICIubmF2LW1lbnUtaXRlbXMmJmxpO2EmJlRleHQ7YSYmaHJlZjsoXFxkKykiLAogIOaQnOe0ojogIi5tb2R1bGUtaXRlbXMmJi5tb2R1bGUtc2VhcmNoLWl0ZW07aDMmJlRleHQ7aW1nJiZkYXRhLXNyYzsudmlkZW8tc2VyaWFsJiZUZXh0O2gzJiZhJiZocmVmOy52aWRlby1pbmZvLS1hLS1oMy0tc3Ryb25nJiZUZXh0IiwKfQ== \ No newline at end of file diff --git a/lib/胖虎影视(4).js b/lib/胖虎影视(4).js new file mode 100644 index 0000000..d140d21 --- /dev/null +++ b/lib/胖虎影视(4).js @@ -0,0 +1,46 @@ +var rule={ + title: "胖虎影视", + host: "https://physvod.com", + url: "/vodshow/fyclassfyfilter/page/fypage.html", + searchUrl: "", + searchable: 1, + quickSearch: 0, + filterable: 1, + + filter_url: "{{fl.地区}}{{fl.排序}}{{fl.剧情}}{{fl.语言}}{{fl.字母}}{{fl.年份}}", + filter:{ +"1":[{"key":"剧情","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/儿童"},{"n":"网络电影","v":"/class/网络电影"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":"/vodshow/1.html"},{"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":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"法语","v":"/lang/法语"},{"n":"德语","v":"/lang/德语"},{"n":"其它","v":"/lang/其它"}]},{"key":"年份","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"}]},{"key":"字母","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":"排序","name":"排序","value":[{"n":"时间排序","v":"/by/time"},{"n":"人气排序","v":"/by/hits"},{"n":"评分排序","v":"/by/score"}]}], +"2":[{"key":"剧情","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/其他"}]},{"key":"地区","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/其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"法语","v":"/lang/法语"},{"n":"德语","v":"/lang/德语"},{"n":"其它","v":"/lang/其它"}]},{"key":"年份","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"}]},{"key":"字母","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":"排序","name":"排序","value":[{"n":"时间排序","v":"/by/time"},{"n":"人气排序","v":"/by/hits"},{"n":"评分排序","v":"/by/score"}]}], +"3":[{"key":"剧情","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/求职"}]},{"key":"地区","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/其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"/lang/国语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"日语","v":"/lang/日语"},{"n":"其它","v":"/lang/其它"}]},{"key":"年份","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"}]},{"key":"字母","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":"排序","name":"排序","value":[{"n":"时间排序","v":"/by/time"},{"n":"人气排序","v":"/by/hits"},{"n":"评分排序","v":"/by/score"}]}], +"4":[{"key":"剧情","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/其他"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"日本","v":"/area/日本"},{"n":"美国","v":"/area/美国"},{"n":"其他","v":"/area/其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":"/vodshow/4.html"},{"n":"国语","v":"/lang/国语"},{"n":"日语","v":"/lang/日语"},{"n":"英语","v":"/lang/英语"},{"n":"粤语","v":"/lang/粤语"},{"n":"闽南语","v":"/lang/闽南语"},{"n":"韩语","v":"/lang/韩语"},{"n":"其它","v":"/lang/其它"}]},{"key":"年份","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"}]},{"key":"字母","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":"排序","name":"排序","value":[{"n":"时间排序","v":"/by/time"},{"n":"人气排序","v":"/by/hits"},{"n":"评分排序","v":"/by/score"}]}], +"7":[{"key":"字母","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":"排序","name":"排序","value":[{"n":"时间排序","v":"/by/time"},{"n":"人气排序","v":"/by/hits"},{"n":"评分排序","v":"/by/score"}]}], + + +}, + +cate_exclude: "明星库", + + searchable:5, + quickSearch:0, + headers:{ + 'User-Agent':'MOBILE_UA' + }, + timeout:5000, + class_parse: 'ul.navbar-items&&a;a&&Text;a&&href;(\\d+)', + play_parse:true, + + 推荐: 'body&&.module-item;.a&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href', + 一级:'body&&.module-item;.a&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href', + 二级: { + "title": "h1&&Text", + "img": "..module-item-pic&&img&&data-original", + "desc": ".module-info-item:eq(4)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(1)&&Text;li.col-xs-12--span:eq(0)&&Text;;", + "content": ".show-desc&&Text", + "tabs": "#y-playList&&.tab-item", + "lists": ".module-list:eq(#id) a", + }, + + searchUrl:'/phsch/page/fypage/wd/**.html', + detailUrl:'/index.php/vod/detail/id/fyid.html', //非必填,二级详情拼接链接 + 搜索:'body&&.module-card-item;.module-card-item-title&&Text;img&&data-original;.module-info-item-content&&Text;a&&href', +} \ No newline at end of file diff --git a/lib/胖虎影视.js b/lib/胖虎影视.js new file mode 100644 index 0000000..11b0267 --- /dev/null +++ b/lib/胖虎影视.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/腾云驾雾[官].js b/lib/腾云驾雾[官].js new file mode 100644 index 0000000..accfe6b --- /dev/null +++ b/lib/腾云驾雾[官].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+iFvuS6kempvumbvlvlrphdJywKICAgIGhvc3Q6ICdodHRwczovL3YuJTcxJTcxLmNvbScsCiAgICAvLyBob21lVXJsOiAnL3gvYnUvcGFnZXNoZWV0L2xpc3Q/X2FsbD0xJmFwcGVuZD0xJmNoYW5uZWw9Y2hvaWNlJmxpc3RwYWdlPTEmb2Zmc2V0PTAmcGFnZXNpemU9MjEmaWFyZWE9LTEmc29ydD0xOCcsCiAgICBob21lVXJsOiAnL3gvYnUvcGFnZXNoZWV0L2xpc3Q/X2FsbD0xJmFwcGVuZD0xJmNoYW5uZWw9Y2FydG9vbiZsaXN0cGFnZT0xJm9mZnNldD0wJnBhZ2VzaXplPTIxJmlhcmVhPS0xJnNvcnQ9MTgnLAogICAgZGV0YWlsVXJsOiAnaHR0cHM6Ly9ub2RlLnZpZGVvLiU3MSU3MS5jb20veC9hcGkvZmxvYXRfdmluZm8yP2NpZD1meWlkJywKICAgIHNlYXJjaFVybDogJy94L3NlYXJjaC8/cT0qKiZzdGFnPWZ5cGFnZScsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgZmlsdGVyYWJsZTogMSwKICAgIG11bHRpOiAxLAogICAgLy8gdXJsOicvY2hhbm5lbC9meWNsYXNzP2xpc3RwYWdlPWZ5cGFnZSZjaGFubmVsPWZ5Y2xhc3Mmc29ydD0xOCZfYWxsPTEnLAogICAgdXJsOiAnL3gvYnUvcGFnZXNoZWV0L2xpc3Q/X2FsbD0xJmFwcGVuZD0xJmNoYW5uZWw9ZnljbGFzcyZsaXN0cGFnZT0xJm9mZnNldD0oKGZ5cGFnZS0xKSoyMSkmcGFnZXNpemU9MjEmaWFyZWE9LTEnLAogICAgLy8gZmlsdGVyX3VybDogJ3NvcnQ9e3tmbC5zb3J0IG9yIDE4fX0meWVhcj17e2ZsLnllYXJ9fSZwYXk9e3tmbC5wYXl9fScsCiAgICBmaWx0ZXJfdXJsOiAnc29ydD17e2ZsLnNvcnQgb3IgNzV9fSZ5ZWFyPXt7ZmwueWVhcn19JnBheT17e2ZsLnBheX19JywKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUErMlV6VXJEUUJDQTMyWE9FWkxVSnJHdklqMHNhYURCTmlzeEJrSUpDRzNGaTRvZXBJZzNFUW9pZXFpSCt2TTIzWnEraFJ1YVpMWjRjZTl6Mi9sbWQyZDIrTmdSK0gwZStnRjBEa2R3RkdUUWdSTWVKMkJBeElhU3d2cnFWbnhjeXpobGc5UHR0cWpFRDJjLzQ1Y1N5OER5SURjYXZyNTdxL2xCdzhYVGQvRTZxYm5UOE0zelRGeWM3MlJ0Qy9KdW1kKzJjOHd5N0taNG54U0w1Wjl1eEhTK0djK3I4M3NXVnAxZVZ0dGw0RGx1azFoOTNZdWJXWlZ3ZHVwbEFZdXhvRmd1VnArUC95NW9tL1orL1l4eXFmQVc4cGJLYmVTMnlpM2tPL2VieUUyRnkxblhYQm03RER6a25zcGQ1SzdLSGVTT3l0dkkyK1hBdWdZa0tXbEQybWhyTStScFNCOE9tYU52VHNyaU1FZ3ljb2ZjMFhiSFozSENlVVR1a0R2Njd2VERRWS9NSVhPMHplbHhuNU00Skk2bU9Qa3Znc3dTRXBnUEFBQT0nLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1BDX1VBJwogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICAvLyBjbGFzc19wYXJzZTonLnNpdGVfY2hhbm5lbCBhO2EmJlRleHQ7YSYmaHJlZjtjaGFubmVsLyguKiknLAogICAgY2F0ZV9leGNsdWRlOiAn5Lya5ZGYfOa4uOaIj3zlhajpg6gnLAogICAgY2xhc3NfbmFtZTogJ+eyvumAiSbnlLXop4bliacm55S15b2xJue7vOiJuibliqjmvKsm5bCR5YS/Jue6quW9leeJhycsCiAgICBjbGFzc191cmw6ICdjaG9pY2UmdHYmbW92aWUmdmFyaWV0eSZjYXJ0b29uJmNoaWxkJmRvY28nLAogICAgbGltaXQ6IDIwLAogICAgLy8gcGxheV9wYXJzZTp0cnVlLAogICAgLy8g5omL5Yqo6LCD55So6Kej5p6Q6K+35rGCanNvbueahHVybCzmraRsYXp55LiN5pa55L6/CiAgICBsYXp5OiAnanM6aW5wdXQ9Imh0dHBzOi8vY2FjaGUuanNvbi5pY3UvaG9tZS9hcGk/dHlwZT15cyZ1aWQ9MjkyNzk2JmtleT1mbm9yeUFCREVGSk5QUVYyNjkmdXJsPSIraW5wdXQuc3BsaXQoIj8iKVswXTtsb2coaW5wdXQpO2xldCBodG1sPUpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkpO2xvZyhodG1sKTtpbnB1dD1odG1sLnVybHx8aW5wdXQnLAogICAg5o6o6I2QOiAnLmxpc3RfaXRlbTtpbWcmJmFsdDtpbWcmJnNyYzthJiZUZXh0O2EmJmRhdGEtZmxvYXQnLAogICAg5LiA57qnOiAnLmxpc3RfaXRlbTtpbWcmJmFsdDtpbWcmJnNyYzthJiZUZXh0O2EmJmRhdGEtZmxvYXQnLAogICAg5LqM57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIFZPRCA9IHt9OwogICAgICAgIGxldCBkID0gW107CiAgICAgICAgbGV0IHZpZGVvX2xpc3QgPSBbXTsKICAgICAgICBsZXQgdmlkZW9fbGlzdHMgPSBbXTsKICAgICAgICBsZXQgbGlzdCA9IFtdOwogICAgICAgIGxldCBRWk91dHB1dEpzb247CiAgICAgICAgbGV0IGh0bWwgPSBmZXRjaChpbnB1dCwgZmV0Y2hfcGFyYW1zKTsKICAgICAgICBsZXQgc291cmNlSWQgPSAvZ2V0X3BsYXlzb3VyY2UvLnRlc3QoaW5wdXQpID8gaW5wdXQubWF0Y2goL2lkPShcZCo/KSYvKVsxXSA6IGlucHV0LnNwbGl0KCJjaWQ9IilbMV07CiAgICAgICAgbGV0IGNpZCA9IHNvdXJjZUlkOwogICAgICAgIGxldCBkZXRhaWxVcmwgPSAiaHR0cHM6Ly92LiU3MSU3MS5jb20vZGV0YWlsL20vIiArIGNpZCArICIuaHRtbCI7CiAgICAgICAgbG9nKCLor6bmg4XpobU6IiArIGRldGFpbFVybCk7CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIHBkID0ganNwLnBkOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgVk9EID0gewogICAgICAgICAgICAgICAgdm9kX3VybDogaW5wdXQsCiAgICAgICAgICAgICAgICB2b2RfbmFtZToganNvbi5jLnRpdGxlLAogICAgICAgICAgICAgICAgdHlwZV9uYW1lOiBqc29uLnR5cC5qb2luKCIsIiksCiAgICAgICAgICAgICAgICB2b2RfYWN0b3I6IGpzb24ubmFtLmpvaW4oIiwiKSwKICAgICAgICAgICAgICAgIHZvZF95ZWFyOiBqc29uLmMueWVhciwKICAgICAgICAgICAgICAgIHZvZF9jb250ZW50OiBqc29uLmMuZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczoganNvbi5yZWMsCiAgICAgICAgICAgICAgICB2b2RfcGljOiB1cmxqb2luMihpbnB1dCwganNvbi5jLnBpYykKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgbG9nKCLop6PmnpDniYflkI3mtbfmiqXnrYnln7rnoYDkv6Hmga/lj5HnlJ/plJnor686IiArIGUubWVzc2FnZSkKICAgICAgICB9CiAgICAgICAgaWYgKC9nZXRfcGxheXNvdXJjZS8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgZXZhbChodG1sKTsKICAgICAgICAgICAgbGV0IGluZGV4TGlzdCA9IFFaT3V0cHV0SnNvbi5QbGF5bGlzdEl0ZW0uaW5kZXhMaXN0OwogICAgICAgICAgICBpbmRleExpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXQpIHsKICAgICAgICAgICAgICAgIGxldCBkYXRhVXJsID0gImh0dHBzOi8vcy52aWRlby5xcS5jb20vZ2V0X3BsYXlzb3VyY2U/aWQ9IiArIHNvdXJjZUlkICsgIiZwbGF0PTImdHlwZT00JmRhdGFfdHlwZT0zJnJhbmdlPSIgKyBpdCArICImdmlkZW9fdHlwZT0xMCZwbG5hbWU9cXEmb3R5cGU9anNvbiI7CiAgICAgICAgICAgICAgICBldmFsKGZldGNoKGRhdGFVcmwsIGZldGNoX3BhcmFtcykpOwogICAgICAgICAgICAgICAgbGV0IHZkYXRhID0gUVpPdXRwdXRKc29uLlBsYXlsaXN0SXRlbS52aWRlb1BsYXlMaXN0OwogICAgICAgICAgICAgICAgdmRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdGVtLnBpYywKICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS5lcGlzb2RlX251bWJlciArICJcdFx0XHTmkq3mlL7ph4/vvJoiICsgaXRlbS50aGlyZExpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS5wbGF5VXJsCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmlkZW9fbGlzdHMgPSB2aWRlb19saXN0cy5jb25jYXQodmRhdGEpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgICAgICB2aWRlb19saXN0cyA9IGpzb24uYy52aWRlb19pZHM7CiAgICAgICAgICAgIGxldCB1cmwgPSAiaHR0cHM6Ly92LnFxLmNvbS94L2NvdmVyLyIgKyBzb3VyY2VJZCArICIuaHRtbCI7CiAgICAgICAgICAgIGlmICh2aWRlb19saXN0cy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgIGxldCB2aWQgPSB2aWRlb19saXN0c1swXTsKICAgICAgICAgICAgICAgIHVybCA9ICJodHRwczovL3YucXEuY29tL3gvY292ZXIvIiArIGNpZCArICIvIiArIHZpZCArICIuaHRtbCI7CiAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgIHRpdGxlOiAi5Zyo57q/5pKt5pS+IiwKICAgICAgICAgICAgICAgICAgICB1cmw6IHVybAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSBlbHNlIGlmICh2aWRlb19saXN0cy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZGVvX2xpc3RzLmxlbmd0aDsgaSArPSAzMCkgewogICAgICAgICAgICAgICAgICAgIHZpZGVvX2xpc3QucHVzaCh2aWRlb19saXN0cy5zbGljZShpLCBpICsgMzApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmlkZW9fbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdCwgaWRleCkgewogICAgICAgICAgICAgICAgICAgIGxldCBvX3VybCA9ICJodHRwczovL3VuaW9uLnZpZGVvLnFxLmNvbS9mY2dpLWJpbi9kYXRhP290eXBlPWpzb24mdGlkPTE4MDQmYXBwaWQ9MjAwMDEyMzgmYXBwa2V5PTZjMDNiYmU5NjU4NDQ4YTQmdW5pb25fcGxhdGZvcm09MSZpZGxpc3Q9IiArIGl0LmpvaW4oIiwiKTsKICAgICAgICAgICAgICAgICAgICBsZXQgb19odG1sID0gZmV0Y2gob191cmwsIGZldGNoX3BhcmFtcyk7CiAgICAgICAgICAgICAgICAgICAgZXZhbChvX2h0bWwpOwogICAgICAgICAgICAgICAgICAgIFFaT3V0cHV0SnNvbi5yZXN1bHRzLmZvckVhY2goZnVuY3Rpb24gKGl0MSkgewogICAgICAgICAgICAgICAgICAgICAgICBpdDEgPSBpdDEuZmllbGRzOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gImh0dHBzOi8vdi5xcS5jb20veC9jb3Zlci8iICsgY2lkICsgIi8iICsgaXQxLnZpZCArICIuaHRtbCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXQxLnRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaXQxLnBpYzE2MHg5MC5yZXBsYWNlKCIvMTYwIiwgIiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogaXQxLnZpZGVvX2NoZWNrdXBfdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogaXQxLmNhdGVnb3J5X21hcCAmJiBpdDEuY2F0ZWdvcnlfbWFwLmxlbmd0aCA+IDEgPyBpdDEuY2F0ZWdvcnlfbWFwWzFdIDogIiIKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBsZXQgeWcgPSBkLmZpbHRlcihmdW5jdGlvbiAoaXQpIHsKICAgICAgICAgICAgcmV0dXJuIGl0LnR5cGUgJiYgaXQudHlwZSAhPT0gIuato+eJhyIKICAgICAgICB9KTsKICAgICAgICBsZXQgenAgPSBkLmZpbHRlcihmdW5jdGlvbiAoaXQpIHsKICAgICAgICAgICAgcmV0dXJuICEoaXQudHlwZSAmJiBpdC50eXBlICE9PSAi5q2j54mHIikKICAgICAgICB9KTsKICAgICAgICBWT0Qudm9kX3BsYXlfZnJvbSA9IHlnLmxlbmd0aCA8IDEgPyAicXEiIDogInFxJCQkcXEg6aKE5ZGK5Y+K6Iqx57WuIjsKICAgICAgICBWT0Qudm9kX3BsYXlfdXJsID0geWcubGVuZ3RoIDwgMSA/IGQubWFwKGZ1bmN0aW9uIChpdCkgewogICAgICAgICAgICByZXR1cm4gaXQudGl0bGUgKyAiJCIgKyBpdC51cmwKICAgICAgICB9KS5qb2luKCIjIikgOiBbenAsIHlnXS5tYXAoZnVuY3Rpb24gKGl0KSB7CiAgICAgICAgICAgIHJldHVybiBpdC5tYXAoZnVuY3Rpb24gKGl0cykgewogICAgICAgICAgICAgICAgcmV0dXJuIGl0cy50aXRsZSArICIkIiArIGl0cy51cmwKICAgICAgICAgICAgfSkuam9pbigiIyIpCiAgICAgICAgfSkuam9pbigiJCQkIik7CiAgICB9KSwKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgZCA9IFtdOwogICAgICAgIHBkZmEgPSBqc3AucGRmYTsKICAgICAgICBwZGZoID0ganNwLnBkZmg7CiAgICAgICAgcGQgPSBqc3AucGQ7CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQgYmFzZUxpc3QgPSBwZGZhKGh0bWwsICJib2R5JiYucmVzdWx0X2l0ZW1fdiIpOwogICAgICAgIGJhc2VMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0KSB7CiAgICAgICAgICAgIGxldCBsb25nVGV4dCA9IHBkZmgoaXQsICIucmVzdWx0X3RpdGxlJiZhJiZUZXh0Iik7CiAgICAgICAgICAgIGxldCBzaG9ydFRleHQgPSBwZGZoKGl0LCAiLnR5cGUmJlRleHQiKTsKICAgICAgICAgICAgbGV0IGZyb21UYWcgPSBwZGZoKGl0LCAiLnJlc3VsdF9zb3VyY2UmJlRleHQiKTsKICAgICAgICAgICAgbGV0IHNjb3JlID0gcGRmaChpdCwgIi5maWd1cmVfaW5mbyYmVGV4dCIpOwogICAgICAgICAgICBsZXQgY29udGVudCA9IHBkZmgoaXQsICIuZGVzY190ZXh0JiZUZXh0Iik7CiAgICAgICAgICAgIGxldCB1cmwgPSBwZGZoKGl0LCAiLnJlc3VsdF90aXRsZSYmYSYmaHJlZiIpOwogICAgICAgICAgICBsZXQgaW1nID0gcGQoaXQsICIuZmlndXJlX3BpYyYmc3JjIik7CiAgICAgICAgICAgIHVybCA9ICJodHRwczovL25vZGUudmlkZW8ucXEuY29tL3gvYXBpL2Zsb2F0X3ZpbmZvMj9jaWQ9IiArIHVybC5tYXRjaCgvLipcLyguKj8pXC5odG1sLylbMV07CiAgICAgICAgICAgIGxvZyhzaG9ydFRleHQgKyAifCIgKyB1cmwpOwogICAgICAgICAgICBpZiAoZnJvbVRhZy5tYXRjaCgv6IW+6K6vLykpIHsKICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxvbmdUZXh0LnNwbGl0KHNob3J0VGV4dClbMF0sCiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWcsCiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogY29udGVudCwKICAgICAgICAgICAgICAgICAgICBkZXNjOiBzaG9ydFRleHQgKyAiICIgKyBzY29yZQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAp9 \ No newline at end of file diff --git a/lib/臭蛋蛋.js b/lib/臭蛋蛋.js new file mode 100644 index 0000000..5ee46f4 --- /dev/null +++ b/lib/臭蛋蛋.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn6Iet6JuL6JuLJywKICAgIGhvc3Q6ICdodHRwczovL2NkZHlzMS5tZScsCiAgICB1cmw6ICIvdm9kc2hvdy9meWNsYXNzZnlmaWx0ZXIuaHRtbCIsCiAgICBkZXRhaWxVcmw6ICcvdm9kZGV0YWlsL2Z5aWQuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0qKicsCiAgICDmkJzntKI6ICdqc29uOmxpc3Q7bmFtZTtwaWM7ZW47aWQnLAogICAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zJiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykuaHRtbCcsCiAgICBjYXRlX2V4Y2x1ZGU6ICfku4rml6Xmm7TmlrB854Ot5pCc5qacJywKICAgIHRhYl9leGNsdWRlOiAn5o6S5bqPJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICJINHNJQUFBQUFBQUFBKzJaM1U0YlJ4VEgzOFhYWE13U2t0QzhTcFdMcUVKcWxEU1ZtclJTRlNFQnhzWTJ4RFlJN0xnMm4rSERVR3dNdUFUV3NmMHlPN1BydCtoNFo4NkgxV2E3VFdtbFNudm4zems3czNQT3pzei96UGh0eWtrOStmcHQ2c1hjejZrbktaay9VZWxNYWlyMTZ0bDNjNXgvZXZieXg3bnd3VmRqYzZZNVNqZkhaZzJwK1NscnJUVDA4OVpxQVh4Kzd0SjJSQUErdFZoV0N4WHJzNEI5RnBwZXZ3RjlHc0ErVDlibFhRLzZOSUR0Y09BRStMN2NlOC9Ody9zTWdDOW9IY3UxTSt1emdPOHJYUGg5OEZsZzQvUTNlelRPTWFEdmFJWEdhUUhIMGpyMkJuc3dGZ1BZTHJzeHFwMUNPd1BZYnVkTWp4emFHWWlUVDdWMDdsZld3V2NBZmVtQ1d2b0ZmQVl3OWw1SlptNGhkZ1BnRzIxdnFQZEgxbWNCKzZ5c0JIa1gralNBOFEzYS91WnZzbjhKSVNMakU2WEQ0QU4rUlFQb0syWmw2UXA4QnZBckRzdjZHOEJYTkVCWmJhanRkY3hxQ09oYkh2cS9RaVFXTUFQOWRiL1htQmp3aEduKzZmaEp1NHdhSGJubXNtVUVIR3NaSFo2TWFsa1loQUZNOVhGTjNWNUFxZzFRc2pycWJvREpDZ0VIUHlqS2VoK0diUUEvMGZtSnRzQW5Nb0MrNnBGcW5JUFBBSTVsOTVUNnRJRHRyanZrczREanpOeDRQWmllRm5qeWdvdFcwRnlnNUNISFNsNjlyNStIemczZ3JGaTlKSjhGVE5EVklma3NZS0RWdm54WEpUY3hTd1Z6RzJBcEpKOEZTdE1XOHhtZzFmR1JSV0tBcFZDMjA1VENNVXpNdjd1dTErdXorUWNjSjRYVFl2cUJ0WVUvbVgyYTdOUGM3cERkNFhaQmRzSHN6bGRvMXorWmZaYnNzOXorbU95UHVmMFIyUjl4KzBPeVArVDJHYkxQY0R2RjYvQjRIWXJYNGZFNkZLL0Q0M1VvWG9mSEt5aGV3ZU1WRksvZzhRcUtWL0I0QmNVcmVMeUM0aFU4WGtIeENoNnZvSGdGajFkUXZJTEhLeWhld2VNVkZLLyt5U2VnS201SXQwUVRFSGx5QXFycXphamFKYWMydlhtdUc4QXJQTmRWbmMwSi83ZlAzN3ltRlgyeExIUFpDZi9yYjc3L1lXNDhscWRUcWVsN3Eyd2lkQ2lxbW9oU1JybDRJOU13YWd0eEtpblp2cEV1N2dzR1lsWW9uNjJrb2lxVXFFb3FTb09qS2didmJwODAyQUpWSVJsVkE0bXpnTy9ieWxMVlk0SHBNK1hNUWx6SitXZDZuYzNvNTdHZ0NDR09SbjZwbGtkcGNxVE9SMml5VmtQeVdhQVNyaU1MZTNKN0g2czQ0RVRSLzZEb2lUS25FbVZPbFBtdmxQbkJmU256YUNIdm55ekFPalhBbFdSNWx5bUpCaHhmZXhoMGNyQnpHTUIyR3kxVkFOVzJRR3MvbzI1QjFTelFubkh0M1pWeHp3aUJiY3lqRHpBV0MraHp6MlI3QjN3RzhIMzFLM1orTm9EdE5uZFZGKzgvREdDNzIxdVZLM251QnAyREoweVloKzZCMW1iSWd3SHM0M0lwV0Z5RDFnYitFOVhVU3FnMUQ0Y2RBdHQ4OVhaTW0rOFlJayt5aVE0bE9wVG9VS0pEZjZwRE0vZWxRMUYzMFg2NkZleURSbG5BTlZ4cyttVzQ3TE9BdnZLT2Y0NTN0UVpvKy96ODNYQlEzZzZLY0NLMWdIM3U3Y3M2N2hrRzRwd1FWY05sOTgwRzhIMFJ0NjFScDJQWjBXbnF3dnNNY04vUk5mTnB3SHdlRHJ4UGNFOXRnVTZrdXpKWGgzWUdhSzVjeVJib3N3WHNzMTVRTmRCWkM1U1hTem1zWWw1Q2lGTmovTHVuem5yZmMvR0t3RUNjRTJMVWJXOXlqa3YwTTlIUFJELy94amx1OXQ2dVdDT3VFaU92SUtPdU5RdE5QMzlLdmpId1ExZC9DN1lWQTVpVVQzdEJHODRmRm5qQ0tpc29JaUhFT1pEcHpaMkUzZ0p1UkpVVnVZWi8yQnFJYytDVTJicm5ybUlSRUFKK3VKVXpmL2tHdGxRRGNRUlVGUS84N2dFV0pDSHdJcWQxeklvY0RaRUgzUC90WDZMWFcveXFkQ3YyVmVrWC9sMHFCeC9KWjRIR0V2Rlg2cnVPZE9HRFdNQjJ5eVdkS1puRHN6SXlSbkkwOUVzdFAxK0RZSkJwQWUycDFhRnVobXNJbUtadWNqbWNGQlZKVVpFVUZmZFZWTXovRG9DZTluS1NKZ0FBIiwKICAgIGZpbHRlcl91cmw6ICIte3tmbC7lnLDljLp9fS17e2ZsLuaOkuW6j319LXt7Zmwu5Ymn5oOFfX0te3tmbC7or63oqIB9fS0tLS1meXBhZ2UtLS17e2ZsLuW5tOS7vX19Igp9 \ No newline at end of file diff --git a/lib/至臻[盘].js b/lib/至臻[盘].js new file mode 100644 index 0000000..f9d63eb --- /dev/null +++ b/lib/至臻[盘].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/花子动漫[漫].js b/lib/花子动漫[漫].js new file mode 100644 index 0000000..2808ae0 --- /dev/null +++ b/lib/花子动漫[漫].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/荐片[优].js b/lib/荐片[优].js new file mode 100644 index 0000000..c9af5f8 --- /dev/null +++ b/lib/荐片[优].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/菜狗[官].js b/lib/菜狗[官].js new file mode 100644 index 0000000..0564fb8 --- /dev/null +++ b/lib/菜狗[官].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTon6I+c54uXW+WumF0nLAogICAgaG9zdDonaHR0cHM6Ly93YXB0di5zb2dvdS5jb20nLAogICAgaG9tZVVybDonJywKICAgIHNlYXJjaFVybDonL2ZpbG0vcmVzdWx0P2llPXV0ZjgmcXVlcnk9KionLAogICAgc2VhcmNoYWJsZToyLAogICAgcXVpY2tTZWFyY2g6MCwKICAgIGZpbHRlcmFibGU6MSwKICAgIG11bHRpOjEsCiAgICAvLyDliIbnsbvpk77mjqVmeXBhZ2Xlj4LmlbDmlK/mjIEx5LiqKCnooajovr7lvI8KICAgIHVybDonL25hcGkvdmlkZW8vY2xhc3NsaXN0P2FidGVzdD0wJmlwbG9jPUNOMTMwNCZzcHZlcj0mbGlzdFRhYj1meWNsYXNzJmZpbHRlcj0mc3RhcnQ9KChmeXBhZ2UtMSkqMTUpJmxlbj0xNSZmcj1maWx0ZXInLAogICAgZmlsdGVyX3VybDonc3R5bGU9e3tmbC5zdHlsZX19JnpvbmU9e3tmbC56b25lfX0meWVhcj17e2ZsLnllYXJ9fSZmZWU9e3tmbC5mZWV9fSZvcmRlcj17e2ZsLm9yZGVyfX0nLAogICAgaGVhZGVyczp7CiAgICAgICAgJ1VzZXItQWdlbnQnOidQQ19VQScKICAgIH0sCiAgICB0aW1lb3V0OjUwMDAsCiAgICBjbGFzc19uYW1lOifnlLXop4bliacm55S15b2xJuWKqOa8qybnu7zoibom57qq5b2V54mHJywKICAgIGNsYXNzX3VybDondGVsZXBsYXkmZmlsbSZjYXJ0b29uJnR2c2hvdyZkb2N1bWVudGFyeScsCiAgICBmaWx0ZXI6eyd0ZWxlcGxheSc6IFt7J2tleSc6ICdzdHlsZScsICduYW1lJzogJ+exu+WeiycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfniLHmg4UnLCAndic6ICfniLHmg4UnfSwgeyduJzogJ+WWnOWJpycsICd2JzogJ+WWnOWJpyd9LCB7J24nOiAn6YO95biCJywgJ3YnOiAn6YO95biCJ30sIHsnbic6ICfmgqznlpEnLCAndic6ICfmgqznlpEnfSwgeyduJzogJ+WPpOijhScsICd2JzogJ+WPpOijhSd9LCB7J24nOiAn5YG25YOPJywgJ3YnOiAn5YG25YOPJ30sIHsnbic6ICfniq/nvaonLCAndic6ICfniq/nvaonfSwgeyduJzogJ+WOhuWPsicsICd2JzogJ+WOhuWPsid9LCB7J24nOiAn5oiY5LqJJywgJ3YnOiAn5oiY5LqJJ30sIHsnbic6ICfmrabkvqAnLCAndic6ICfmrabkvqAnfSwgeyduJzogJ+itpuWMqicsICd2JzogJ+itpuWMqid9LCB7J24nOiAn56eR5bm7JywgJ3YnOiAn56eR5bm7J30sIHsnbic6ICflpYflubsnLCAndic6ICflpYflubsnfSwgeyduJzogJ+iwjeaImCcsICd2JzogJ+iwjeaImCd9LCB7J24nOiAn5Yac5p2RJywgJ3YnOiAn5Yac5p2RJ30sIHsnbic6ICflhbbku5YnLCAndic6ICflhbbku5YnfV19LCB7J2tleSc6ICd6b25lJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WGheWcsCcsICd2JzogJ+WGheWcsCd9LCB7J24nOiAn6aaZ5rivJywgJ3YnOiAn6aaZ5rivJ30sIHsnbic6ICflj7Dmub4nLCAndic6ICflj7Dmub4nfSwgeyduJzogJ+mfqeWbvScsICd2JzogJ+mfqeWbvSd9LCB7J24nOiAn5rOw5Zu9JywgJ3YnOiAn5rOw5Zu9J30sIHsnbic6ICfml6XmnKwnLCAndic6ICfml6XmnKwnfSwgeyduJzogJ+e+juWbvScsICd2JzogJ+e+juWbvSd9LCB7J24nOiAn6Iux5Zu9JywgJ3YnOiAn6Iux5Zu9J30sIHsnbic6ICfmlrDliqDlnaEnLCAndic6ICfmlrDliqDlnaEnfSwgeyduJzogJ+WFtuS7licsICd2JzogJ+WFtuS7lid9XX0sIHsna2V5JzogJ3llYXInLCAnbmFtZSc6ICflubTku6MnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAnMjAyMycsICd2JzogJzIwMjMnfSwgeyduJzogJzIwMjInLCAndic6ICcyMDIyJ30sIHsnbic6ICcyMDIxJywgJ3YnOiAnMjAyMSd9LCB7J24nOiAnMjAyMCcsICd2JzogJzIwMjAnfSwgeyduJzogJzIwMTknLCAndic6ICcyMDE5J30sIHsnbic6ICcyMDE4JywgJ3YnOiAnMjAxOCd9LCB7J24nOiAnMjAxNycsICd2JzogJzIwMTcnfSwgeyduJzogJzIwMTYnLCAndic6ICcyMDE2J30sIHsnbic6ICcyMDE1JywgJ3YnOiAnMjAxNSd9LCB7J24nOiAnMjAxNCcsICd2JzogJzIwMTQnfSwgeyduJzogJ+abtOaXqScsICd2JzogJ+abtOaXqSd9XX0sIHsna2V5JzogJ2ZlZScsICduYW1lJzogJ+i1hOa6kCcsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmraPniYcnLCAndic6ICfmraPniYcnfSwgeyduJzogJ+WFjei0ueato+eJhycsICd2JzogJ+WFjei0ueato+eJhyd9LCB7J24nOiAn5LuY6LS55q2j54mHJywgJ3YnOiAn5LuY6LS55q2j54mHJ31dfSwgeydrZXknOiAnb3JkZXInLCAnbmFtZSc6ICfmjpLluo8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5pyA5pawJywgJ3YnOiAn5pyA5pawJ30sIHsnbic6ICflpb3or4QnLCAndic6ICflpb3or4QnfV19XSwgJ2ZpbG0nOiBbeydrZXknOiAnc3R5bGUnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5Zac5YmnJywgJ3YnOiAn5Zac5YmnJ30sIHsnbic6ICfniLHmg4UnLCAndic6ICfniLHmg4UnfSwgeyduJzogJ+WKqOS9nCcsICd2JzogJ+WKqOS9nCd9LCB7J24nOiAn5oGQ5oCWJywgJ3YnOiAn5oGQ5oCWJ30sIHsnbic6ICfnp5HlubsnLCAndic6ICfnp5HlubsnfSwgeyduJzogJ+aDiuaCmicsICd2JzogJ+aDiuaCmid9LCB7J24nOiAn54qv572qJywgJ3YnOiAn54qv572qJ30sIHsnbic6ICflpYflubsnLCAndic6ICflpYflubsnfSwgeyduJzogJ+aImOS6iScsICd2JzogJ+aImOS6iSd9LCB7J24nOiAn5oKs55aRJywgJ3YnOiAn5oKs55aRJ30sIHsnbic6ICfliqjnlLsnLCAndic6ICfliqjnlLsnfSwgeyduJzogJ+aWh+iJuicsICd2JzogJ+aWh+iJuid9LCB7J24nOiAn5Lyg6K6wJywgJ3YnOiAn5Lyg6K6wJ30sIHsnbic6ICfmrYzoiJ4nLCAndic6ICfmrYzoiJ4nfSwgeyduJzogJ+WPpOijhScsICd2JzogJ+WPpOijhSd9LCB7J24nOiAn6K2m5YyqJywgJ3YnOiAn6K2m5YyqJ30sIHsnbic6ICflhbbku5YnLCAndic6ICflhbbku5YnfV19LCB7J2tleSc6ICd6b25lJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WGheWcsCcsICd2JzogJ+WGheWcsCd9LCB7J24nOiAn6aaZ5rivJywgJ3YnOiAn6aaZ5rivJ30sIHsnbic6ICflj7Dmub4nLCAndic6ICflj7Dmub4nfSwgeyduJzogJ+mfqeWbvScsICd2JzogJ+mfqeWbvSd9LCB7J24nOiAn5rOw5Zu9JywgJ3YnOiAn5rOw5Zu9J30sIHsnbic6ICfml6XmnKwnLCAndic6ICfml6XmnKwnfSwgeyduJzogJ+e+juWbvScsICd2JzogJ+e+juWbvSd9LCB7J24nOiAn6Iux5Zu9JywgJ3YnOiAn6Iux5Zu9J30sIHsnbic6ICfmlrDliqDlnaEnLCAndic6ICfmlrDliqDlnaEnfSwgeyduJzogJ+WFtuS7licsICd2JzogJ+WFtuS7lid9XX0sIHsna2V5JzogJ3llYXInLCAnbmFtZSc6ICflubTku6MnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAnMjAyMycsICd2JzogJzIwMjMnfSwgeyduJzogJzIwMjInLCAndic6ICcyMDIyJ30sIHsnbic6ICcyMDIxJywgJ3YnOiAnMjAyMSd9LCB7J24nOiAnMjAyMCcsICd2JzogJzIwMjAnfSwgeyduJzogJzIwMTknLCAndic6ICcyMDE5J30sIHsnbic6ICcyMDE4JywgJ3YnOiAnMjAxOCd9LCB7J24nOiAnMjAxNycsICd2JzogJzIwMTcnfSwgeyduJzogJzIwMTYnLCAndic6ICcyMDE2J30sIHsnbic6ICcyMDE1JywgJ3YnOiAnMjAxNSd9LCB7J24nOiAnMjAxNCcsICd2JzogJzIwMTQnfSwgeyduJzogJ+abtOaXqScsICd2JzogJ+abtOaXqSd9XX0sIHsna2V5JzogJ2ZlZScsICduYW1lJzogJ+i1hOa6kCcsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmraPniYcnLCAndic6ICfmraPniYcnfSwgeyduJzogJ+WFjei0ueato+eJhycsICd2JzogJ+WFjei0ueato+eJhyd9LCB7J24nOiAn5LuY6LS55q2j54mHJywgJ3YnOiAn5LuY6LS55q2j54mHJ31dfSwgeydrZXknOiAnb3JkZXInLCAnbmFtZSc6ICfmjpLluo8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5pyA5pawJywgJ3YnOiAn5pyA5pawJ30sIHsnbic6ICflpb3or4QnLCAndic6ICflpb3or4QnfV19XSwgJ2NhcnRvb24nOiBbeydrZXknOiAnc3R5bGUnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5pCe56yRJywgJ3YnOiAn5pCe56yRJ30sIHsnbic6ICfng63ooYAnLCAndic6ICfng63ooYAnfSwgeyduJzogJ+WGkumZqScsICd2JzogJ+WGkumZqSd9LCB7J24nOiAn576O5bCR5aWzJywgJ3YnOiAn576O5bCR5aWzJ30sIHsnbic6ICfnp5HlubsnLCAndic6ICfnp5HlubsnfSwgeyduJzogJ+agoeWbrScsICd2JzogJ+agoeWbrSd9LCB7J24nOiAn5oGL54ixJywgJ3YnOiAn5oGL54ixJ30sIHsnbic6ICfnpZ7prZQnLCAndic6ICfnpZ7prZQnfSwgeyduJzogJ+acuuaImCcsICd2JzogJ+acuuaImCd9LCB7J24nOiAn55uK5pm6JywgJ3YnOiAn55uK5pm6J30sIHsnbic6ICfkurLlrZAnLCAndic6ICfkurLlrZAnfSwgeyduJzogJ+WKseW/lycsICd2JzogJ+WKseW/lyd9LCB7J24nOiAn56ul6K+dJywgJ3YnOiAn56ul6K+dJ30sIHsnbic6ICfpnZLmmKUnLCAndic6ICfpnZLmmKUnfSwgeyduJzogJ+WOn+WImycsICd2JzogJ+WOn+WImyd9LCB7J24nOiAn5Yqo5L2cJywgJ3YnOiAn5Yqo5L2cJ30sIHsnbic6ICfogL3nvo4nLCAndic6ICfogL3nvo4nfSwgeyduJzogJ+mtlOW5uycsICd2JzogJ+mtlOW5uyd9LCB7J24nOiAn5YW25LuWJywgJ3YnOiAn5YW25LuWJ31dfSwgeydrZXknOiAnem9uZScsICduYW1lJzogJ+WcsOWMuicsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfml6XmnKwnLCAndic6ICfml6XmnKwnfSwgeyduJzogJ+asp+e+jicsICd2JzogJ+asp+e+jid9LCB7J24nOiAn5Zu95LqnJywgJ3YnOiAn5Zu95LqnJ30sIHsnbic6ICflhbbku5YnLCAndic6ICflhbbku5YnfV19LCB7J2tleSc6ICd5ZWFyJywgJ25hbWUnOiAn5bm05LujJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJzIwMjMnLCAndic6ICcyMDIzJ30sIHsnbic6ICcyMDIyJywgJ3YnOiAnMjAyMid9LCB7J24nOiAnMjAyMScsICd2JzogJzIwMjEnfSwgeyduJzogJzIwMjAnLCAndic6ICcyMDIwJ30sIHsnbic6ICcyMDE5JywgJ3YnOiAnMjAxOSd9LCB7J24nOiAnMjAxOCcsICd2JzogJzIwMTgnfSwgeyduJzogJzIwMTcnLCAndic6ICcyMDE3J30sIHsnbic6ICcyMDE2JywgJ3YnOiAnMjAxNid9LCB7J24nOiAnMjAxNScsICd2JzogJzIwMTUnfSwgeyduJzogJzIwMTQnLCAndic6ICcyMDE0J30sIHsnbic6ICfmm7Tml6knLCAndic6ICfmm7Tml6knfV19LCB7J2tleSc6ICdmZWUnLCAnbmFtZSc6ICfotYTmupAnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5q2j54mHJywgJ3YnOiAn5q2j54mHJ30sIHsnbic6ICflhY3otLnmraPniYcnLCAndic6ICflhY3otLnmraPniYcnfSwgeyduJzogJ+S7mOi0ueato+eJhycsICd2JzogJ+S7mOi0ueato+eJhyd9XX0sIHsna2V5JzogJ29yZGVyJywgJ25hbWUnOiAn5o6S5bqPJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+acgOaWsCcsICd2JzogJ+acgOaWsCd9LCB7J24nOiAn5aW96K+EJywgJ3YnOiAn5aW96K+EJ31dfV0sICd0dnNob3cnOiBbeydrZXknOiAnc3R5bGUnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn55yf5Lq656eAJywgJ3YnOiAn55yf5Lq656eAJ30sIHsnbic6ICfnlJ/mtLsnLCAndic6ICfnlJ/mtLsnfSwgeyduJzogJ+aQnueskScsICd2JzogJ+aQnueskSd9LCB7J24nOiAn6K6/6LCIJywgJ3YnOiAn6K6/6LCIJ30sIHsnbic6ICfml7blsJonLCAndic6ICfml7blsJonfSwgeyduJzogJ+mfs+S5kCcsICd2JzogJ+mfs+S5kCd9LCB7J24nOiAn6YCJ56eAJywgJ3YnOiAn6YCJ56eAJ30sIHsnbic6ICfnvo7po58nLCAndic6ICfnvo7po58nfSwgeyduJzogJ+a4uOaIjycsICd2JzogJ+a4uOaIjyd9LCB7J24nOiAn57qq5a6eJywgJ3YnOiAn57qq5a6eJ30sIHsnbic6ICfml4XmuLgnLCAndic6ICfml4XmuLgnfSwgeyduJzogJ+aDheaEnycsICd2JzogJ+aDheaEnyd9LCB7J24nOiAn5oG25pCeJywgJ3YnOiAn5oG25pCeJ30sIHsnbic6ICflkJDmp70nLCAndic6ICflkJDmp70nfSwgeyduJzogJ+WOn+WImycsICd2JzogJ+WOn+WImyd9LCB7J24nOiAn5q2M6IieJywgJ3YnOiAn5q2M6IieJ30sIHsnbic6ICfmkq3miqUnLCAndic6ICfmkq3miqUnfSwgeyduJzogJ+absuiJuicsICd2JzogJ+absuiJuid9LCB7J24nOiAn56eR5pWZJywgJ3YnOiAn56eR5pWZJ30sIHsnbic6ICflhbbku5YnLCAndic6ICflhbbku5YnfV19LCB7J2tleSc6ICd6b25lJywgJ25hbWUnOiAn5Zyw5Yy6JywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+WGheWcsCcsICd2JzogJ+WGheWcsCd9LCB7J24nOiAn5Y+w5rm+JywgJ3YnOiAn5Y+w5rm+J30sIHsnbic6ICfml6Xpn6knLCAndic6ICfml6Xpn6knfSwgeyduJzogJ+asp+e+jicsICd2JzogJ+asp+e+jid9LCB7J24nOiAn5YW25LuWJywgJ3YnOiAn5YW25LuWJ31dfSwgeydrZXknOiAnZW1jZWUnLCAnbmFtZSc6ICfmmI7mmJ8nLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5L2V54KFJywgJ3YnOiAn5L2V54KFJ30sIHsnbic6ICfmkpLotJ3lroEnLCAndic6ICfmkpLotJ3lroEnfSwgeyduJzogJ+eOi+etseejiicsICd2JzogJ+eOi+etseejiid9LCB7J24nOiAn5byg57uN5YiaJywgJ3YnOiAn5byg57uN5YiaJ30sIHsnbic6ICfpsoHlgaUnLCAndic6ICfpsoHlgaUnfSwgeyduJzogJ+eOi+S4luaelycsICd2JzogJ+eOi+S4luaelyd9LCB7J24nOiAn5YCq6JCNJywgJ3YnOiAn5YCq6JCNJ30sIHsnbic6ICfmsarmtrUnLCAndic6ICfmsarmtrUnfSwgeyduJzogJ+iIkuWGrCcsICd2JzogJ+iIkuWGrCd9LCB7J24nOiAn6b2Q5oCd6ZKnJywgJ3YnOiAn6b2Q5oCd6ZKnJ30sIHsnbic6ICfnmb3lsqnmnb4nLCAndic6ICfnmb3lsqnmnb4nfSwgeyduJzogJ+absua0quemuScsICd2JzogJ+absua0quemuSd9LCB7J24nOiAn5bq36L6JJywgJ3YnOiAn5bq36L6JJ30sIHsnbic6ICfnq6Dkuq0nLCAndic6ICfnq6Dkuq0nfSwgeyduJzogJ+WImOa0quaCpicsICd2JzogJ+WImOa0quaCpid9LCB7J24nOiAn5bC85qC85Lmw5o+QJywgJ3YnOiAn5bC85qC85Lmw5o+QJ30sIHsnbic6ICfpkrHmnqsnLCAndic6ICfpkrHmnqsnfSwgeyduJzogJ+WImOWppycsICd2JzogJ+WImOWppyd9LCB7J24nOiAn6LW15bedJywgJ3YnOiAn6LW15bedJ30sIHsnbic6ICfosKLlqJwnLCAndic6ICfosKLlqJwnfV19LCB7J2tleSc6ICdvcmRlcicsICduYW1lJzogJ+aOkuW6jycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmnIDmlrAnLCAndic6ICfmnIDmlrAnfSwgeyduJzogJ+WlveivhCcsICd2JzogJ+WlveivhCd9XX1dLCAnZG9jdW1lbnRhcnknOiBbeydrZXknOiAnc3R5bGUnLCAnbmFtZSc6ICfnsbvlnosnLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5Y6G5Y+yJywgJ3YnOiAn5Y6G5Y+yJ30sIHsnbic6ICfoh6rnhLYnLCAndic6ICfoh6rnhLYnfSwgeyduJzogJ+WKqOeJqScsICd2JzogJ+WKqOeJqSd9LCB7J24nOiAn56S+5LyaJywgJ3YnOiAn56S+5LyaJ30sIHsnbic6ICfkvKDorrAnLCAndic6ICfkvKDorrAnfSwgeyduJzogJ+S6uuaWhycsICd2JzogJ+S6uuaWhyd9LCB7J24nOiAn5paH5YyWJywgJ3YnOiAn5paH5YyWJ30sIHsnbic6ICflhpvkuosnLCAndic6ICflhpvkuosnfSwgeyduJzogJ+enkeaKgCcsICd2JzogJ+enkeaKgCd9LCB7J24nOiAn5Lq654mpJywgJ3YnOiAn5Lq654mpJ30sIHsnbic6ICfmjqLntKInLCAndic6ICfmjqLntKInfSwgeyduJzogJ+e+jumjnycsICd2JzogJ+e+jumjnyd9LCB7J24nOiAn5peF6KGMJywgJ3YnOiAn5peF6KGMJ30sIHsnbic6ICfmjqLpmaknLCAndic6ICfmjqLpmaknfSwgeyduJzogJ+WFtuS7licsICd2JzogJ+WFtuS7lid9XX0sIHsna2V5JzogJ3pvbmUnLCAnbmFtZSc6ICflnLDljLonLCAndmFsdWUnOiBbeyduJzogJ+WFqOmDqCcsICd2JzogJyd9LCB7J24nOiAn5YaF5ZywJywgJ3YnOiAn5YaF5ZywJ30sIHsnbic6ICfpppnmuK8nLCAndic6ICfpppnmuK8nfSwgeyduJzogJ+WPsOa5vicsICd2JzogJ+WPsOa5vid9LCB7J24nOiAn6Z+p5Zu9JywgJ3YnOiAn6Z+p5Zu9J30sIHsnbic6ICfms7Dlm70nLCAndic6ICfms7Dlm70nfSwgeyduJzogJ+aXpeacrCcsICd2JzogJ+aXpeacrCd9LCB7J24nOiAn576O5Zu9JywgJ3YnOiAn576O5Zu9J30sIHsnbic6ICfoi7Hlm70nLCAndic6ICfoi7Hlm70nfSwgeyduJzogJ+aWsOWKoOWdoScsICd2JzogJ+aWsOWKoOWdoSd9LCB7J24nOiAn5YW25LuWJywgJ3YnOiAn5YW25LuWJ31dfSwgeydrZXknOiAneWVhcicsICduYW1lJzogJ+W5tOS7oycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICcyMDIzJywgJ3YnOiAnMjAyMyd9LCB7J24nOiAnMjAyMicsICd2JzogJzIwMjInfSwgeyduJzogJzIwMjEnLCAndic6ICcyMDIxJ30sIHsnbic6ICcyMDIwJywgJ3YnOiAnMjAyMCd9LCB7J24nOiAnMjAxOScsICd2JzogJzIwMTknfSwgeyduJzogJzIwMTgnLCAndic6ICcyMDE4J30sIHsnbic6ICcyMDE3JywgJ3YnOiAnMjAxNyd9LCB7J24nOiAnMjAxNicsICd2JzogJzIwMTYnfSwgeyduJzogJzIwMTUnLCAndic6ICcyMDE1J30sIHsnbic6ICcyMDE0JywgJ3YnOiAnMjAxNCd9LCB7J24nOiAn5pu05pepJywgJ3YnOiAn5pu05pepJ31dfSwgeydrZXknOiAnZmVlJywgJ25hbWUnOiAn6LWE5rqQJywgJ3ZhbHVlJzogW3snbic6ICflhajpg6gnLCAndic6ICcnfSwgeyduJzogJ+ato+eJhycsICd2JzogJ+ato+eJhyd9LCB7J24nOiAn5YWN6LS55q2j54mHJywgJ3YnOiAn5YWN6LS55q2j54mHJ30sIHsnbic6ICfku5jotLnmraPniYcnLCAndic6ICfku5jotLnmraPniYcnfV19LCB7J2tleSc6ICdvcmRlcicsICduYW1lJzogJ+aOkuW6jycsICd2YWx1ZSc6IFt7J24nOiAn5YWo6YOoJywgJ3YnOiAnJ30sIHsnbic6ICfmnIDmlrAnLCAndic6ICfmnIDmlrAnfSwgeyduJzogJ+WlveivhCcsICd2JzogJ+WlveivhCd9XX1dfSwKICAgIGxpbWl0OjIwLAogICAgcGxheV9wYXJzZTp0cnVlLAogICAgcGxheV9qc29uOjEsCiAgICAvLyDmiYvliqjosIPnlKjop6PmnpDor7fmsYJqc29u55qEdXJsLOatpGxhennkuI3mlrnkvr8KICAgIGxhenk6JycsCiAgICBsYXp5OmBqczoKICAgIHByaW50KGlucHV0KTsKICAgIGZldGNoX3BhcmFtcy5oZWFkZXJzWyJVc2VyLUFnZW50Il09TU9CSUxFX1VBOwogICAgcHJpbnQoZmV0Y2hfcGFyYW1zKTsKICAgIGxldCBodG1sPXJlcXVlc3QoaW5wdXQpOwogICAgbGV0IHJ1cmw9aHRtbC5tYXRjaCgvd2luZG93XFwub3BlblxcKCcoLio/KScsLylbMV07CiAgICBydXJsPXVybERlYWwocnVybCk7CiAgICBpbnB1dD17cGFyc2U6MSxqeDoxLHVybDpydXJsfTsKICAgIGAsCiAgICAvLyDmjqjojZA6Jy5saXN0X2l0ZW07aW1nJiZhbHQ7aW1nJiZzcmM7YSYmVGV4dDthJiZkYXRhLWZsb2F0JywKICAgIOS4gOe6pzonanM6bGV0IGQ9W107bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7aHRtbD1KU09OLnBhcnNlKGh0bWwpO2xldCBsaXN0PWh0bWwubGlzdERhdGEucmVzdWx0cztsaXN0LmZvckVhY2goZnVuY3Rpb24oaXQpe2xldCBkZXNjMT1pdC5pcGFkX3BsYXlfZm9yX2xpc3QuZmluaXNoX2VwaXNvZGU/aXQuaXBhZF9wbGF5X2Zvcl9saXN0LmVwaXNvZGU9PT1pdC5pcGFkX3BsYXlfZm9yX2xpc3QuZmluaXNoX2VwaXNvZGU/IuWFqOmbhiIraXQuaXBhZF9wbGF5X2Zvcl9saXN0LmZpbmlzaF9lcGlzb2RlOiLov57ovb0iK2l0LmlwYWRfcGxheV9mb3JfbGlzdC5lcGlzb2RlKyIvIitpdC5pcGFkX3BsYXlfZm9yX2xpc3QuZmluaXNoX2VwaXNvZGU6IiI7bGV0IGRlc2MyPWl0LnNjb3JlPyLor4TliIY6IitpdC5zY29yZToiIjtsZXQgZGVzYzM9aXQuZGF0ZT8i5pu06IezOiIraXQuZGF0ZToiIjtkLnB1c2goe3RpdGxlOml0Lm5hbWUsaW1nOml0LnZfcGljdXJsLHVybDoiaHR0cHM6Ly92LnNvZ291LmNvbSIraXQudXJsLnJlcGxhY2UoInRlbGVwbGF5Iiwic2VyaWVzIikucmVwbGFjZSgiY2FydG9vbiIsInNlcmllcyIpLGRlc2M6ZGVzYzF8fGRlc2MyfHxkZXNjM30pfSk7c2V0UmVzdWx0KGQpOycsCiAgICDkuoznuqc6JycsCiAgICDkuoznuqc6J2pzOlZPRD17fTtsZXQgaHRtbD1yZXF1ZXN0KGlucHV0KTtmdW5jdGlvbiBhZGhlYWQodXJsKXtsZXQgaGQ9Imh0dHBzOi8vdi5zb2dvdS5jb20iO2lmKCF1cmwuc3RhcnRzV2l0aChoZCkpe3VybD1oZCt1cmx9cmV0dXJuIHVybGVuY29kZSh1cmwpfXRyeXtsZXQganNvbj1KU09OLnBhcnNlKGh0bWwubWF0Y2goL0lOSVRJQUxfU1RBVEUuKj8oey4qfSk7LylbMV0pLmRldGFpbC5pdGVtRGF0YTtsZXQga2V5PWpzb24uZG9ja2V5O2xldCBuYW1lPWpzb24ubmFtZTtsZXQgem9uZT1qc29uLnpvbmU7bGV0IHNjb3JlPWpzb24uc2NvcmU/anNvbi5zY29yZToi5pqC5pegIjtsZXQgc3R5bGU9anNvbi5zdHlsZTtsZXQgZW1jZWU9anNvbi5lbWNlZT8i5Li75oyB77yaIitqc29uLmVtY2VlOmpzb24ubmFtZTtsZXQgZGlyZWN0b3I9anNvbi5kaXJlY3Rvcj8i5a+85ryU77yaIitqc29uLmRpcmVjdG9yOm5hbWU7ZGlyZWN0b3I9ZGlyZWN0b3IucmVwbGFjZSgvOy9nLCJcXHQiKTtsZXQgc3RhcnJpbmc9anNvbi5zdGFycmluZz8i5ryU5ZGY77yaIitqc29uLnN0YXJyaW5nOiLlo7DkvJjvvJoiK2pzb24uc2hlbmd5b3U7c3RhcnJpbmc9c3RhcnJpbmcucmVwbGFjZSgvLip1bmRlZmluZWQvLCIiKS5yZXBsYWNlKC87L2csIlxcdCIpO2xldCB1cGRhdGU9anNvbi51cGRhdGVfd29yZHN0cj9qc29uLnVwZGF0ZV93b3Jkc3RyOiIiO2xldCB0dl9zdGF0aW9uPWpzb24udHZfc3RhdGlvbj9qc29uLnR2X3N0YXRpb246em9uZTtsZXQgaW50cm9kdWN0aW9uPWpzb24uaW50cm9kdWN0aW9uO2xldCBzaGVuZ3lvdT1qc29uLnNoZW5neW91O2xldCBzaG93cz1qc29uLnBsYXlfZnJvbV9vcGVuX2luZGV4O2xldCBwbGF5cz1qc29uLnBsYXkuaXRlbV9saXN0O2lmKHNob3dzKXtWT0Qudm9kX25hbWU9bmFtZTtWT0Qudm9kX2FyZWE9ZW1jZWUrIiwiK3R2X3N0YXRpb247Vk9ELnZvZF9kaXJlY3Rvcj1kaXJlY3RvcjtWT0Qudm9kX2FjdG9yPXN0YXJyaW5nO1ZPRC52b2RfcGljPWpzcC5wZChodG1sLCIjdGh1bWJfaW1nJiZpbWcmJnNyYyIpO1ZPRC52b2RfcmVtYXJrcz1zdHlsZSsiIOivhOWIhjoiK3Njb3JlKyIsIit1cGRhdGU7Vk9ELnZvZF9jb250ZW50PWludHJvZHVjdGlvbn1lbHNle1ZPRC52b2RfbmFtZT1uYW1lO1ZPRC52b2RfZGlyZWN0b3I9ZGlyZWN0b3I7Vk9ELnZvZF9hY3Rvcj1zdGFycmluZztWT0Qudm9kX3BpYz1qc3AucGQoaHRtbCwiI3RodW1iX2ltZyYmaW1nJiZzcmMiKTtWT0Qudm9kX2NvbnRlbnQ9aW50cm9kdWN0aW9ufWxldCB0cD0iJnR5cGU9anNvbiI7dHJ5e2xldCB0YWJzPVtdO2xldCBsaXN0cz1bXTtwbGF5cy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXtsaXN0cy5wdXNoKGl0LmluZm8pO2xldCB0Ym49aXQuc2l0ZW5hbWVbMF18fGl0LnNpdGUucmVwbGFjZSgiLmNvbSIsIiIpO3Ribj10Ym4uc3BsaXQoIiIpLmpvaW4oIiAiKTt0YWJzLnB1c2godGJuKX0pO1ZPRC52b2RfcGxheV9mcm9tPXRhYnMuam9pbigiJCQkIik7bGV0IHZvZF9saXN0cz1bXTtwcmludCgicGxheV91cmwxOiIrcGxheV91cmwpO3BsYXlfdXJsPXBsYXlfdXJsLnJlcGxhY2UoIiZwbGF5X3VybD0iLCImdHlwZT1qc29uJnBsYXlfdXJsPSIpO3ByaW50KCJwbGF5X3VybDI6IitwbGF5X3VybCk7bGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLGlkZXgpe2lmKGl0ZW18fHNob3dzKXtpZihpdGVtJiZBcnJheS5pc0FycmF5KGl0ZW0pJiZpdGVtLmxlbmd0aD4xKXtsZXQgdG1wPWl0ZW0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGl0cyl7cmV0dXJuIGl0cy5pbmRleCsiJCIrcGxheV91cmwrYmFzZTY0RW5jb2RlKGFkaGVhZChpdHMudXJsKSl9KTt2b2RfbGlzdHMucHVzaCh0bXAuam9pbigiIyIpKX1pZihzaG93cyl7bGV0IGFycj1bXTtsZXQgdG1wPVtdO2xldCB6eT1zaG93cy5pdGVtX2xpc3RbaWRleF07enkuZGF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGRhdGUpe2xldCBkYXk9ZGF0ZS5kYXk7Zm9yKGxldCBqPTA7ajxkYXkubGVuZ3RoO2orKyl7bGV0IGRheXk9ZGF5W2pdWzBdPj0xMD9kYXlbal1bMF06IjAiK2RheVtqXVswXTtsZXQgVGRhdGU9ZGF0ZS55ZWFyK2RhdGUubW9udGgrZGF5eTthcnIucHVzaChUZGF0ZSl9fSk7Zm9yKGxldCBrPTA7azxhcnIubGVuZ3RoO2srKyl7bGV0IHVybD0iaHR0cHM6Ly92LnNvZ291LmNvbS92Yy9lcGxheT9xdWVyeT0iK2FycltrXSsiJmRhdGU9IithcnJba10rIiZrZXk9IitrZXkrIiZzdD01JnR2c2l0ZT0iK3BsYXlzW2lkZXhdLnNpdGU7dG1wLnB1c2goIuesrCIrYXJyW2tdKyLmnJ8iKyIkIitwbGF5X3VybCtiYXNlNjRFbmNvZGUoYWRoZWFkKHVybCkpKX12b2RfbGlzdHMucHVzaCh0bXAuam9pbigiIyIpKX19ZWxzZSBpZihwbGF5c1tpZGV4XS5zaXRlKXtsZXQgdG1wPVtdO2lmKCFwbGF5c1tpZGV4XS5mbGFnX2xpc3QuaW5jbHVkZXMoInRyYWlsZXIiKSl7dG1wLnB1c2gocGxheXNbaWRleF0uc2l0ZW5hbWVbMF0rIiQiK3BsYXlfdXJsK2Jhc2U2NEVuY29kZShhZGhlYWQocGxheXNbaWRleF0udXJsKSkpfWVsc2V7dG1wLnB1c2gocGxheXNbaWRleF0uc2l0ZW5hbWVbMF0rIuKAlOmihOWRiiIrIiQiK3BsYXlfdXJsK2Jhc2U2NEVuY29kZShhZGhlYWQocGxheXNbaWRleF0udXJsKSkpfXZvZF9saXN0cy5wdXNoKHRtcC5qb2luKCIjIikpfX0pO1ZPRC52b2RfcGxheV91cmw9dm9kX2xpc3RzLmpvaW4oIiQkJCIpfWNhdGNoKGUpe2xldCBpbWc9anNvbi5waG90by5pdGVtX2xpc3Q7Vk9ELnZvZF9uYW1lPSLmnKzniYfml6DpgInpm4YiO1ZPRC52b2RfcGljPWltZy5sZW5ndGg+MD9pbWdbMF06IiJ9fWNhdGNoKGUpe3ByaW50KCLlj5HnlJ/kuobplJnor686IitlLm1lc3NhZ2UpfScsCiAgICAvLyDkuoznuqc6J2pzOnZhciB2b2Q9e3ZvZF9pZDppbnB1dH07bGV0IGh0bWw9cmVxdWVzdChpbnB1dCk7ZnVuY3Rpb24gYWRoZWFkKHVybCl7bGV0IGhkPSJodHRwczovL3Yuc29nb3UuY29tIjtpZighdXJsLnN0YXJ0c1dpdGgoaGQpKXt1cmw9aGQrdXJsfXJldHVybiB1cmx9dHJ5e2xldCBqc29uPUpTT04ucGFyc2UoaHRtbC5tYXRjaCgvSU5JVElBTF9TVEFURS4qPyh7Lip9KTsvKVsxXSkuZGV0YWlsLml0ZW1EYXRhO2xldCBrZXk9anNvbi5kb2NrZXk7bGV0IG5hbWU9anNvbi5uYW1lO2xldCB6b25lPWpzb24uem9uZTtsZXQgc2NvcmU9anNvbi5zY29yZT9qc29uLnNjb3JlOiLmmoLml6AiO2xldCBzdHlsZT1qc29uLnN0eWxlO2xldCBlbWNlZT1qc29uLmVtY2VlPyLkuLvmjIHvvJoiK2pzb24uZW1jZWU6anNvbi5uYW1lO2xldCBkaXJlY3Rvcj1qc29uLmRpcmVjdG9yPyLlr7zmvJTvvJoiK2pzb24uZGlyZWN0b3I6bmFtZTtkaXJlY3Rvcj1kaXJlY3Rvci5yZXBsYWNlKC87L2csIlxcdCIpO2xldCBzdGFycmluZz1qc29uLnN0YXJyaW5nPyLmvJTlkZjvvJoiK2pzb24uc3RhcnJpbmc6IuWjsOS8mO+8miIranNvbi5zaGVuZ3lvdTtzdGFycmluZz1zdGFycmluZy5yZXBsYWNlKC8uKnVuZGVmaW5lZC8sIiIpLnJlcGxhY2UoLzsvZywiXFx0Iik7bGV0IHVwZGF0ZT1qc29uLnVwZGF0ZV93b3Jkc3RyP2pzb24udXBkYXRlX3dvcmRzdHI6IiI7bGV0IHR2X3N0YXRpb249anNvbi50dl9zdGF0aW9uP2pzb24udHZfc3RhdGlvbjp6b25lO2xldCBpbnRyb2R1Y3Rpb249anNvbi5pbnRyb2R1Y3Rpb247bGV0IHNoZW5neW91PWpzb24uc2hlbmd5b3U7bGV0IHNob3dzPWpzb24ucGxheV9mcm9tX29wZW5faW5kZXg7bGV0IHBsYXlzPWpzb24ucGxheS5pdGVtX2xpc3Q7aWYoc2hvd3Mpe3ZvZC52b2RfbmFtZT1uYW1lO3ZvZC52b2RfYXJlYT1lbWNlZSsiLCIrdHZfc3RhdGlvbjt2b2Qudm9kX2RpcmVjdG9yPWRpcmVjdG9yO3ZvZC52b2RfYWN0b3I9c3RhcnJpbmc7dm9kLnZvZF9waWM9anNwLnBkKGh0bWwsIiN0aHVtYl9pbWcmJmltZyYmc3JjIik7dm9kLnZvZF9yZW1hcmtzPXN0eWxlKyIg6K+E5YiGOiIrc2NvcmUrIiwiK3VwZGF0ZTt2b2Qudm9kX2NvbnRlbnQ9aW50cm9kdWN0aW9ufWVsc2V7dm9kLnZvZF9uYW1lPW5hbWU7dm9kLnZvZF9kaXJlY3Rvcj1kaXJlY3Rvcjt2b2Qudm9kX2FjdG9yPXN0YXJyaW5nO3ZvZC52b2RfcGljPWpzcC5wZChodG1sLCIjdGh1bWJfaW1nJiZpbWcmJnNyYyIpO3ZvZC52b2RfY29udGVudD1pbnRyb2R1Y3Rpb259bGV0IHRwPSImdHlwZT1qc29uIjt0cnl7bGV0IHRhYnM9W107bGV0IGxpc3RzPVtdO3BsYXlzLmZvckVhY2goZnVuY3Rpb24oaXQpe2xpc3RzLnB1c2goaXQuaW5mbyk7bGV0IHRibj1pdC5zaXRlbmFtZVswXXx8aXQuc2l0ZS5yZXBsYWNlKCIuY29tIiwiIik7dGJuPXRibi5zcGxpdCgiIikuam9pbigiICIpO3RhYnMucHVzaCh0Ym4pfSk7dm9kLnZvZF9wbGF5X2Zyb209dGFicy5qb2luKCIkJCQiKTt2b2RfbGlzdHM9W107cGxheV91cmw9cGxheV91cmwucmVwbGFjZSgiJnBsYXlfdXJsPSIsIiZ0eXBlPWpzb24mcGxheV91cmw9Iik7bGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLGlkZXgpe2lmKGl0ZW18fHNob3dzKXtpZihpdGVtJiZBcnJheS5pc0FycmF5KGl0ZW0pJiZpdGVtLmxlbmd0aD4xKXtsZXQgdG1wPWl0ZW0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGl0cyl7cmV0dXJuIGl0cy5pbmRleCsiJCIrcGxheV91cmwrYmFzZTY0RW5jb2RlKGFkaGVhZChpdHMudXJsKSl9KTt2b2RfbGlzdHMucHVzaCh0bXAuam9pbigiIyIpKX1pZihzaG93cyl7bGV0IGFycj1bXTtsZXQgdG1wPVtdO2xldCB6eT1zaG93cy5pdGVtX2xpc3RbaWRleF07enkuZGF0ZS5mb3JFYWNoKGZ1bmN0aW9uKGRhdGUpe2xldCBkYXk9ZGF0ZS5kYXk7Zm9yKGxldCBqPTA7ajxkYXkubGVuZ3RoO2orKyl7bGV0IGRheXk9ZGF5W2pdWzBdPj0xMD9kYXlbal1bMF06IjAiK2RheVtqXVswXTtsZXQgVGRhdGU9ZGF0ZS55ZWFyK2RhdGUubW9udGgrZGF5eTthcnIucHVzaChUZGF0ZSl9fSk7Zm9yKGxldCBrPTA7azxhcnIubGVuZ3RoO2srKyl7bGV0IHVybD0iaHR0cHM6Ly92LnNvZ291LmNvbS92Yy9lcGxheT9xdWVyeT0iK2FycltrXSsiJmRhdGU9IithcnJba10rIiZrZXk9IitrZXkrIiZzdD01JnR2c2l0ZT0iK3BsYXlzW2lkZXhdLnNpdGU7dG1wLnB1c2goIuesrCIrYXJyW2tdKyLmnJ8iKyIkIitwbGF5X3VybCtiYXNlNjRFbmNvZGUoYWRoZWFkKHVybCkpKX12b2RfbGlzdHMucHVzaCh0bXAuam9pbigiIyIpKX19ZWxzZSBpZihwbGF5c1tpZGV4XS5zaXRlKXtsZXQgdG1wPVtdO2lmKCFwbGF5c1tpZGV4XS5mbGFnX2xpc3QuaW5jbHVkZXMoInRyYWlsZXIiKSl7dG1wLnB1c2gocGxheXNbaWRleF0uc2l0ZW5hbWVbMF0rIiQiK3BsYXlfdXJsK2Jhc2U2NEVuY29kZShhZGhlYWQocGxheXNbaWRleF0udXJsKSkpfWVsc2V7dG1wLnB1c2gocGxheXNbaWRleF0uc2l0ZW5hbWVbMF0rIuKAlOmihOWRiiIrIiQiK3BsYXlfdXJsK2Jhc2U2NEVuY29kZShhZGhlYWQocGxheXNbaWRleF0udXJsKSkpfXZvZF9saXN0cy5wdXNoKHRtcC5qb2luKCIjIikpfX0pO3ZvZC52b2RfcGxheV91cmw9dm9kX2xpc3RzLmpvaW4oIiQkJCIpfWNhdGNoKGUpe2xldCBpbWc9anNvbi5waG90by5pdGVtX2xpc3Q7dm9kLnZvZF9uYW1lPSLmnKzniYfml6DpgInpm4YiO3ZvZC52b2RfcGljPWltZy5sZW5ndGg+MD9pbWdbMF06IiJ9fWNhdGNoKGUpe30nLAogICAg5pCc57SiOicnLAogICAg5pCc57SiOmBqczoKbGV0IGQgPSBbXTsKbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKbGV0IGpzb25BID0gSlNPTi5wYXJzZShodG1sLm1hdGNoKC9JTklUSUFMX1NUQVRFLio/KHsuKn0pOy8pWzFdKTsKcHJpbnQoanNvbkEpOwpqc29uQSA9IGpzb25BLnJlc3VsdC5yZXN1bHREYXRhLnNlYXJjaERhdGEucmVzdWx0czsKanNvbkEuZm9yRWFjaChmdW5jdGlvbihpdCkgewoJbGV0IG5hbWUgPSBpdC5uYW1lOwoJbGV0IGludHJvZHVjdGlvbiA9IGl0LmludHJvZHVjdGlvbjsKCWxldCBwaWMgPSBpdC52X3BpY3VybDsKCWxldCB1cmwgPSBpdC50aW55X3VybDsKCWxldCB6b25lID0gaXQuem9uZTsKCWxldCBzY29yZSA9IGl0LnNjb3JlIHx8ICLmmoLml6AiOwoJbGV0IHN0eWxlID0gaXQuc3R5bGU7CglpZiAoaXQucGxheV9pbmZvICYmIGl0LnBsYXlfaW5mby5wbGF5X2xpc3QpIHsKCQlsZXQgciA9IHt9OwoJCXIudGl0bGUgPSBuYW1lLnJlcGxhY2UoL+6Qii8sICIiKS5yZXBsYWNlKC/ukIsvLCAiIik7CgkJci51cmwgPSAiaHR0cHM6Ly92LnNvZ291LmNvbSIgKyB1cmwucmVwbGFjZSgvdGVsZXBsYXl8Y2FydG9vbi9nLCAnc2VyaWVzJyk7CgkJci5kZXNjID0gaXQubGlzdENhdGVnb3J5LmpvaW4oIiwiKTsKCQlyLmNvbnRlbnQgPSBpbnRyb2R1Y3Rpb247CgkJci5waWNfdXJsID0gcGljOwoJCWQucHVzaChyKQoJfQp9KTsKc2V0UmVzdWx0KGQpO2AsCgp9 \ No newline at end of file diff --git a/lib/蓝光影视.js b/lib/蓝光影视.js new file mode 100644 index 0000000..3da6e11 --- /dev/null +++ b/lib/蓝光影视.js @@ -0,0 +1 @@ +H4sIAAAAAAAAAH1UXUvbUBi+768IbKRJSROtVraWTpwT9iWCTm/GqKfJaXL0NEnPOenHmoI3EwZOZMLwwjHmLtzlhF2IsH+jtfsXe0+adk6GpU3OeZ+nz/t5TgsxhUUUV3oZQQTFJSU7PPx89e791a+z4elu1sh4ARdg9YQIecmy2u22SZHvRvAzQxYAg2PEbG+dUaAR38EdM/RCi3FujXadBp1vO5VcDrhRwrJagcO9oG3VuzZFnOfTT70bIhfDwvREg0rnGDmY8ZLSy65zzPILLvZFFhSWVx4/e7lUXV/I9o1MolENEeMyftOjeR+1FEpKrtCm9BIV2qxeRqr6CneEfHsM18tmztLM3Lw+dmVZNhK4ijs2jRypMzjaHxx9iS/PD3+fHMWD453Bpx/xYP/j8OtePDzbvT78Bv8KKeqOPQsWYSND0dtuaXMLYiZ+GAmlovSUrU5JmTKUlDdtKEkZRnh/08gM9r8PPxyAT1kiJ4hqdCJ3eb5zfXGapgVly1PCBeQm80g6JhcOEigfMOISH9GyZIbEzgtIV1V5iPx/Uwcflxd7ierfrnuFEQlA0nBTfzKXW+oyQMztlFCPKM3Xgo6qQrVxU5vWU1f/Awt3gTN3gbN3gcW7wDl9kpYd+AKmJ4083aVFSikC1XiKy6WqIjDKgo+tst08aYEUv0ccXTqSMzg4OL7+eVJS7m9xUwRrghHf1TRdqTxSehQLRU4ZzALDzQhzoSW918sSIQI3OEChU0eapBlKFg6PqkogO+I4gL9+U06oZj1gS8j2NCISdfkCEZNhiM7GmpW0NKbE345RJLyAxWFUgybiWHaOkVCQwLdccBOm8jCOowCkqLTf7CVwHDOMuKf10mG5QRxTjGSi4WGMpuOW1sxEy5i04Ral8JcCw1sdXRTjWwdG0uRB4JK6aQcNq/li0XngP99gT8MVRFaZV3w4N13cWFzFxSeitVw0gZg1+noZvhyLVcwjuAQcuR9fVyg5YwWjGRF7ey0xwRnN9P8AFReygBEFAAA= \ No newline at end of file diff --git a/lib/虎牙直播[官].js b/lib/虎牙直播[官].js new file mode 100644 index 0000000..009631a --- /dev/null +++ b/lib/虎牙直播[官].js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV+5++HZXI9BoZgUaOxoZVC5bHfcaBicUpCO19BXQFsv6Hq/E5npdLAXugPZ330qm3znYQgq7Egze4EpKsGA4kHdgvw2WvcQdE7Bf9Xq5SMJ69EtkN5RDNoCxT/zFb41+1ooiENqxRQNIeYTXlTNNe0mt0AbAxSwu57FBcDdOKn7oXPbmbLtkTy49W0TyX5Dj6Fh8dmSOmLFCL7iuoJf1XHIsFYKwxbK28mShumBU9SK97JydXXtBEk4Q/gtJ317Ic7Woz1PVzpkMrzJK1bH6u8zInCXveWbJghOR54JHlnWvSjWavqai38reMll9R1WBCej5OnN8ttcRaMEhw5Inl6RupyyH4sG3hSJbLIX2cqeUYfOxuAtab/5FCQmTj6GNE7AkBOyFKqHl2j0pkO8tZcisG44c2HEkpgbUisU1Z4aKBzn+xQ+OUycFUGBJUsKYVNd+PsIjRYTKtSRtttCHP/jSlrt1izOZDDjTyp59tDTVKpkTQSNTB+wXi5xug/TljJYvgx/BmoLSKd76b76t0TWM3maJ22pJ4lfQFQ1vWDMVLwVnDayLYc8I0V3Jft2ragrqCGUId56J3jTxrWgVFyXMd4Btp4ffWVS1/lNF6oJpucYFZhQfwYG0A7nPjr0AuEwinRX/dWk4Z4l0GObNKPYj+7047V6T5vArGjyR0HdeeGAtErQK1LUQohIBLo/71uJ7hBQLeSiteRJvkSE4YwNmhK8TSqYJvk3A85S/8eUUl5kYyE5/1NnDQkJF84m4HfW0K+VdW/M/oIqEBTQjLndiMPCC8+6KSa2dVcLyUkusQEqbgcKy8VJGAWvrlmilGAJEt041sOrah6/E4o/VWxUT1xTnkTV6WSlehegsUaQ5i3caH48h0XvXKiljlqQAfQgvPZSVdmYFur7M9EpmBKvAjhTla9BoJSaTyKhXi15eOLCxfnnHsQSSk6+4KrrAYB132qM/IOF7+a9qqV9vgTqPC/9QXFgtsDuQN09X+GY1r8TH5V3/fgxT/XjkCc3kBtN6TmDjROzFulGReCbqTjmVbQVwl/WDu2vj2dyVaimefU2Fi84bwHmn6qrXTvSkf2FsxU4QFQKLQ2fQV2IwDsFqDrH6HA1oBa/CgFQ4Sp9TTqHNSGfk73oyuO7YcatEexmqkkn33t5VBVWoOhKCssxLsmacJ0Ma9LUmsZddw6PTkkFQvcKtATZapoAicl4LrKk19Xsq9W2oRrCK/xkhafHGLp3EpZA19ixHNV+JlhmVTEW3LVBnoFtzvWbn2khbXcGvzQQaCQBQf1LWE347lLySSUWHmegnaUm46qF7K/vMAe8OdKElA1nPyMf9+HO8ArIbOUBf3U1Bpis64QVMKi7gvBJxQmV6kx57K/Gk3XoC2n64bPmMxj4q22nNyBDtgMC/yyI2HTKqfG2O/MDTLbClkTBNPbeo3CLQTwX85cpRzjWNFvO1scFu8KrbEVnDMQCAzTdFTAqCTZYd0GmjbKo2APpmRkAsxPOTqVGuKCN4GEaWRYSLY5G9WCYHuHF95SsAULhHSKN+ccoLX/GrgIPA8MzTgq5yh2k3mrijpPcR0zhilmpSm78vODARj5HkVCEFYkkD1F3x5WKIRxpaDsgQBa2qJku4ln6DEhHb4o46K88ZHFHT3S0bihLC1R/q5E6vd2GCfM+g+nOiYJ/fMolRe03Ti9XISS8XZTyzJ9vBWjkCrgV2VwDImAcUtoaYj6krn5cbtRZQJLlQu1tjVMLtX1kyo6Q7pK1I5QAy7cI0bS/72dX43nhTJzNgDLdpZTwtbCzKQSrIE9F/s3PD8kvM9ucVDyVZTv+EhLHCgUKjNMSFJvfMB5tWHnZpxfqTKKEzxhAUXtoBfcODczq1S/6oNbLeEF3apNHY9sZHcZllH3AMKlaBuYZmDDiF3+1IQAz12hGP2Ckf8kODsp6oJEKZXpYTPqsidavuLeY46JsWgUg/ySJ6+/NMrkmtZ8+Hi82aGcoxrHeYN0O9hN6O0X9kPe9FI7r2LggKe4RL9QdzOpYj8ESlqfqTtz9dTh1CAqBC+kuEFTJH4FPUkqTOqdwRs9cBmLRYcQonMO/GhSiDpah2WwzYOH6RZGymvcHW0x7FjJOnDYADxDfBU0Hyl2eqkQ5ROrH6oyqvfXeF7wMg8t8Ra7uU3CRSX356khfEFUt8efpWcr1LihcLV7/epRRRx8UCbwMSlMFvAmYWfEmfARJaMz3IfZ4TZ0uiPFmTuHS1H3j7tG7Hab9weVEPP1skIscjNsWO7Qa3sED0TaVE25ZVsmKPk4T/MushM/aMRN/ZwLGby+mogOSgP9UZ3nDO0+Oj+ZYOsrzAmbeZcrmZXlj9E+1mp6xDDBjKAbV9jAt6p/2G+cUvhnnUNU7sXbfOCuVuBRys0nIPe+CnSGua1tEhDxvKy16Fxs1472FQFXUX8N1x4o2Ixon2unIp/7/zEllqsriP9VxdQD+MJdXmmaJ8PTeVBQVlOn3oGge9gY+rJ7ffIA2ipSavDt5Nssjb/sJFU3T0UqxQ91sIfKHMMa4SdD8mNfp6DZkTkmPwtyne6/TON1Q4V1WoNIqrG5oEjMpFYMuBIDCpMbo5TjfbT1ig5C0wE3jHqPJZm3lRFSiorH79a/U7IOqTm83L2kj/+iKrwIY8hcGXbtsxgXceoF+kvU92PTWIVQaLAUMzJYMPTEYedky55A2hey2JtVHS9X4T7nWij5tmC1BOo6oCUDQy5esVtG/i4GZZmMukgmhJLOtg68DU1SM3fvugM88nQMjVHL2PsvNL6wJsAq8RjKSruKps99broVI93z2q0GGUQf1lyz+js3P06TLoCGQ77sV1iz+gTjZCqia8alOkevWbiW8rcthdZ5zIasR1eYUXKVUSWdHNV4ddVKhKpvsgqD6xnDlLk9fUxs6VuqKo/CxFPgKeMGUtrSXvbBboNzMwW4/pHXuWiKQxe0jLBKe0HxC9dmwRpB8SmY8BunrW4WFlBgZXB5WCqCYeQnT907f+BE5qpFqHw3nGL7S4CzbrMzNPpm3OxLVlkn/1L9ol+sssmIBVfkwEzetY7APX2nuBqVGw9k2hC96X2Vofsm/YgnBmbySnokyoDZPigEqWA5Do4r0sgcUt/YnpchAOVdh2a/BWytHlWRV5Pf/cuf8m7thLKMerxOyhUtaV9DeUMFOpLx9amJY4tj+YUvAvgmkyEOohgTHuLTEIXyTc6S6OmhvBqr2aG3JR/gKgiSIGdKlHavF01TwJBz6FEFzs9+itafPE5wqOS/0Z10j37aOryEchHDbcbbU2h5KMXPOvet/fG3ot6hUQruLAVenGCmu8w5dbuoZV/FnfKSJyASfeiy+3vq6dNVsdhoaSgGZyysKYjvfjQNAPX0ZGwL0lP7zoF5DzAXL8tLltWOfIjeLYywscEYrY/LDNeIYNvyCSc66C/8uyc71YNfY2y7NDWYYVwwaoct/vNPMVmHrk0cgIiGKPxP6/Br/M3U5VJyRouDIoartiR+oeAP/F3LgaNPK3lxLZ2HNq/0vp2BGTCMzid46iq8vRaP2bm3mtGAN2a1JaQnEFsPBagZ514TCKG0dDmJtAn66BNzUF6D/xT/8P/kucr+5VkRfuiNki8kiDTruN935h24EbPEBMAXgch1/TwFMB7ocmToqmrT2wzPNic66GRKFkUXlCiN5cqtHEJwV+dWq8qVLIMHFREnNdAr/V5aqHpEBA0nMLdBOQSgYP+P0Z5we8drJqJQxMTSKFYb0L+r5uefeTe2V7+cOTXSpmgEyt6mHGS7+BLTyEhjGIG7kjdbNt0KV2svW0RIV1D7FnLfqRWCYoV93IzC9Vi2HrhcULx6gTb9vf2JmPPl9y6tOcvMfokq50T2Oce3W6vMjsOht4dfBAnNJ00RHYxpFtFDBl+BmJvFR1/JOV0TuVCCDuU/wxThFS/uQel67mL2dps1s6kD3iJAyd1IrG8Mx87o0A+4XUy1MnWhbxCf0ZVouYEfxUuzTMWGHH5Kw/GIqbSBr1AeVPrm8Iuip3lmwFF12kLgn8cTZ7yTx2bfNCeCob0ge1hfBJfyOMHd3WTQ3cxJ3AqizFuved532CGKESUKqIBPrrOvI8jWZ9Of+7vHbosnxiLTSkNLeZpoDOyonMTHJ9louDjR23lnfm7Qm+h5gH1rjv8dC7JjIF3X2i5c30LbPnvv94eESknf7GOkwUS9UoCAvsK2FsId7r0euZI/vutn41CZZxFjElJ7BfMICsUpzgD5rATctyXEXM/T1DyNFt0IRDWd10OUQ7lsFYax/PyNvJvhx8abhgeh4EPCMVbA/n69h6ORftY7pFhmcMMcb/pmOigri8OLeR/MDXlG9uWH3Z5aWR/hnuZEzG1TEatSuQBnb36u4xsmK5ncoSVUiUL33pWt1sybVGpyDLZgML2PmTud9MZeSuIxdL5vFJruDzRrPXqcRYAIrKITHoIMssU6PqDDvvznQXRltyYsP8eiswrwxY/mK8lB5A8GrNi0GYFcICHY9zWvOhArOMLsh6yfT6TOl8pwvw4hBnGn/D1rVb1wp+MMdPoCU/NjZ19Gn85TPx2TIoT+Ao3XAOF2FMieuH6h01k6aVCO6ly71l5ydYQiOvZoXnDA/8xe8LUqMSSEFJ1gdPDwbiEbJnqsSN212EZflQCvNaKDzO0MkVVGY4Lfpwc4nxEoPHX6wcS87g0hzxLc9vk8KshsEHm15ezdshKwDeisU+2mbtKSjLvORqAu6ci6fLbSho608Q/Ok06oD6kszzCupmnUCsCLHApGa35iVUq3rxbOObRNziO4OdVJRs4xH1aRGIrfQqhSDgrKqC6WF5dWWzaf9PpaD3KbMjgCXSGrWUuTsoqYqAIgtWGD9YJ59ojRqnyap79F/gRkBumtBYLS/fEK5jenE2KNS1EslDhhE7czmsjywMUx8SZAOFshjnerg4ZGzTk2gv6tlgU9Wn0qn1cyK4MrJ9ujwVVT47XQwytWSVAbBZBGxya4uG7o3iZ59lAIFRJI4DP53F8UlKYoBv5gg0Mb/AWE1vEsyhQydsC/nGQB/Bb4xpBw/VVYJoQzunP/bPIBgPzuR4oB2seBYlQYUptJFNkKd2kXDOA1u0P5ctu0w0epCL95dJtiSGAFfmDEVFkS07HSqUllFIlx/m9H1i7CnMzV7wjptdtp6Y7081PSxqdV0tHxO8xemmsDiHQbegAKDLrsf+Z7QdurDqK4WytfDOF2rFxikO7CpMAZl9FyQQuIKcX0xKabCQ9OIBgYMHg+CQB5z+pG7v54B1zed0ORirWUIH0JRyWKOBc/2Me4+/1GKWIhWAf8rpxGtC7Uw/6mH1VLK56r6qWc95aj5PTIjzTS7H7Vo6UGQ1N1+gqqlrAxEOiX22rSWcq/SOZHaXRIJatKU4rsBwxbY2sl1TaL/nxTquVKjlD43xVpX9X3JI93TaEhdXqC5i2OLhLP+xonhGmEnPwEwUmGTU0zqILg6YcKfQ8ebbpKEMRbtQnbO41x4DPzAge8dFC6wgWCiLD26UaVA9IYK2458C1oJDVtNKr6KR5znT0YEHcwwc9oVcFotdkGWMPZW6uxVukPdj6KcbIIoxIkzMoxTCibyYcKfZZrowzweoAR18rWgElSTV5OkPPi8gvPhCJ7xymhaYR2Kp8ZYZqIJ9+A/BF5PiXESzfGciwSy/tsQsvxPLGmSSq0Dh8zlWZvZZ56P0nCzbU+pudlVnzJJatyPsh2b0e4VJaoqFQHvi0YPAj+Y2idGBDzIbT/bX5WYCMlLDeaIBLlmcrq+tsHQ4uAZdjtysKQu7u2JGH8ttWN++Cx7a8wb6J0wWpySlIAWuZ44D88eBjDvXaNfQR+IqLQbGdiNHLBmzPxGsARGRKggCSUztDS3Y5MKW3/VxnLaxqRV2Tb1npF1pWeo5TVAxn1LBdAGslRi98KAcEx43LFGLS9PBCtN/WQigWMmwix6wDEtsxyo7ECF1EmSybrGcIMMATdSK3XrTRHXjkCleN+MXnqxbsrM/2GibXLffAkwmU0YohRlnxJXwdqg9JVrEcNSmCLbmN8ZXJY7Kan9WbXf5C6oN+1LEqWMspOcKxFu8mffP4adtmOrzNeonxGuoIKaEIo5LkB4X3kL/Juym5f06e5PDfQTzJXL0p9acWu3wfKP2R//yStZJnHI6zEMw4X3rBATCtCF8b4orb92lHNsvCyAFP9JOkMIlij6XXTh/N42yaApH75lulEi1kadzA6g0RUbxYg6FLVop2oYFjYwj1pqeLm4RUv+NRDX7RR6CC3UfF9dxx4ZnWEb7TU+QeqkKnr9IfBSYnj0578uCKQ1xxGRK2j5EasHZfac3MXwOX3o/d0fWHeEbo6a9Dw4pH9OznhQxt5NpJDMvPeaMHow7bSRKgmmRdk5tTeUuRCV8hYntBqnxgs1X9mMvT/duL+Q5mZWMbKAWF9hq6UKF+/SEmNcKpjhhtbdGAoGKlOPpkn7VeP5xIqyQ2AGpi6KV0D3sIXe8yid3TgwznRZXGuMGdYOoBNfpnsW72g+FRYul1JI6DiWsC6x1bVVKiH0vWrsUeXleQMyHuHNylGRROC32UARmcLQpj0LkDXO3yY9kXwd/C1WzQYUhKBXEvc6/Dc5zDs0+AQbTVDMeYiVONNUchCw8qPtCvYdcDz/z/cmDxBnoV8VDcBWbZPpx0+uJ25IJW3sW3XXsnm+OKfXfAmxK8x8fNOwAQiOg1BCSnFfybmUJLlIGbvmhgUWJzV3tReYeAaw6gQT4sRKlwn1lTxgLoXmognhKEQzlr1gSGsuO/EP72pufPdroK1QQcBGR5/Pt7q1jVH07NdPcsMfOJFyR7tPqbHFOJ3xfP6i503dCk89bB9VNgb1U4iQIA9N7p8rsAF+R1lexatr6Ysa7Hi3MY+yYht1emGUyqswmXH/mnK80hiZLZNFFA86vHNvoQPSbVKcMDCAu7V7tZNnW1BvIOFUyAVKH37W599Vfvd4Kbq6i/m8394mitYObSyKsweBhu8lJKv17rDSpn0CRnQZrbcuC4t1ExCtcWZzmkKc/ZyP5ftrkILXNMT+62348WtgMPo+L3VitsDFrHJaysKhT+5gsTErFyc2H7eVF3SZAbHMVFDtSfIc7qyT9msnwXJb2KxelKi4q+uYhvq3DBMp8UfBwEnXX/JjvWOfH86Z1aEFFT/9w4EHkxBSYYegi+4WzUuqjMzBbZFIp6zAvlzBb7EQstlTbqyZDasYDQBFllEy8KGncTpYYHoNdhLwA5HB2R7WWZ9nvl7leQze2sqhPYeqx8Ac5FCYBs6TJqPlpL5EVGQ6PT8AvXQ23VB+U/qidKG6RPU2T+iYK6E8gGKbI759esKL8AEe63Z2y8wvf080h/BU1iLHWM6YyHzEEEXTMu1zfbhN4Z4NG5BPiIl+OaQGW/8PiFW68sQ+Ik2smWi7DTGANC6cdBt/Zb5xYkCNSJzrcAHyJDRhctvUePRBiZoG5y/yclbSn8OXwGLQ1vsktWPe9+6267joUWXLHtrQA//ML9wXhZ+dv844Q5F0rHg2yztIpq9Fp1K4sZOgKOsfic2W/mUY3zqKScjHANhUJ5Lc20DEmI+Xhe0PpBCFF+AsAPUgKNYvZISELlu+iDgVdEdWj810StRziyPfTBDBRVCTPDU6477F9YUxJDXpuIA0iTHgDOAeVDGPWXFqRtTtj4LMnmKbE5lTFoiOmS/tEap59kE222gkq6uUBaUNclZFZiYgDfYrv2KQTz5U/fqqSh/mqPchA14NSx0hLYNq6QvSwZFhb/b2R73lvCdMLRWU5ZpvzFXk5Msc2CYnKcjgRfjvWU0t5gZ/8cImmTELVmcXK7yvViIxIQk6tP4AnuXtk/s/f+lLk5Rj7fZKFM98KKGru0RgAaqTWM/tSoLTqA7GzsuBoFtqR5ypWX1PzYLvUsmGHEQ6PTVY41fRYTGiAT58Ux3V3voLtdiijv/Rc4O0LVH04Qc6Sti8bEwPb83Q5UMR9ol67aoGzd58ABhxaX1PiNBAGOasXHhNOHuXOk8QeWD4dGNdgwbTvOediloKCAP/1z141Ul0FO2c7Mv8F8RbbE3+HEvMbFkaTfXJVSlxIMrfp9V9Mj5hj/xowTHXE0DYxoNKVbkoQ5l8OwSbPj5qNIcnSHoo1eNM4zFlabWAJk35BZy067TOvy96QctmCws9hMe7HjDGpK5Q4plo7+vMA/lVPq4kFdJrBMiN7lCWQe3rObVTYPT9nST9jTqoCkKmP2B6G03cBobT32r1WBdiYpweOFKhjbq5gdvB2WtHwZoGfPRcwm4kHV3dZ0ANb3ysyAjTkuRuImbVfAwdoEUcD2GUJDARIg1QrebkXS0RludyGfx0O0BF4/Nufihz2dbtyPBp3JekTHBZg0l7yNtVwEZOl7yIE0mUuF+XLzEr8aTTW+3NvygihiLadIYBprEuUlmPOeDKutv7O9/YRh/fJpAeDy7DRCIUGBpkcf9af38rsvEm+Mhz77OLEWaWpdi4+Bl/FFMLO4yHhuwLsr2e9Vqh1qBl0UVfIEtzoGjkjrk4+Nfk6rXz6r7hfju+Iob7Ny6aUwhvN2SJsVvuCaFKy3qbMSHZjnFJhLK/rZmY4vvIDlE/UJ/uhKY4wbRjGOoT1bR5bI9HMAQ44Enrue7h/+BgXV26s8lVZ8RQqiVhZYpx9VYMmX+57D6YwCBgh7Xq9Q3QE0khIx4KYI4NFkOdZea2Li7bTVz6L/X8GbdJ0s3vJsaG1Vz4H42I2CiCYtD3LecF2L1rP7Vnqk/M2xEJ1QFt0gMxti6iv4M+budwExHYdyx9YesNVkkPQ1O8oE1gersdZlPJ9S0ik/dpf4MTCB2PPGZ/K0I64yJNlhw9g83WB1djVlg3ASBKMQsLZhJ57khP8sTM+NM02xv0/XuBkr07e43/uUUZq2wx+8wk6LfckfXQlMz4zqktUKinmlyjz+qGqm1FdUNNUxZMMu7OUBhXc0c4o3N8v+hTh3RjbG5z7Hhf2xz0pBZ2j37V2YCubptXFwiQQevpc+u9tobSE5lyP84bjH4DnA73Poc0mBys5lrNAgE122FwEYdkVkJaVID4GfFuBtZULBzisjCQKlbsY4wIvKy4qrzqPNTsuDJHJWfTKCAJrcA1eO2jCZ3qlJCLdehIPLZ5NbiupsGB9GyKU1wLO2pF8l9Qnx0WzbeGySqy9SKiNphCC9NZtDC0uzLHEZTIwKMcJ8CFV0OMKiwmZC+W7C9ayxjB+EmZ72Y9B79X/x1uIiaHYTPKqq6hR3UUDBzm/V5OUiIX02L4GXNnuAgbBo1r01Ir3dUiZQI1Y3/AVVhnxdfITmZRsrwb6XrrfNbc1SpTt2EGTU79EjfI4dSHXlxI2a6hNYk2lZAIOfFkF6GwMgeTFDVs9TssTTSPtIYAMDG0KbHGvTY8uf7oL9K7w48FFcVxcMENkPju4u0xQ8Gt9nq0mSNEYttNbIhvgZZYd0kJIqX1cyYrapyDutzI7t3i8atiDEpWng8OKoXI9e6PL76nQflV/bwjniPjEOIIYnSJzu+4De0t/lqO3dL8eP0ss/wBu9SdeJfwklal6hdofSUtsLyJiMN9WeafAxEj9Q78GsKx1nK9lfEyt771L0r5JTtACHjbzLjDtDVmnyirynwvA3I4W+TV6ARTMaqPJsbZOdIGFNtcU56f28QZdlp74rBcooZ5nqh2ocErMpAHmXVBe0QplylT3T7uV+aNYzowCUq9R1jgIH8g2Khu9yBiijWYRW2P1GjQWMAAhMu/fD/1LkLMHlsACnSj8ESolKSLepxaisGQTdlS/+xvxlBQBSgTL3qcOK0ho7eQ2MZBhdDJr5OHPtxEs4NA6nnPeDSBOz01ysbRKTZO5/DJsx+ZWmAVimb9jJDkyfdw+ipynjVCdvSd0mXGiQSaHrdI3xtUMImmiosRWhAevW2GhzBzcUWruTUcbvUqCMuYhqrnQ8El2f9VBzJTGEhKyAwQBkbLYAP1/ZDLY6YXPSnwQbDKpAgLwTn64r1Ql3YnedoEuWkA2k/v89Mk3LC8OirmZVQ8HFLjSXw0I/tqbPGzbVbiWQDSBo74/nmNF9RW9LRHekN0R7hbXwaSjUXOdXHaMiP0lRod6rSGD6yk5MyEttj8UyjuHDs/vTzBP/aYkPwMJ5XJuy6RFqeIsH+iNckMNMUu8SX5V3uHM7RnjDJtcsYWa1XJhTLKMJyfS3dayj6Dc1BdVE5T5SPbFftCCds0Jc0ecQy4nP/dA39daFQkuJXWiHcK0ZzcU7xPtbFTVx6bDDQ67b5ZlPasaWHBM2BCrf5SIwySzxFHRfT5OKpF7U/pfn1nBD/2zbuiGQa6YK6OT7/vT2IzcJfcFzPT8Iw/wYVYkZlmH/bB1C5Rk+KnKjh8ozJszK50oj1CZT03re31anBzQwZoJ0qMG9NaSNOX0MNyPTzVRvssNZdsa+gRlHfujM+HAk/yERdFUZ/5X61ZlHQKfh09wC+/n5ZDPbuVeQP5NVtdLj2pZZwW6aA6pgANYjM01YHeUwlaFgKXipBMinT6Yu6rjBuYSz7FU2jrQSMQbxbBvC6YtIErx0K0tMB5B8Kk7wrSQVZP3LsLt/ii+99bdHfmPnr4u5ZVL3+2+jzSkwEc/ilfOliE1vjSrTvPmpyF78ZumlcpyTaAGarLqQTxZfRVClq/yk3dFoZwKvz2sfWDbmHauLq1UxMoL1HyOA1yVRW4RHZWKWv4RrMHPEtI+6jMS6lhud+wDGLuItQkWP7KaPWcrWfngT1kK8aC55vjKZh80x4VQhC7i7HnsSlzv6wixw55107YK7SAXZVjz8sZGttzuB5ZOjKBijeRgKjH4LmaOM9Oq1gyRxmVpORg8gIDgvMsioQN43dXWkZ8EshvM1X78MqVE/lHh3cqCx7BonAeb/klOTC4CJln0SPyqyQ0TMosJn//rta0iHXwwtqWL3yO0NxxwSI1OlVjhguWyGCxu+K+RR0Kkzu6joy3NwLXkk+qW8EisvQiWxr2Jjc6D0IVGLOGakuXaPBVSld41sSYrGtvHjnXjZ+Q0UJ6lLBsb3N1aflBvDl2U+gDHDpqV6hT2wcmJh2JHUqbyhu0OBaLz8Vx3UGp19BbNnQyawmw54H4w8/p33x6LHqHNUzVw0C83tClrF1Ygv4/wD5S7/jEIye2QnIbftXoDosYSvMfvCfEcRYYC9jWNnTrhHlR/zS7pF2Mda6r2+tOjKj8zNV/Se1BShJ3HkDk9IoS7D82rj1HxOZnb3QWEnu4i6B9fcpFz6Iw+Js/Kaf3/tC/+Hhb0R5mQIlfCZyn1Cg6PookJw71Uo9GyPiYQiLHYRARCujaktngldtXYlGHZprdGOi+YAJRok5Cu8LsaF6CQcGQnW6r6LXGZPNNLNESpEUkGth+wwjmZc84oh4iErKMxdaQhNDn3OkF9wslW49CwbSsztuck2FxA1aMFJAWEasF0Lp0l+UJbSpDfgNxGcD9UsXyL7ogqK0wEETc//b3OqUsroBwHpz4Ibt/5CSrudKM0kNMXAKcAd8wBwaCuu6F7MxhS/KzntWyqrvD5YrDJFW7M7C5KfEWoyGfTSTcH358SrQh3nSLCZJLcI7nlZQZg6zeukfX5qLSOq1MV75kRNPWqlRO4UTUpNMZWMevwlfqiJEFx7Ld9xTijL3VVCqG0btWvdAs756bHII6RJ438SvwlE757HY8fpIROsXdN8rVaXe4F7xk+iWvGZuWquoIYQKSwOqe1ApMAhfTtggAxq5xzQkTCpOfS9VgydeHRsNFMHbgGRK4jLyb3FeikvV0t+XpDHbQ0hJ4W+IEsTrIG1KNzuzFEs86+4P56w35PzUVerAELOhlY2UvFoj1waldpZ7Vq1Pqf+sRwKAtRRh2+yLbj0FLjNODsbX/NMp7R043c8/gQr0IMkCsMr4phjUBxYf6UNww9fgz21drVtRY978XDWbJnK0YC2QmgyxSvr3j7cIXr9NU3ZVqN1zlHNljp4B7BhuqFvhQd89RJ2Fj/XzMya5be1/gM6U1k9ZlOgMdEilQWNZ1yK0bdak3Kr9xOTPWGHDHl9GLlW6oRV1YvpYLLYGB0MR9PfdRxLvn05wXyUm9kWmOiMuQTx4WDLMGmtysNlLpR/Khif/cw5WV27r3fWgzvN1bgVtxJDF/8/e42gSIexPclHx7Z0G0CU3prANk0x6cpFNEF0qJ3wjtIewxjXJLFeTUAQ+o6C2+6wAx3JDKwuHxjindtMGqyywPrgyfDFLP92ngVHhuLNmAq/lqUmfSslysbqIl8T2NigUCErRta5Yw12LFJhz4jlLJv0YhXmruwAgp6fS2twyqh4TCiFNcicNDq3kANrMF37uI9m3KYB5sorDUM6PnJipu/9RtStvjpEG3j1x+Zk0GLQ3cYUBY/jo7KP1uZoKExo568fwqi1aOwXAFtyyh9OZgTXb7qwcj+QRggTwzDgTzLgkjy7tspsmEhgdnaYr2kOBUqzoNY6Ps+hKunBi0V++t1K+U0SRnHRXXuLNxPYFX7JbCgNP6aTM3zu8katQv9IKRn/n5/vKDybOFSIbYXa2i8AimldhzAKPmtB9okorHfFFIDKCH9IzcwTWyorshmdfAG0ZWUh1yQvw43Q1TayKbUQJ+ap/8l/nene5+0/umBPJRD1dLFyeH2NCodkPDZsRxkBEIhPDqEnhKEU8AHxJpIjyC1Mip4sJlqzhrSfhwHgtfFpb8Hbb+7iHkhZfGC16ZwWcRd6RUXoEIA1YExB929sDcfGUrp0tcxDFTJXZEGo+TbTVErl0Ki1NhiS9h0ZuiSvmar0hyyEVSucNDL4jwEB9Tu+pE8FJAvMGSNywpzy0J76ji3nfYZ2Esnp04enjfZGoua/3aTK8RJHxxRF2T9q/eAzICnOVTedNQQIUqrgcWjg4BU39o7bP1eTqonI7HulYhx681Q2+8U5zimyNPUKOkjx4VToYhmEe0ux9IHTbP/Uhag/dTBH+MCnieB9vAHI/bqe96eJs5PNioCaLAFeHkkS4faGGS71xJa+KQqCA7qpcvqGYF1YVqWebTJg8r1L/WdAPCL2nxNHK0niau0p4DKjynrdEONfew6UpCSng1yXW4w468sePPn/tE+FDXSCz7Hw+4r+4w1IM8q7xzi3NZn/1Lj/sUH1iw4k/uiSdTz7V3dtFc28UbVGM/QDCcm9OR2sUjtCEjlbGIlaBZciKssruVEqQZiFKrUoGBhUM4zkZB+1mE0L5g1hEKymWmpYMMA2tikXORygpKuoERjCHiOvsHm/iu8fdgQGXgQRU/Mj0YiP29BrlQf+IXEMJE6biAILtAUD+hqs7mEHxsHkN9hL4yshKaE4PL8bpkxu6ofv4T7lc7sTeZtl79Lo6RiQxn3pAV+yswC0/12LvzR3kPhWdzUZGQVMmoBZb1TQMtVSw9ZKIJ86to0Rq+JLdpzt7CAjpqbe5k4KFhKY0x/ZBjI8mUkqDWVKU9DrILZdvUzkEjDzeELEFxMWCeBXIJUUOgNas76hZBN8aLsDEVEabQKI1HtM2CM9q6wK4jpnkC3WFSWKIrBX5pfogqRFmBDu7Nagpef/RkZUvpL0XOOaO9KvYCu/UQcScKdnvC7xExbcAuR0kZvZ6MZoh9kuT+ry9ltAOL/Sa8lvV+g0VfZxZrfKIdPMY0wAq+GYbf9BiyS0NZm4UEDNV5loVF6K+6vhxRuMITuyNDxSPgJxQivg8IidSL7zL7+hN6JFrs9FxbHu0hl7tN7Lrk8+T7zOeAfPW/5dNFNuAINgXl1o5W26bb7WsJMUQcRm9kgF2FdmZK6kR/bx3ErsvewMf3UJ2r1GWv2Lbqr/pXaZ0QyNRm3xE4Ddeh01JVe/Bk1T23vKcb8H92nRn1uOU8KBgh/zUxrTxkeODLhtfO0vWqdieQ/XkowpyuxtUWUVG15Q9X6bSFjYxrHNHX03gOPwPFl9BWWpFhnttKza3mAZVUC47wIIVFdXonutvC3EJFHuvsf7l0pxMmI2S9t6MecS65JVAWZxPcTe2XD0d/q4YFRtZmD6ylkA/Uz4IsBZtChD+8SBAp1gsVs+jFv6RZ5d3uIchWqHimzFglGKb6UGT3xcyrnJOhUH6oSvad4H15YlwiBvncN4wiW2C00o7h4M/ekukKf27wWPMVSgT16K/PJv/0iJOWn2B0nbBBuI2YqppxR28V7J4Sypmc/7igb3m/Y58dYgVRGxhR+trTVJO3KCCZVD3adyhG9ylKnI3UIGGqggCe50nqwjhuF3hf45PdVygZsGpJgiymos8R6FjdeXcJ3tD+bKxMc8lyzkOuAh2ZASzYdHhHkrOHGEJN6FO8834c06qy0D4bBm35DIMQ/9Md+eXnUkFFzo8JAfDEQ/T6tcfEFxca1LYAnTrdgPLVGOufzIHtb3mioLmVsUjq8eB23E1qcK9qOFXve569d5HMyl4o6brGoGo1F8Dyu8ZEbNqoj4qftmrcpT0YC8POChwbZXAKZyxvp+2jQemWA4TM39d6mgyvMKbvqMlJ5of3MOsgxCEw2U7u2UdE27w3al6bR9eeG5+iuuZ2O2No18UmrMxCIstHSbGdM70F3EeC3AIlCEYzicx1f6QOlcU7m+80mMLeZO7FBFYuGnONifQgOQlMuNPg1oWefl+kgwmyghgA6EykQ0pBCfOI530K9Sxgg9eeQCjz2NnvJ/02JPSFWh1YmoO20v3FewSr3IboGe4pMlLCrmkmbYuy4JUPZV5clz8Eu7L25s5ve1HYjQJxUiixTOhcJv7Pl+Za4acGlTe5/QUgLPMTNbfsqywuK2sydmHVn7p7OziRAGJ+04yaEIyli/iGCv1rduFkaN3Ppi6lLCBNv25W6NSmS7lOkt0Xjna1VOyCTN+PkfJrAl91kdZutZUeXeKNf2LwCCUw/9lX9d6cBPOhFLT0TUfAEgKuTf2/9vWSm913E80veLMJfxWFGd6rhqsR4zWIVQps3hb6LN+2zgfuFqgYiELk2O1Thn2MNcqy6ZySuGQyfwRnElgkIDlZB5iOaJ2oBv0HPOONapdqpXD72RG99tnWn9n3AY97VfHOI2gLvLiPaD118rncXCyhpVrUoM31jolQ4d3mLUBMraPEkV0b/wnJzaDtGpCy05eZ8ItZv9E61Fb/islPe48BHLPKoXkk2h70fH/GKwrJzU78UjvmZqr4emF6q+CCSjRFMDRekRIl6e1N/IAUZXh3rG2qi6TQpz5s/pNgsphB2+mb9q4NrsCtrB2Qy8doYEHEIG8T8MnGtuR2mVfVLco/yyk0hyUUVqgN589O5PRC+Ay0/uMn2lx95nbAV5/LXB2dlxsG5weLVwahgtQhybmNzHSdpKahOKdKa6nn4k5B/Xd9Lf71ook+ihELaTVLHtKLMcL1njjJraDmaZZHK4hqlE1oexjTUNrLRv1KQ/jm1jC74QHCtXVWIRAqxWkdXq/TbZkqrU2LDy6QzpHZD5r/1ewVEG9X/WyeTs50SWssqTRzPqadqkGMDhX/Gyqx+uk7unMAtkqXbbbVtNpadngi/a/A9EfDgfuGAirs2FKAGqYe57FDtlW3zRpgQ+sZnBMfaqnSGxHDtmqLFD8fRoekKV1S1s5WbhjapcPgrhR73iFvdKoYy0WHcK6UrVTB3yU+yihu3P8vIoFzmvDHsDPXYw5LGdY9xg2U0OJjqo+OaFozhKLc7UftXzLrRC9ASFjWs7FIdMZfvclEVZEYXlKmIyVMLUpa4AMJOKEDWbbAk0ZQfvQcil0QiIOgk55QfNPbF8Ubdy3kmNA6xlOVqakt+OAWPtXJm+PKOpGQbjf2BaZvvVgKdlqDz5j0Sj4SQBHIh1cDYMuCtgb8QCQKy8r4tsUovuT04tNOigbyRqclWwImXWrIO47zpanSFoTlTTc6Mzs7BxVgBoib9O47XR9BdHY7zaytXdwW2xrn8fCZq7alRyF4Q64OoVN3G+LaRj2XTkmNHIjDM/R0Q+F9cz2CeqBahStPa1HvjYgyCvU1CWmtl1kNeuj8t6tIYO5ZomiSKto4Fy1XZWhTQb62XRmq2Bp9RiIcnxY31afbG34eaKdSIbKMb2iWFmLEF9ugobriUMaVMwiEKmYJli0HlIOVouziFckTzNIeEH1MIyrqs9crLulAnB8tnAxWVMrf3XzqmO8IWTy3XZ4e7KS4Ddp73XyK2UxewXWWly6emsW1M5JcFX+NxvsaBX7O907t2SQQZMPcgH4EfQ6F4PAEUH5rR7BDCcNssM49+mxBf5SB7BhrDTCgBX3Z24EGlm35WVgwe+HoXp5WutOHyO6zDHo1jFeg0NSXw39oIagpawGAqcQuY+reJU1WzUg6LuTGnzdFy+xJNIkFtzgk40a6zpC9BhHw78GK2Ec2CzgciA80eTdqZ9HPp+YWGaTxeCF1WKH6IjWDQP1kXBum7K1ANxzxNA74zSJa+ARcczCZATHZ5qbxe6StArTuA41Iig4xMYbxkmYKWaICaitAFk1kOG5TmurKhuJibpkGYLaeJw1TqelKpanGzkREPojT0c4UZ//ACXuJslABGgCdLNc/kHBUpfT1zP4qDBgGIhZoWdEdhQ4D/xR3nlwW7R1J1ZbXwfmcLyIkFO6PfAGE3G66rdpVwipGmbj5HGzEKpLxaTKe5UXhmeJys+1D0EPH9X9FErCMFJi7InxtfEEO+Jo5C5wbMXM7u8/VDWxOJbLC4rZCsjy89sT1/xCYP7oc9STSWuz6wN9mWDMnWFnMnvfpYGugGaZjzJetgrnpOgFa8DsGItpxCwF097mVHHV9McsUSDxn0ipbEKjvYd8Ym7DPgsjnPg91LYqTiQRXmERfP4RZ5+7iitCHbAufQx8NDl1NH1TDvkyMe4MeQs4jlAL9RBve3qcBepXacio2B7heniqiBSa0k63o29yHIZy6W271H2BON4Z4sBjzCrHz77lxsIRZyYw3wfwHE0PXpk3LSmPJwNNKYmlysulSi3YSub3MzsujOpqIYlAGKxmqmJ9wIEltI9fv3u/W8j8KAyccdG3H45LzVmJxDEx4QbSSilTjqExrrkJGcMkGhXc5ipTZmMU0k2b5T3RRdWEDwl8FJdRiLT98P2wNA6cTie+9hAWnCLW6xOXC/zSzReA1q4j/FLjxtOAM1cPNZk4cU5ylzEu4jgZZQMN31deml40Y2wk1VCbucbw1MUKB8/paJMKfmo/6AqxJ/aB13dwyuWo2h4n+eTVX1cczf7s1pkY49mNqMje6jWrnQVfa18fnjpXNH0jx2ggMn5BaNfMExJFmiF5zI22J72pwFKufIjDs/ygjtlTa6ielWluGwVmJEZTCUcN5hrTQWHRCeRPphH5ZbfgpItE0JV64oBU1nXM38ALvhWKRb2nzTb2fllJOAR+Gh1dDEp7j6RNuALeA3kllJSCp7rI+yWRue0j0xPu2DxZC+3ppJAQc5SKJoYkEnFqz8EmFz33bw49vgu+acCkFobLt+Hte97HYmO0hbQyBoIncYZJm1lKLrOGgj7+ZeE9OJVXyFppxA8R+uzTZk5Qmo9eBqYzyyBzzxPc/Yv4ZXKc+LpcFypmj35ejRHEgOYVX4pijJfbHHdACzdkm6d1MS4X9Kd5QeaHZGkX9HidzyWibIxFyZLd7ODqPpPRKthkugUVcxXi0G6WgYl7lGhGmsk2oRd8LbG5XaIhjtJZi9ImyFffR5swJiEIZnmidVa2DvAcoPEvWlnFAAZaDQF5WB5R9ETzK2ljUAqjB12l+DDy3nBZBgnG+IQSawZbTueFGfZgjdkSnCqgBoYibny8wn1e1T/7RQXppOLKRWV0x+TzmqeMKUR7H080Cigk06jpBwAxg0cQOUafLqBD7Z+lU0IIS7QSXrOg7ThJFuqoFr9jxMgl8YPm/4hd6tnJQQIn2EpETkG16qdx4EQPYoNiOfJnFummvsmN2413TdCiIiCRN5yiHeXWb4uXXcoAncf1xfNkp6rh1BmI2vMQNw3NF2diUduJ3PGPcHZeTwkxwG9hwocucf8T8TNaTs/WkVhBiBb76iLCcBJW9Ml6UDOVOqoNKzc01mTAr86X4+cqkkdyivYwssDfHQHyQKpr1hEzEZygTskEUBXhSQGxdd8Cp56iq92M38s/HYRO20GuH4E91D8wSZ+KA095NoAVEC9raF6eJjEIs66+hgEOROtPxROldnuM6I3lJJ0VG5GG/F+yqEAAbiAH4ejxncrAM4tQ9S1zUbx6ndKvmRLzSuY+dpTbs6IYL2MAmbtLvQb0aLNQxJwrgaKDGRYb2lUToUJWC+YWkB/zFu5tsYmJyEivYaxhLBheyUOecVUKAxmEXzL4xq0WYuCGEUMGmXetKBOaQ3QKw18QJmg5qjhyOxm0Pu0x0E2AobqED46sT598l+/IjHS12bbp9Nq3cwkUVclyaAPSneHjc6I9Xmx3OiHprWHjVtjOQBaOsPBcpwe4VDHBNm6o+5ImMk1luXApdCRPNN0c2+v0VI+9SaDHgD49vBbxVk/OdThcBG2uFTf5JypJilDnB/VjNPfC5lv63H4U5Du00WAJTF2BazF6t2TFh/WsutzWA6iJJU8QXYr3xiShFQ5K7/NmC8uqKOL4YKdU0LgEPeekjp0apOCnC/fOwuDV52eZlwgt1a3JQZ4I2ysKCjEzSsUAhPkacacCZUnRwE6hMuVytEb5rojXCM+Vq/ckaXJRwgdhPeT5sri+CyO/24euau0GvDi1qa4iwYIzADluDuWCJoPw7YlOUqo5Ew4M8yuYnjdYSOKY7//FLwP5HlQNwuDZeVjqKK2vUBtZCPmlIXJIGNrYVBh1w2GCXKR+O8dR+N7sC9waOaV0p7UUT4wYGwx31EyCha17DpC282dg4vI6z+gjOry7qpjcXWC5o5RBOCon3t/nogqGYHAXS/H+E4ooiybSpljhLGqoWZK9BLwOwqwLlQScL8xArzqMGoRaw+nvDQ7Z7jLwuPOnyYEzJoXh1j4+ag/TOr1s3z/PwIOFu7DPW43T/XB6kP52DUtWhkN7YqhynRSx9ThN4COijBlTyMmy4kEy64wqTV7CU1mXypiffTdXywwfkGYr0rRdrkF7hT0PVDwlTGWKwCWwxg1Z0csDWyUNAccPSX6MlgBd2eECrObxGnfSpvO77a+NYgG2xwnTKSPGBTNZDIFLPJ2KrN4Zl3PldUsGQAEnpMHkwrq1mMocCt11RppWcfLQT3T5IPzK2WSROAksBTrEfD313+TPBrg08FO0dHt65eWdb0bIewJZ5h/VWnDFgoewNhG8+lcKQmZslk0VRl343CLX010XK56rtPj0JElPncgg6Rsz8eKaDOWj09j3rv2NvqS5As9p0VVdnNJ2uw0BhaXHYUc1oZzb27jG3hfj8G7blLrXKYns63kk2Rmfg75tUp9VK4J4NDSjp2p1lxeRixG4AORELEHYbqmI6hAd6OdMEEdD+TImCT9LzZYiQ7Zd60q7PN3REq3H92rAB/nfSUaEfxVVXGOPVCSAKaJRIrJkNVgQcnilTGY1C+MKfgirpvWPdRUyCmiyzSqTRn2y12Yaq8QfcYRXbe2QXglaupbRgY5NLyo5Ag+X7TO21kIQChR1VWsVrm7c8mU13q/sDiBR/PTUjknX9g/TRErOStPxfYZWYovNHgBFyfDS6veqraaNHBRli/p4XBApmN60TbYroV+nQdmoJyDnOcfUy9O6Gb4ylodgRbjSXlZnPmrmh8/E0uRiQDm1yZBGzsfG7EnFdLFng6WP+Fn99kpWpwt1yryRX68N7cZe6PSTSyumTvV9aJ6UT96dt0lPmkiyhCiUADbL7N/xllVlJQJpPq0nIi7TZEPWaw0bM8WKK3/xa1m3iVDiThByBnWpeoRnKTXVP1/eRhmVOibx6SqrY+XIBh/6FXUdym+3k= \ No newline at end of file diff --git a/lib/蛋蛋赞.js b/lib/蛋蛋赞.js new file mode 100644 index 0000000..4ccd9e3 --- /dev/null +++ b/lib/蛋蛋赞.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+ibi+ibi+i1nicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuZGR6dm9kLmNvbScsCiAgICAvLyB1cmw6Jy9meWNsYXNzL2luZGV4X2Z5cGFnZS5odG1sWy9meWNsYXNzL2luZGV4Lmh0bWxdJywgCiAgICAvLyB1cmw6ICcvaW5kZXgucGhwL3ZvZC9zaG93L2lkL2Z5Y2xhc3MvcGFnZS9meXBhZ2UuaHRtbCcsCiAgICB1cmw6ICcvaW5kZXgucGhwL3ZvZC9zaG93L2lkL2Z5ZmlsdGVyLmh0bWwnLAogICAgZmlsdGVyYWJsZTogMSwvL+aYr+WQpuWQr+eUqOWIhuexu+etm+mAiSwKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmNhdGVJZH19e3tmbC5hcmVhfX17e2ZsLmJ5IG9yICIvYnkvdGltZSJ9fS9wYWdlL2Z5cGFnZXt7ZmwueWVhcn19JywKICAgIGZpbHRlcjogewogICAgICAgICIxIjpbeyJrZXkiOiJjYXRlSWQiLCJuYW1lIjoi5YiG57G7IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiMSJ9LHsibiI6IuWKqOS9nOeJhyIsInYiOiI2In0seyJuIjoi5Zac5Ymn54mHIiwidiI6IjcifSx7Im4iOiLniLHmg4XniYciLCJ2IjoiOCJ9LHsibiI6IuenkeW5u+eJhyIsInYiOiI5In0seyJuIjoi5oGQ5oCW54mHIiwidiI6IjEwIn0seyJuIjoi5Ymn5oOF54mHIiwidiI6IjExIn0seyJuIjoi5aWH5bm754mHIiwidiI6IjMwIn0seyJuIjoi5oiY5LqJ54mHIiwidiI6IjEyIn0seyJuIjoi54qv572q54mHIiwidiI6IjU0In0seyJuIjoi5Yqo5ryr55S15b2xIiwidiI6IjU1In1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi5aSn6ZmGIiwidiI6Ii9hcmVhL+Wkp+mZhiJ9LHsibiI6Iummmea4ryIsInYiOiIvYXJlYS/pppnmuK8ifSx7Im4iOiLlj7Dmub4iLCJ2IjoiL2FyZWEv5Y+w5rm+In0seyJuIjoi576O5Zu9IiwidiI6Ii9hcmVhL+e+juWbvSJ9LHsibiI6IuazleWbvSIsInYiOiIvYXJlYS/ms5Xlm70ifSx7Im4iOiLoi7Hlm70iLCJ2IjoiL2FyZWEv6Iux5Zu9In0seyJuIjoi5pel5pysIiwidiI6Ii9hcmVhL+aXpeacrCJ9LHsibiI6IumfqeWbvSIsInYiOiIvYXJlYS/pn6nlm70ifSx7Im4iOiLlvrflm70iLCJ2IjoiL2FyZWEv5b635Zu9In0seyJuIjoi5rOw5Zu9IiwidiI6Ii9hcmVhL+azsOWbvSJ9LHsibiI6IuWNsOW6piIsInYiOiIvYXJlYS/ljbDluqYifSx7Im4iOiLmhI/lpKfliKkiLCJ2IjoiL2FyZWEv5oSP5aSn5YipIn0seyJuIjoi6KW/54+t54mZIiwidiI6Ii9hcmVhL+ilv+ePreeJmSJ9LHsibiI6IuWKoOaLv+WkpyIsInYiOiIvYXJlYS/liqDmi7/lpKcifSx7Im4iOiLlhbbku5YiLCJ2IjoiL2FyZWEv5YW25LuWIn1dfSx7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05LujIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiMjAyNCIsInYiOiIveWVhci8yMDI0In0seyJuIjoiMjAyMyIsInYiOiIveWVhci8yMDIzIn0seyJuIjoiMjAyMiIsInYiOiIveWVhci8yMDIyIn0seyJuIjoiMjAyMSIsInYiOiIveWVhci8yMDIxIn0seyJuIjoiMjAyMCIsInYiOiIveWVhci8yMDIwIn0seyJuIjoiMjAxOSIsInYiOiIveWVhci8yMDE5In0seyJuIjoiMjAxOCIsInYiOiIveWVhci8yMDE4In0seyJuIjoiMjAxNyIsInYiOiIveWVhci8yMDE3In0seyJuIjoiMjAxNiIsInYiOiIveWVhci8yMDE2In0seyJuIjoiMjAxNSIsInYiOiIveWVhci8yMDE1In0seyJuIjoiMjAxNCIsInYiOiIveWVhci8yMDE0In0seyJuIjoiMjAxMyIsInYiOiIveWVhci8yMDEzIn0seyJuIjoiMjAxMiIsInYiOiIveWVhci8yMDEyIn0seyJuIjoiMjAxMSIsInYiOiIveWVhci8yMDExIn0seyJuIjoiMjAxMCIsInYiOiIveWVhci8yMDEwIn1dfSx7ImtleSI6ImJ5IiwibmFtZSI6IuaOkuW6jyIsInZhbHVlIjpbeyJuIjoi5pe26Ze0IiwidiI6Ii9ieS90aW1lIn0seyJuIjoi5Lq65rCUIiwidiI6Ii9ieS9oaXRzIn0seyJuIjoi6K+E5YiGIiwidiI6Ii9ieS9zY29yZSJ9XX1dLAogICAgICAgICIyIjpbeyJrZXkiOiJjYXRlSWQiLCJuYW1lIjoi5YiG57G7IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiMiJ9LHsibiI6IuWbveS6p+WJpyIsInYiOiIxMyJ9LHsibiI6Iua4r+WPsOWJpyIsInYiOiIxNCJ9LHsibiI6IuaXpemfqeWJpyIsInYiOiIxNSJ9LHsibiI6Iuasp+e+juWJpyIsInYiOiIxNiJ9LHsibiI6Iua1t+WkluWJpyIsInYiOiIzMSJ9LHsibiI6Iue6quW9leeJhyIsInYiOiIyMCJ9XX0seyJrZXkiOiJhcmVhIiwibmFtZSI6IuWcsOWMuiIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IuWGheWcsCIsInYiOiIvYXJlYS/lhoXlnLAifSx7Im4iOiLpn6nlm70iLCJ2IjoiL2FyZWEv6Z+p5Zu9In0seyJuIjoi6aaZ5rivIiwidiI6Ii9hcmVhL+mmmea4ryJ9LHsibiI6IuWPsOa5viIsInYiOiIvYXJlYS/lj7Dmub4ifSx7Im4iOiLml6XmnKwiLCJ2IjoiL2FyZWEv5pel5pysIn0seyJuIjoi576O5Zu9IiwidiI6Ii9hcmVhL+e+juWbvSJ9LHsibiI6IuazsOWbvSIsInYiOiIvYXJlYS/ms7Dlm70ifSx7Im4iOiLoi7Hlm70iLCJ2IjoiL2FyZWEv6Iux5Zu9In0seyJuIjoi5paw5Yqg5Z2hIiwidiI6Ii9hcmVhL+aWsOWKoOWdoSJ9LHsibiI6IuWFtuS7liIsInYiOiIvYXJlYS/lhbbku5YifV19LHsia2V5IjoieWVhciIsIm5hbWUiOiLlubTku6MiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiIyMDI0IiwidiI6Ii95ZWFyLzIwMjQifSx7Im4iOiIyMDIzIiwidiI6Ii95ZWFyLzIwMjMifSx7Im4iOiIyMDIyIiwidiI6Ii95ZWFyLzIwMjIifSx7Im4iOiIyMDIxIiwidiI6Ii95ZWFyLzIwMjEifSx7Im4iOiIyMDIwIiwidiI6Ii95ZWFyLzIwMjAifSx7Im4iOiIyMDE5IiwidiI6Ii95ZWFyLzIwMTkifSx7Im4iOiIyMDE4IiwidiI6Ii95ZWFyLzIwMTgifSx7Im4iOiIyMDE3IiwidiI6Ii95ZWFyLzIwMTcifSx7Im4iOiIyMDE2IiwidiI6Ii95ZWFyLzIwMTYifSx7Im4iOiIyMDE1IiwidiI6Ii95ZWFyLzIwMTUifSx7Im4iOiIyMDE0IiwidiI6Ii95ZWFyLzIwMTQifSx7Im4iOiIyMDEzIiwidiI6Ii95ZWFyLzIwMTMifSx7Im4iOiIyMDEyIiwidiI6Ii95ZWFyLzIwMTIifSx7Im4iOiIyMDExIiwidiI6Ii95ZWFyLzIwMTEifSx7Im4iOiIyMDEwIiwidiI6Ii95ZWFyLzIwMTAifSx7Im4iOiIyMDA5IiwidiI6Ii95ZWFyLzIwMDkifSx7Im4iOiIyMDA4IiwidiI6Ii95ZWFyLzIwMDgifSx7Im4iOiIyMDA2IiwidiI6Ii95ZWFyLzIwMDYifSx7Im4iOiIyMDA1IiwidiI6Ii95ZWFyLzIwMDUifSx7Im4iOiIyMDA0IiwidiI6Ii95ZWFyLzIwMDQifV19LHsia2V5IjoiYnkiLCJuYW1lIjoi5o6S5bqPIiwidmFsdWUiOlt7Im4iOiLml7bpl7QiLCJ2IjoiL2J5L3RpbWUifSx7Im4iOiLkurrmsJQiLCJ2IjoiL2J5L2hpdHMifSx7Im4iOiLor4TliIYiLCJ2IjoiL2J5L3Njb3JlIn1dfV0sCiAgICAgICAgIjMiOlt7ImtleSI6ImNhdGVJZCIsIm5hbWUiOiLliIbnsbsiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIzIn0seyJuIjoi5Zu95Lqn57u86Im6IiwidiI6IjI3In0seyJuIjoi5pel6Z+p57u86Im6IiwidiI6IjI4In0seyJuIjoi5qyn576O57u86Im6IiwidiI6IjI5In1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoi5YaF5ZywIiwidiI6Ii9hcmVhL+WGheWcsCJ9LHsibiI6Iua4r+WPsCIsInYiOiIvYXJlYS/muK/lj7AifSx7Im4iOiLml6Xpn6kiLCJ2IjoiL2FyZWEv5pel6Z+pIn0seyJuIjoi5qyn576OIiwidiI6Ii9hcmVhL+asp+e+jiJ9XX0seyJrZXkiOiJ5ZWFyIiwibmFtZSI6IuW5tOS7oyIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IiJ9LHsibiI6IjIwMjQiLCJ2IjoiL3llYXIvMjAyNCJ9LHsibiI6IjIwMjMiLCJ2IjoiL3llYXIvMjAyMyJ9LHsibiI6IjIwMjIiLCJ2IjoiL3llYXIvMjAyMiJ9LHsibiI6IjIwMjEiLCJ2IjoiL3llYXIvMjAyMSJ9LHsibiI6IjIwMjAiLCJ2IjoiL3llYXIvMjAyMCJ9LHsibiI6IjIwMTkiLCJ2IjoiL3llYXIvMjAxOSJ9LHsibiI6IjIwMTgiLCJ2IjoiL3llYXIvMjAxOCJ9LHsibiI6IjIwMTciLCJ2IjoiL3llYXIvMjAxNyJ9LHsibiI6IjIwMTYiLCJ2IjoiL3llYXIvMjAxNiJ9LHsibiI6IjIwMTUiLCJ2IjoiL3llYXIvMjAxNSJ9LHsibiI6IjIwMTQiLCJ2IjoiL3llYXIvMjAxNCJ9LHsibiI6IjIwMTMiLCJ2IjoiL3llYXIvMjAxMyJ9LHsibiI6IjIwMTIiLCJ2IjoiL3llYXIvMjAxMiJ9LHsibiI6IjIwMTEiLCJ2IjoiL3llYXIvMjAxMSJ9LHsibiI6IjIwMTAiLCJ2IjoiL3llYXIvMjAxMCJ9LHsibiI6IjIwMDkiLCJ2IjoiL3llYXIvMjAwOSJ9LHsibiI6IjIwMDgiLCJ2IjoiL3llYXIvMjAwOCJ9LHsibiI6IjIwMDciLCJ2IjoiL3llYXIvMjAwNyJ9LHsibiI6IjIwMDYiLCJ2IjoiL3llYXIvMjAwNiJ9LHsibiI6IjIwMDUiLCJ2IjoiL3llYXIvMjAwNSJ9LHsibiI6IjIwMDQiLCJ2IjoiL3llYXIvMjAwNCJ9XX0seyJrZXkiOiJieSIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IuaXtumXtCIsInYiOiIvYnkvdGltZSJ9LHsibiI6IuS6uuawlCIsInYiOiIvYnkvaGl0cyJ9LHsibiI6IuivhOWIhiIsInYiOiIvYnkvc2NvcmUifV19XSwKICAgICAgICAiNCI6W3sia2V5IjoiY2F0ZUlkIiwibmFtZSI6IuWIhuexuyIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IjQifSx7Im4iOiLlm73kuqfliqjmvKsiLCJ2IjoiMjQifSx7Im4iOiLml6Xpn6nliqjmvKsiLCJ2IjoiMjUifSx7Im4iOiLmrKfnvo7liqjmvKsiLCJ2IjoiMjYifV19LHsia2V5IjoiYXJlYSIsIm5hbWUiOiLlnLDljLoiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiIifSx7Im4iOiLlm73kuqciLCJ2IjoiL2FyZWEv5Zu95LqnIn0seyJuIjoi5pel5pysIiwidiI6Ii9hcmVhL+aXpeacrCJ9LHsibiI6Iuasp+e+jiIsInYiOiIvYXJlYS/mrKfnvo4ifSx7Im4iOiLlhbbku5YiLCJ2IjoiL2FyZWEv5YW25LuWIn1dfSx7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05LujIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2IjoiIn0seyJuIjoiMjAyNCIsInYiOiIveWVhci8yMDI0In0seyJuIjoiMjAyMyIsInYiOiIveWVhci8yMDIzIn0seyJuIjoiMjAyMiIsInYiOiIveWVhci8yMDIyIn0seyJuIjoiMjAyMSIsInYiOiIveWVhci8yMDIxIn0seyJuIjoiMjAyMCIsInYiOiIveWVhci8yMDIwIn0seyJuIjoiMjAxOSIsInYiOiIveWVhci8yMDE5In0seyJuIjoiMjAxOCIsInYiOiIveWVhci8yMDE4In0seyJuIjoiMjAxNyIsInYiOiIveWVhci8yMDE3In0seyJuIjoiMjAxNiIsInYiOiIveWVhci8yMDE2In0seyJuIjoiMjAxNSIsInYiOiIveWVhci8yMDE1In0seyJuIjoiMjAxNCIsInYiOiIveWVhci8yMDE0In0seyJuIjoiMjAxMyIsInYiOiIveWVhci8yMDEzIn0seyJuIjoiMjAxMiIsInYiOiIveWVhci8yMDEyIn0seyJuIjoiMjAxMSIsInYiOiIveWVhci8yMDExIn0seyJuIjoiMjAxMCIsInYiOiIveWVhci8yMDEwIn0seyJuIjoiMjAwOSIsInYiOiIveWVhci8yMDA5In0seyJuIjoiMjAwOCIsInYiOiIveWVhci8yMDA4In0seyJuIjoiMjAwNyIsInYiOiIveWVhci8yMDA3In0seyJuIjoiMjAwNiIsInYiOiIveWVhci8yMDA2In0seyJuIjoiMjAwNSIsInYiOiIveWVhci8yMDA1In0seyJuIjoiMjAwNCIsInYiOiIveWVhci8yMDA0In1dfSx7ImtleSI6ImJ5IiwibmFtZSI6IuaOkuW6jyIsInZhbHVlIjpbeyJuIjoi5pe26Ze0IiwidiI6Ii9ieS90aW1lIn0seyJuIjoi5Lq65rCUIiwidiI6Ii9ieS9oaXRzIn0seyJuIjoi6K+E5YiGIiwidiI6Ii9ieS9zY29yZSJ9XX1dCiAgICB9LAogICAgZmlsdGVyX2RlZjogewogICAgICAgIDE6e2NhdGVJZDonMSd9LAogICAgICAgIDI6e2NhdGVJZDonMid9LAogICAgICAgIDM6e2NhdGVJZDonMyd9LAogICAgICAgIDQ6e2NhdGVJZDonNCd9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwnLAogICAgc2VhcmNoYWJsZTogMiwvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHF1aWNrU2VhcmNoOiAwLC8v5piv5ZCm5ZCv55So5b+r6YCf5pCc57SiLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScsCiAgICB9LAogICAgY2xhc3NfcGFyc2U6ICdkaXYubmF2JiZsaTpndCgwKTpsdCg1KTthJiZUZXh0O2EmJmhyZWY7KFxcZCspLmh0bWwnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6IGBqczoKICAgICAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CiAgICAgICAgdmFyIHVybCA9IGh0bWwudXJsOwogICAgICAgIGlmIChodG1sLmVuY3J5cHQgPT0gJzEnKSB7CiAgICAgICAgICAgIHVybCA9IHVuZXNjYXBlKHVybCkKICAgICAgICB9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHsKICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpCiAgICAgICAgfQogICAgICAgIGlmICgvXFwubTN1OHxcXC5tcDQvLnRlc3QodXJsKSkgewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICBwYXJzZTogMAogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW5wdXQKICAgICAgICB9CiAgICBgLAogICAg5o6o6I2QOiAnZGl2LmJkOmVxKDApOy5saXN0cy1jb250ZW50OmVxKDApJiZsaTsqOyo7KjsqJywKICAgIOS4gOe6pzogJy5saXN0cy1jb250ZW50OmVxKDEpJiZsaTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5ub3RlJiZUZXh0O2EmJmhyZWYnLAogICAgZG91YmxlOiB0cnVlLCAvLyDmjqjojZDlhoXlrrnmmK/lkKblj4zlsYLlrprkvY0KICAgIOS6jOe6pzogewogICAgICAgICJ0aXRsZSI6ICIucHJvZHVjdC10aXRsZS0tc3BhbiYmVGV4dDsucHJvZHVjdC1leGNlcnB0OmVxKDIpJiZzcGFuJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi50aHVtYiYmc3JjIiwKICAgICAgICAiZGVzYyI6ICIucHJvZHVjdC1leGNlcnB0OmVxKDMpJiZUZXh0Ozs7LnByb2R1Y3QtZXhjZXJwdDplcSgxKSYmc3BhbiYmVGV4dDsucHJvZHVjdC1leGNlcnB0OmVxKDApJiZzcGFuJiZUZXh0IiwKICAgICAgICAiY29udGVudCI6ICIucHJvZHVjdC1leGNlcnB0OmVxKDQpJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIjc2xpZGVyIGR0IiwKICAgICAgICAibGlzdHMiOiAiLnBsYXlsaXN0OmVxKCNpZCkgbGkiCiAgICB9LAogICAg5pCc57SiOiAnLmxpc3RzLWNvbnRlbnQmJmxpOyo7KjsqOyonLAp9 \ No newline at end of file diff --git a/lib/蜡笔[盘].js b/lib/蜡笔[盘].js new file mode 100644 index 0000000..1cb829b --- /dev/null +++ b/lib/蜡笔[盘].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/蜡笔盘盘.js b/lib/蜡笔盘盘.js new file mode 100644 index 0000000..d4dd7da --- /dev/null +++ b/lib/蜡笔盘盘.js @@ -0,0 +1,21 @@ +Object.assign(muban.mxone5.二级,{ + desc: '.video-info-items:eq(3)&&Text;.tag-link:eq(2)&&Text;.tag-link:eq(3)&&Text;.video-info-actor:eq(1)&&Text;.video-info-actor:eq(0)&&Text', + content: '.sqjj_a--span&&Text', + lists: '.module-row-one:eq(#id)&&a.module-row-text', + list_text:'h4&&Text', + list_url:'a&&data-clipboard-text', + list_url_prefix:'push://' +}); +var rule = { + title: '蜡笔盘盘', + 模板: 'mxone5', + host: 'http://duopan.fun', + url: '/index.php/vod/show/id/fyclass/page/fypage.html', + filter_url:'{{fl.cateId}}{{fl.area}}{{fl.by}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}', + searchUrl: '/index.php/vod/search.html?wd=**', + filter:'H4sIAAAAAAAAAO2aWU8jRxDHn3c/ReRnIjPm3re9l73vK9oH72IlKIRIQCKhFRJgbGwuA2Ixjs2VBQwsxjYQAkMMX8Y9Y3+LzLjb1d01SAxalM1DP/r/K1d3V7drqtrz8fIlj+a58sNHz8+BXs8Vzwd/T6C1zVPj6fT/ErA+m/kjsjBqff7d3/FboGLYackktF4Ortuy9cHTV0NVMz1FDo/M6DAD3vY2byOnkbwRDMm0CagRmSvqUZk2czowafTPyrQFaPnLnLk0IFOtFjAZWTdn0LQ0TcTFQgphn6fvnW3AotLh7+7mQSHRtLUSl0EhsynLvuq74snLNDkysgnT5ADIJkyT14EGopq8QWggqoEXWJvghWryVqG5UK1qUsqskbFN2YRpMJeRrFlAJkyTN86xIlsDk9Vhx4qYBtPNrBWPl9B0qQZewtPlxAbyQjXwsrBprRF5odo59sgY3DJnp5AJ1cAkOGIM/oFMqAahO4qR0AEKHdXgJzE/bcytyiZMg4Fmh0tRHQ1ENYjL8bY58xcp5FFoQAbD2ErpMz41VAOTiTCJ7SATqsGpOZm0thedGqrxnUoZ81N4pyoamAydmF/Q0pkGASxMmUep05YmETEF+LsCfiEDpHJkTHebAVbS5US4Oo7tyFs8yJBkgQHYs7WEcZA9xY4BHuyccXh8mj8KYIPjq0ZqS7JjEoy4uGF9TbJgEkTqeAJbMAlG2f2ELZgE2zqaxxZM4ufsb2zBJD5KzjlKTvIxniP6muyDSuBjKGZFnEQ2ZDegwnxXT8xYxowm5CmDytPTkjF6Yn1ZHhRUsAvtF49mZSMqiQesw9/5Iz9gpWymtN7v9oAlC5Z9dQDbkZdJwhZgCybBRu+sYAsmwWGJF8h4HBtxVThUDiMqCQcTWzBJOFQOCyoJR8axZioJYSfbQdmCSmLYewP+Lh52I75fju+5DLuv1ldfdW+78VYEgdZhWidSH6Y+kWqYaiKtxbRWoFoLolqLSJsxbRZpE6ZNIm3EtFGkDZg2iBTHShNjpeFYaWKsNBwrTYyVhmOlibHScKzsylD83QV6egLCESCZuJEdd3kErsLxqnjxXgVyDZFrQK4jch3IDURuALmJyE0gtxC5BeQ2IreB3EHkDpBWRFqB3EXkLpB7iNwDch+R+0AeIPIAyENEHgJ5hMgjII8ReQzkCSJPgDxF5CmQZ4g8A/IckedAXiDyAshLRF4CeYXIKyCvEXkN5A0ib4C8ReQtkNrvWxCzFfEn8L5XyIAT00SPOY4/T4y2n/e93p52y7w6RFHXjdyMQH9q7+nmD5/sEImEBdr94deugD2DdzWXv/P4vrL95KnAeugV9bTQbdmdHM8j1jPGrm5kzJOQsZW2SxsZ8wxmVWBWfYVw48W1iWdX0C76Llrik4F9EoydVvwzco7elGzvEz2DTKh2vk7urN7URSfnojd10WW46J6Kh8uOLoNpvE0LGYks2gyqwVw+hR0tI9OERsSxAUw7vXpkXpzlo+pPVH+i+pP/qj9RvYXqLVRvoXoL1Vv8n3uLS556sbf4iuq83B810/2ooqaaWBAOLToLQkuDyW6flHIR2YRp4GU6Y4ygy2um8adTyDhA9SvT+CNut3g4iaZLNaFwKn9G02UamOibZHsBmVAN5pLccf6HQDXwMrNo7OH/nKjGW6sDIxIr6tOO23+JQBj3/rTqdRRGqoHH/GBpYAz5opoqmlXRzKesimZVNKuiWRXNqmhWRbMqmmnRXHdR74PR+/jqOO1tXiEr0st4kfEMQm/iRaZd2D27izLdxVtSZjBTWkb9ANNgoIl1czKMBqIamEwumFv4bSCqQQjPfjOpNDlfmkB/CzANBlpaJkl0ic80XveceUNvpHTnK1BUg7mc/QaPi38xSM4K9h6aC9VEk9Vdp4mlwR6tHBf/QS9SMQ28TCySSBJ5oRr/Je2QDGqlmAYDJUeMBGqCmMajmycncRzdinZ6Qanu+VXLoloW1bKolkW1LKplEYhqWVTL4mxZGoSWRWVjlY1VNlbZWGXjb5WNffUqHat0rNKxSscqHX/jdNz3L7Iw6uPhPQAA', + class_parse: '.grid-box&&ul&&li;a&&Text;a&&href;.*/(.*?).html', + cate_exclude: '网址|专题|全部影片', + 一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href', + lazy:` if (/aliyundrive.com|quark.cn|alipan.com/.test(url)) { input = 'push://'+ url }` +} \ No newline at end of file diff --git a/lib/西瓜影院.js b/lib/西瓜影院.js new file mode 100644 index 0000000..d95d618 --- /dev/null +++ b/lib/西瓜影院.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/32RzW4TMRDH73kKa1VtnGrrbcptq8CJMxIfJ4SQs+vsuni9rj3upiJ5Aw5ISEiIcqASH1ckTpVoX6ZN6Fvg3bhikwjmYNkzv//4P/aj8RFLgVBjeC5xacdUktuv728+Xh6Q64s3y4tvEXrdQy4CoGMTJCggkp7sNYcwFDyIevPBYe+EaqStYGjk6cX3z4tPVwnq+2b9qE0DB8Fc9veXq+W7s5tfP24/nPtSURlwlQJAmSSO67omU55bOhzu75O0Kj1mtXBUbIqqjienqXDO93xMThXNmduQAkrhecOoTotnKxWXGZsSVahYG+NP01I8qLPR7q4XLN6eLX+eJ2jnyBConoDmMsd4gEb3/WhNCAaoucTNq9mxZQYwl8qCe4ouwoGVxjEqm1Dc8BHqu5vDsCn0O3AcI1HluOU3emRO//zF31zLkEmlH9K0cIp1YyvCSTgQzZSgKcNx++ozweWrGbVQVHqm7DijwGYZM6nmCngl49yZU11Tdw7ck69maK5roIQd4+EgDJ+yKWwKMqKsKfC6o87Xd9rcNYi22PaT3bJdaQwnm17uDf7dKq0kMAlbmoP/aBRPX7YWgmC9OO8M290bBo+ZsQJw5rNz13b+B5X2HuZdAwAA \ No newline at end of file diff --git a/lib/豆瓣[官].js b/lib/豆瓣[官].js new file mode 100644 index 0000000..d9ffec8 --- /dev/null +++ b/lib/豆瓣[官].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/豆角网.js b/lib/豆角网.js new file mode 100644 index 0000000..062cb96 --- /dev/null +++ b/lib/豆角网.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi7pppblm74yLuS6jOe6pywgewogICAgaW1nOiAnaW1nJiZzcmMnLAogICAgdGFiczogJy5zdHVpLXBhbm5lbF9faGVhZCBoNCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ+mmluWbvjInLAogICAgdGl0bGU6ICfosYbop5LnvZEnLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3LmRvbmdrYW5kaS5jb20nLAogICAgdXJsOiAnL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwnLAogICAgY2xhc3NfcGFyc2U6ICcuc3R1aS1oZWFkZXJfX21lbnUgbGk6Z3QoMCk6bHQoNyk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAg5o6o6I2QOiAndWwuc3R1aS12b2RsaXN0LmNsZWFyZml4O2xpO2EmJnRpdGxlO2ltZyYmc3JjOy5waWMtdGV4dCYmVGV4dDthJiZocmVmJywKICAgIOS4gOe6pzogJy5zdHVpLXZvZGxpc3QgbGk7YSYmdGl0bGU7aW1nJiZzcmM7LnBpYy10ZXh0JiZUZXh0O2EmJmhyZWYnLAogICAg5pCc57SiOiAndWwuc3R1aS12b2RsaXN0X19tZWRpYTplcSgwKSx1bC5zdHVpLXZvZGxpc3Q6ZXEoMCksI3NlYXJjaExpc3QgbGk7YSYmdGl0bGU7aW1nJiZzcmM7LnRleHQtbXV0ZWQmJlRleHQ7YSYmaHJlZjsudGV4dC1tdXRlZDplcSgtMSkmJlRleHQnLAp9 \ No newline at end of file diff --git a/lib/达达兔影院.js b/lib/达达兔影院.js new file mode 100644 index 0000000..9da3dfb --- /dev/null +++ b/lib/达达兔影院.js @@ -0,0 +1,38 @@ +var rule = { + title: '达达兔影院', + host: 'http://www.dadatu26.com', +//url: '/t/fyclass-fypage.html', + searchUrl: '/search.php?page=fypage&searchword=**&searchtype=fyclass', + searchable: 2, + quickSearch: 0, + filterable: 1, + headers: { + 'User-Agent': 'MOBILE_UA', + }, +url: '/search.php?page=fypage&searchtype=5&tid=fyclassfyfilter', +//url: '/t/fyfilter.html', +filter_url:'{&jq={{fl.cateid}}&area={{fl.area}}}', +//filter_url:'/search.php?page=fypage&searchtype=5&tid=fyclass&jq={{fl.class}}&area={{fl.area}}', +filter:{ + "1":[{"key":"cateid","name":"类型","value":[{"n":"全部","v":""},{"n":"动作","v":"动作"},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"科幻","v":"科幻"},{"n":"恐怖","v":"恐怖"},{"n":"战争","v":"战争"},{"n":"剧情","v":"剧情"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"美国","v":"美国"},{"n":"香港","v":"香港"}]}], + "2":[{"key":"cateid","name":"类型","value":[{"n":"全部","v":""},{"n":"动作","v":"动作"},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"科幻","v":"科幻"},{"n":"恐怖","v":"恐怖"},{"n":"战争","v":"战争"},{"n":"剧情","v":"剧情"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"美国","v":"美国"},{"n":"香港","v":"香港"}]}], + "3":[{"key":"cateid","name":"类型","value":[{"n":"全部","v":""},{"n":"动作","v":"动作"},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"科幻","v":"科幻"},{"n":"恐怖","v":"恐怖"},{"n":"战争","v":"战争"},{"n":"剧情","v":"剧情"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"美国","v":"美国"},{"n":"香港","v":"香港"}]}], + "4":[{"key":"cateid","name":"类型","value":[{"n":"全部","v":""},{"n":"动作","v":"动作"},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"科幻","v":"科幻"},{"n":"恐怖","v":"恐怖"},{"n":"战争","v":"战争"},{"n":"剧情","v":"剧情"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"美国","v":"美国"},{"n":"香港","v":"香港"}]}] + }, + class_parse: '.myui-header__menu li;a&&Text;a&&href;/(\\d+).html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + double: true, + 一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + 二级: { + title: '.myui-content__detail .title&&Text;.myui-content__detail .data&&a:eq(1)&&Text', + img: '.myui-content__thumb .lazyload&&data-original', + desc: '.myui-content__detail p:eq(4)&&Text;.data&&a:eq(3)&&Text;.data&&a:eq(2)&&Text;.myui-content__detail p:eq(2)&&Text;.myui-content__detail p:eq(3)&&Text', + content: '.myui-content__detail p:eq(-2)&&Text', + tabs: '.nav-tabs:eq(0) li', + lists: '.myui-content__list:eq(#id) li', + }, + 搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text.text-right&&Text;a&&href;.text-muted:eq(-1)&&Text', +} \ No newline at end of file diff --git a/lib/达达猪.js b/lib/达达猪.js new file mode 100644 index 0000000..a9b3bf2 --- /dev/null +++ b/lib/达达猪.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn6L6+6L6+54yqJywKICAgIGhvc3Q6ICcgaHR0cHM6Ly93d3cuZGFkYXpodS5tZScsCiAgICB1cmw6ICcvdm9kdHlwZS9meWNsYXNzJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyYmbGk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAn5pu05pawfOeDreamnCcsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlucHV0ID0gewogICAgICAgICAgICBwYXJzZTogMSwKICAgICAgICAgICAgdXJsOiBpbnB1dCwKICAgICAgICAgICAganM6ICdkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGxheWxlZnQgaWZyYW1lIikuY29udGVudFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc3RhcnQiKS5jbGljaygpJywKICAgICAgICB9CiAgICB9KSwKICAgIHNlYXJjaFVybDogJy9yc3MueG1sP3dkPSoqJywKICAgIOaQnOe0ojogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgaHRtbCA9IHBvc3QoaW5wdXQuc3BsaXQoJz8nKVswXSwge2JvZHk6IGlucHV0LnNwbGl0KCc/JylbMV19KTsKICAgICAgICBsZXQgaXRlbXMgPSBwZGZhKGh0bWwsICdyc3MmJml0ZW0nKTsKICAgICAgICAvLyBsb2coaXRlbXMpOwogICAgICAgIGxldCBkID0gW107CiAgICAgICAgaXRlbXMuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgIGl0ID0gaXQucmVwbGFjZSgvdGl0bGV8bGlua3xhdXRob3J8cHViZGF0ZXxkZXNjcmlwdGlvbi9nLCAncCcpOwogICAgICAgICAgICBsZXQgdXJsID0gcGRmaChpdCwgJ3A6ZXEoMSkmJlRleHQnKTsKICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL2NjL2csICdtZScpOwogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXQsICdwJiZUZXh0JyksCiAgICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgIGRlc2M6IHBkZmgoaXQsICdwOmVxKDMpJiZUZXh0JyksCiAgICAgICAgICAgICAgICBjb250ZW50OiBwZGZoKGl0LCAncDplcSgyKSYmVGV4dCcpLAogICAgICAgICAgICAgICAgcGljX3VybDogIiIsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAp9 \ No newline at end of file diff --git a/lib/达达龟.js b/lib/达达龟.js new file mode 100644 index 0000000..fd558f8 --- /dev/null +++ b/lib/达达龟.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/追剧迷.js b/lib/追剧迷.js new file mode 100644 index 0000000..cdd4e31 --- /dev/null +++ b/lib/追剧迷.js @@ -0,0 +1,37 @@ +var rule = { + title: '追剧迷', + 模板: 'vfed', + host: 'https://www.zhuijumi.cc', + // url:'/videotype/fyclass-fypage.html', + url: '/mp4type/fyclass-fypage.html', + searchUrl: '/mp4search/-.html?wd=**', + class_parse: '.fed-part-tips li;a&&Text;a&&href;.*/(.*?).html', + cate_exclude: '更多|申请', + lazy: `js: + var html = JSON.parse(request(input).match(/r player_.*?=(.*?) { + function getClasses(homeObj) { + let classes = []; + if (homeObj.class_name && homeObj.class_url) { + if (!/&|电影|电视剧|综艺|动漫[\u4E00-\u9FA5]+/.test(homeObj.class_name)) { + try { + homeObj.class_name = ungzip(homeObj.class_name) + } catch (e) { + log(`不识别的class_name导致gzip解码失败:${e}`) + return classes + } + } + 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] + }); + } + } + return classes + } + + let _url = rule.params; + if (_url && typeof (_url) === 'string' && /^(http|file)/.test(_url)) { + 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 || '', + cate_exclude: it.cate_exclude || '', + // class_name: it.class_name || '', + // class_url: it.class_url || '', + }; + _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, rule.classUrl))).class; + } + 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(() => { + // let _url = rule.params; + // if (_url && typeof (_url) === 'string' && _url.startsWith('http')) { + // let html = request(_url); + // let json = JSON.parse(html); + // let _classes = []; + // homeObj.filter = {}; + // rule.filter_def = {}; + // json.forEach(it => { + // let _obj = { + // type_name: it.name, + // type_id: it.url, + // parse_url: it.parse_url || '', + // cate_exclude: it.cate_exclude || '', + // }; + // _classes.push(_obj); + // try { + // let json1 = JSON.parse(request(urljoin(_obj.type_id, rule.classUrl))).class; + // if (_obj.cate_exclude) { + // json1 = json1.filter(cl => !new RegExp(_obj.cate_exclude, 'i').test(cl.type_name)); + // } + // homeObj.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) { + // homeObj.filter[it.url] = [{"key": "类型", "name": "类型", "value": [{"n": "全部", "v": ""}]}]; + // } + // }); + // rule.classes = _classes; + // input = _classes; + // } + // }), + class_parse: $js.toString(() => { + input = rule.classes; + }), + 推荐: $js.toString(() => { + VODS = []; + if (rule.classes) { + let _url = urljoin(rule.classes[0].type_id, input); + try { + let html = request(_url); + let json = JSON.parse(html); + VODS = json.list; + VODS.forEach(it => { + it.vod_id = rule.classes[0].type_id + '$' + it.vod_id + }); + } catch (e) { + } + } + }), + 一级: $js.toString(() => { + VODS = []; + if (rule.classes) { + // log(input); + let _url = urljoin(MY_CATE, input); + let html = request(_url); + let json = JSON.parse(html); + VODS = json.list; + VODS.forEach(it => { + it.vod_id = MY_CATE + '$' + it.vod_id + }); + } + }), + // 一级: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from', + 二级: $js.toString(() => { + VOD = []; + if (rule.classes) { + let _url = urljoin(fyclass, input); + let html = request(_url); + let json = JSON.parse(html); + let data = json.list; + VOD = data[0]; + } + }), + 搜索: $js.toString(() => { + VODS = []; + if (rule.classes) { + if (rule.search_limit) { + rule.classes = rule.classes.slice(0, rule.search_limit); + } + rule.classes.forEach(it => { + let _url = urljoin(it.type_id, input); + // log(_url); + 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; + }); + VODS = VODS.concat(data); + } catch (e) { + log(`请求:${it.type_id}发生错误:${e.message}`) + } + + }); + } + }), + lazy: $js.toString(() => { + // lazy想办法用对应的parse_url,但是有难度,暂未实现 + 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; + } + } + }), +} \ No newline at end of file diff --git a/lib/采集静态.json$1$1 b/lib/采集静态.json$1$1 new file mode 100644 index 0000000..7bd96e5 --- /dev/null +++ b/lib/采集静态.json$1$1 @@ -0,0 +1,381 @@ +globalThis.getRandomItem = function (items) { + return items[Math.random() * items.length | 0]; +} +var rule = { + title: '采集之王[合]', + author: '道长', + version: '20240706 beta17', + update_info: ``.trim(), + host: '', + homeTid: '', + homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}', + detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid', + searchUrl: '/api.php/provide/vod/?wd=**&pg=#TruePage##page=fypage', + classUrl: '/api.php/provide/vod/', + url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyfilter', + filter_url: '{{fl.类型}}', + headers: { + 'User-Agent': 'MOBILE_UA' + }, + timeout: 5000, + limit: 20, + search_limit: 10, + searchable: 1, + quickSearch: 0, + filterable: 1, + play_parse: true, + parse_url: '', + search_match: false, + search_pic: true, + 预处理: $js.toString(() => { + 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; + } + } + }), +} diff --git a/lib/量子影视[资].js b/lib/量子影视[资].js new file mode 100644 index 0000000..9bf5976 --- /dev/null +++ b/lib/量子影视[资].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/量子资源[资].js b/lib/量子资源[资].js new file mode 100644 index 0000000..07a7523 --- /dev/null +++ b/lib/量子资源[资].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/9PXV8goKSkottLXT87Sy6nKTCzI1EvOz9UH0QUZBfoFRfllmSmp+mX5Kfr2icm2OZnFJVxcZYlFCkWlOakKtgrVXApA8GzFwmdz91spqL9sb385u81QXQcsXJJZkpMKFu1/unbCi60tz3ZNiAZSsVD5jPziEqA0VidAlegDXZifmxqSmQJUaGgM1wgTggokJ5akxqdWJOeUpoAsfD5l69O9G593tte82D/v+e61TzuX1zzfvedF5y6Q2NOuFc/2rAaxIOpeLF/8Yv2Wmid7J79o2lTzbM+UpxNn1DybtuHl9N1Ax75Ytx5qSUFiUXFqfGlRDsTeWgBHU6ibPgEAAA== \ No newline at end of file diff --git a/lib/闪雷电.js b/lib/闪雷电.js new file mode 100644 index 0000000..0337c14 --- /dev/null +++ b/lib/闪雷电.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+mXqumbt+eUtScsCiAgICDnvJbnoIE6ICdnYjIzMTInLAogICAgaG9zdDogJ2h0dHA6Ly8xMjAuMjI0LjcuOTA6ODA4JywKICAgIHVybDogJy93d3cvTGlzdC5hc3A/Y2xhc3NpZD1meWNsYXNzJnNlYXJjaHdvcmQ9JnBhZ2U9ZnlwYWdlJywKICAgIGZpbHRlcmFibGU6IDAsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBjbGFzc19uYW1lOiAn55S15b2xJueUteinhuWJpybnu7zoibom5Yqo5ryrJumfs+S5kCcsCiAgICBjbGFzc191cmw6ICc1MDAwJjEwJjgmNiYxMicsCiAgICBzZWFyY2hVcmw6ICcvd3d3L0xpc3QuYXNwP2NsYXNzaWQ9MzAmc2VhcmNod29yZD0qKiZwYWdlPWZ5cGFnZScsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICB2YXIgaHRtbCA9ICdodHRwOi8vMTIwLjIyNC43LjkwOjgwOC9QbGF5TW92LmFzcD9DbGFzc0lkPScgKyBpbnB1dC5zcGxpdCgiLCIpWzJdICsgJyZ2aWRlbz0yJmV4ZT0wJmRvd249MCZtb3ZObz0nICsgaW5wdXQuc3BsaXQoIiwiKVszXSArICcmdmd2ZXI9dW5kZWZpbmVkJkNsaWVudElQPTEyMC4yMjQuNy45MCcKICAgICAgICB2YXIgdXJsID0gcmVxdWVzdChodG1sKS5tYXRjaCgvcHVzaFwoJyguKj8pJy8pWzFdCiAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICB9OwogICAgfSksCiAgICBsaW1pdDogNiwKICAgIOaOqOiNkDogJ3VsOmVxKDQpJiZzdHJvbmc7aW1nJiZhbHQ7aW1nJiZzcmM7c3BhbjplcSgxKSYmVGV4dDthJiZocmVmJywKICAgIOS4gOe6pzogJ3VsOmVxKDUpJiZzdHJvbmc7aW1nJiZhbHQ7aW1nJiZzcmM7c3BhbjplcSgxKSYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAidWw6ZXEoMikmJmxpOmVxKDApJiZUZXh0IiwKICAgICAgICBpbWc6ICJpbWc6ZXEoMSkmJnNyYyIsCiAgICAgICAgZGVzYzogInVsOmVxKDIpJiZsaTplcSgxKSYmVGV4dDt1bDplcSgyKSYmbGk6ZXEoMikmJlRleHQ7dWw6ZXEoMikmJmxpOmVxKDMpJiZUZXh0IiwKICAgICAgICBjb250ZW50OiAiYm9keSYmZGl2OmhhcyhwKSYmcDplcSgzKSYmVGV4dCIsCiAgICAgICAgdGFiczogIiIsCiAgICAgICAgbGlzdHM6ICdib2R5JiZhW29uY2xpY2tePSJzZW5mZSJdJywKICAgICAgICBsaXN0X3VybDogJ2EmJm9uY2xpY2snLAogICAgICAgIGxpc3RfdGV4dDogJ2EmJlRleHQnCiAgICB9LAogICAg5pCc57SiOiAnKicsCn0= \ No newline at end of file diff --git a/lib/阿里土豆[盘].js b/lib/阿里土豆[盘].js new file mode 100644 index 0000000..2d7fdce --- /dev/null +++ b/lib/阿里土豆[盘].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/非凡资源[资].js b/lib/非凡资源[资].js new file mode 100644 index 0000000..a10dbd5 --- /dev/null +++ b/lib/非凡资源[资].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/9PXV8goKSmw0tdPztJLS6uqTCzI1EvOz9UH0QUZBfoFRfllmSmp+mX5Kfr2icm2OZnFJVxcZYlFCkWlOakKtgrVXApA8GzFwmdz91spqL9sb385u81QXQcsXJJZkpMKEp0772n7whdbW57tmhANpGKh8hn5xSVAaaxOgCrRB7owPzc1JDMFqNDQGK4RJgQVSE4sSY1PrUjOKU0BWfh8ytanezc+72yvebF/3vPda592Lq95vnvPi85dILGnXSue7VkNYkHUvVi++MX6LTVP9k5+0bSp5tmeKU8nzqh5Nm3Dy+m7gY59sW49wi0FiUXFqfGlRTlAS7KK8/OsoG7PqtCzMMnKTAQHXq5xqUVJMSj87IEqbaG6kbUChWoBJ9af1XwBAAA= \ No newline at end of file diff --git a/lib/非凡资源网.json b/lib/非凡资源网.json new file mode 100644 index 0000000..bd4bafb --- /dev/null +++ b/lib/非凡资源网.json @@ -0,0 +1,156 @@ + { + "主页url":"http://ffzy5.tv/", + + "站名":"非凡资源网", + + "首页":"电视剧", + + "请求头":"User-Agent$Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1", + + "二次截取":"\"list\"*[&&]", + + "数组":"{&&\"vod_content\"", + + "图片":"vod_pic\"*\"&&\"", + + "标题":"vod_name\"*\"&&\"", + + "链接":"http://ffzy5.tv/index.php/vod/detail/id/+\"vod_id\":&&,+.html", + + "副标题":"vod_remarks\":\"&&\"", + + "搜索模式":"1", + + "搜索url":"http://ffzy5.tv/index.php/ajax/suggest.html?mid=1&wd={wd}", + + "搜索数组二次截取":"\"list\"*[&&]", + + "搜索数组":"{&&}", + + "搜索图片":"\"pic\"*\"&&\"", + + "搜索标题":"\"name\"*\"&&\"", + + "搜索链接":"http://ffzy5.tv/index.php/vod/detail/id/+\"id\":&&,+.html", + + "线路数组":"

    &&

    [替换:ffm3u8>>🌸cc🌸非凡①#feifan>>🌸cc🌸非凡②][排序:🌸cc🌸非凡①>>🌸cc🌸非凡②]", + + "线路标题":"非凡&&地址", + + "影片类型":"类型:&&

    ", + + "影片年代":"年代:&&

    ", + + "影片地区":"地区:&&

    ", + + "导演":"导演:&&

    ", + + "主演":"主演:&&

    ", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗!。+
    ", + + "播放数组":"
    &&
    ", + + "播放列表":"", + + "播放标题":"title=\"&&\"[不包含:复制]", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4", + + "分类url":"http://ffzy5.tv/index.php/ajax/data?mid=1&tid={cateId}&page={catePg}&limit=20", + + "筛选":{ + + "34":[{"key":"cateId","name":"类型","value":[ + {"n":"电影","v":"1"}, + {"n":"动作片","v":"6"}, + {"n":"喜剧片","v":"7"}, + {"n":"爱情片","v":"8"}, + {"n":"科幻片","v":"9"}, + {"n":"恐怖片","v":"10"}, + {"n":"剧情片","v":"11"}, + {"n":"战争片","v":"12"}, + {"n":"纪录片","v":"20"} + ] + }, + {"key":"cateId","name":"类型","value":[ + {"n":"剧集","v":"2"}, + {"n":"国产剧","v":"13"}, + {"n":"港台剧","v":"14"}, + {"n":"韩国剧","v":"15"}, + {"n":"欧美剧","v":"16"}, + {"n":"台湾剧","v":"21"}, + {"n":"日本剧","v":"22"}, + {"n":"海外剧","v":"23"}, + {"n":"泰国剧","v":"24"} + ] + }, + {"key":"cateId","name":"类型","value":[ + {"n":"综艺","v":"3"}, + {"n":"大陆综艺","v":"25"}, + {"n":"港台综艺","v":"26"}, + {"n":"日韩综艺","v":"27"}, + {"n":"欧美综艺","v":"28"} + ] + }, + {"key":"cateId","name":"类型","value":[ + {"n":"动漫","v":"4"}, + {"n":"国产动漫","v":"29"}, + {"n":"日本动漫","v":"30"}, + {"n":"欧美动漫","v":"31"}, + {"n":"港台动漫","v":"32"}, + {"n":"海外动漫","v":"33"} + ] + } + ], + "1":[ + {"key":"cateId","name":"类型","value":[ + {"n":"电影","v":"1"}, + {"n":"动作片","v":"6"}, + {"n":"喜剧片","v":"7"}, + {"n":"爱情片","v":"8"}, + {"n":"科幻片","v":"9"}, + {"n":"恐怖片","v":"10"}, + {"n":"剧情片","v":"11"}, + {"n":"战争片","v":"12"}, + {"n":"纪录片","v":"20"} + ] + } + ], + "2":[ + {"key":"cateId","name":"类型","value":[ + {"n":"剧集","v":"2"}, + {"n":"国产剧","v":"13"}, + {"n":"港台剧","v":"14"}, + {"n":"韩国剧","v":"15"}, + {"n":"欧美剧","v":"16"}, + {"n":"台湾剧","v":"21"}, + {"n":"日本剧","v":"22"}, + {"n":"海外剧","v":"23"}, + {"n":"泰国剧","v":"24"} + ] + } + ], + "3":[ + {"key":"cateId","name":"类型","value":[ + {"n":"综艺","v":"3"}, + {"n":"大陆综艺","v":"25"}, + {"n":"港台综艺","v":"26"}, + {"n":"日韩综艺","v":"27"}, + {"n":"欧美综艺","v":"28"} + ] + } + ], + "4":[ + {"key":"cateId","name":"类型","value":[ + {"n":"动漫","v":"4"}, + {"n":"国产动漫","v":"29"}, + {"n":"日本动漫","v":"30"}, + {"n":"欧美动漫","v":"31"}, + {"n":"港台动漫","v":"32"}, + {"n":"海外动漫","v":"33"} + ] + } + ] + } + } diff --git a/lib/飘花影院.js b/lib/飘花影院.js new file mode 100644 index 0000000..780bb4a --- /dev/null +++ b/lib/飘花影院.js @@ -0,0 +1 @@ +qz2VfkB3O9fqiff5MjJa/AGPqh+RieRT1xCDC/uYMyxmYSfBqy6ywasp0y8aCxcZSoZd8rmoi1vsLOh9ZzQP+ITGVxkOgJp/t/bM7MUCgD9xZJGMScv13GycLwgxeSW2oBVyJEOEvRVWQtpTWoss4szSDp/zewzMdKwm231OLcRfnLgJxcHRvKF7yWEX15zYgsoAuwgQPjvO7469AMN4f5gsq903t0JL94lat9/5acPbBhGLgSDbgl4KuZxdlSauj3bHpR2uDLG8vSqbuTVhdKVUhwAQ9VEFuLOcVo75DMpcIVqvrZ5hFAKoka+UT4sTKfAbzYSSrTF4r3yaDJF74Hlwp020uwQMoqa+LVfc61BdzpMexgEYMW5qMMYXBaN65Ld4AQx8vVpHoLTpUuFZQ0LHW6n2ed5H+3kbFW5RzRNS28q1mEn4eFtMqitRzvCfVvWCNStIBp8sWUDEjBmT4o2/A7I7PxuDmWAaFEcuY0TVf9tya13sO5Sr4bT8Ax/exNG/+Krw+28ZxAWH9egzK6rbngCXKGxFjLwv9pfqHOreY2+4ABtpTqVcbbvXUub/FEl7/mp4URRqR63fJjJqQAtywZaJQikLRhvPVD70RwMy68RBpv3nDGZo7qbOsuK/lYrWXqigD3E3kfPCFypUBwb3JCQ1/DaMEvC5iMWJqhY= \ No newline at end of file diff --git a/lib/飞翔鸟[书].js b/lib/飞翔鸟[书].js new file mode 100644 index 0000000..efc1a6f --- /dev/null +++ b/lib/飞翔鸟[书].js @@ -0,0 +1 @@ +H4sIAEqSbWYC/4VUa2/TVhj+vl9hpciXEOy0El+cwQTVpDEVkCj9MFFknTjH8WlPbPec4zQpjbQv3ASMIqFpmhCITVqRxmiRkNbRVfszzaX/YufiJHZbVH+I4+d93ut53tMGRCMphtol7d5XGn+GH/f7r5+4mtHffT7a+WRUHKd/8HG0/WCzv/X+8J8/Ngf//jl8ub+pzNKFIYYh9zj6/fXwv5dHe2/ucN5doyKNYUwZt4WMJdR1nPX1dTvoRBvrth+3nIyTEswpDscxoswJuj4GlHpBNwFNaIeshTlRMikExA+Xivxy+Rh1ygR1UdmcgtZS5K8uStzVqgoLEGaQKNpsHuIJjPy3p4osYg0YuNq9XtYpBA1IqJsNUjzGEoXkwpUmjJjBna/fvHpt4Vtv6UoWJXNkqAXjlE/pYrWalRWiVUgWeHPzMc9aYrDDvNlSzjYvJvQFguOo+UWgJY6lf//d4NV7o2hT3VQzVGEJIFQ42BFo63qKdR2jGtD12zy4eIcEBjW77Jh2+RtrOT9sHzDowY6P0wacDinBoDsOykgKFYrBRtfVzq1Qm8WLjKCoaZqWdulybmwYMk1E56IkcC2FlJkoSlJm1QoUqTvOSRpBaAp+hetsVtVrHOP6ccT4KRxjz2SwrjdQ24Vr5oU5S9e/E41ZNoG8AR+aznLkNCtaqWTZNMGImaWv6+Qy/1IiMNui+DY3YsTZVcteiVFklpajUi6GHtVpUhNxDM0YBzJGO3+PPuweHjx3J7tzuPfX4OeHaruGBy8M6071brEVAkUb3y/evGFTOT8UdM3p8CYbWSlAWacTrJcbkByuuAGyw6pWspWM4jbEfGsN7bxIW9FWqDjennLtWSpFI07l/gQA0yzr4Kd3o2dbUykc7v04/LzNv2fmpazHkpLvGhCjn7WKSht7fn4qPacNHj181v/wa3/rxRkqkvOKm6YxeLw9evt06ia6uf6Dt3RrITcDtRynSe9UqgKlnMZiwsgGVNcn5Z+eQ1akmppU1H+0++WizqpmfAr5mzicy7ZgakKtphj/Aqh7V+N49VqrqetI/FDi52gNSH3B2whB1OyciJKpSB5k3Grxv4JwgsZAXQhl5oa8WG6LqnJWcWlLsyhE+avLxo1iZroiB0ARNdUqHP1yf7Szb1nF8J648XiMetzonkgvEpxNUBIvqi1v9BKOo85UxNl1Pdh6Nfz0G4fLHO/9D4iIgUJBBwAA \ No newline at end of file diff --git a/lib/飞鱼影视.js b/lib/飞鱼影视.js new file mode 100644 index 0000000..6eef249 --- /dev/null +++ b/lib/飞鱼影视.js @@ -0,0 +1 @@ +qz2VfkB3O9fqiff5MjJa/KtZLjXbmnAI1mI+Sj7v1kcD0YEDmIS5cjb8wn/htTGnaQqlcqV8MGzPubbY2nBHpmcJagVXvrYPW24WtorHXKAjfNGVG3MngiXNVPug8E+r+kBABLcHxA5JBNGnourk8d6g7yj1RFID3H7ddCRjhwZwiiXP6wDA+5Q3XZ5wd6lr5WvIQIbZRQDD3yylX5VPNHGKZVoWonYjpv6XKDXlpJphA2UckdZEAuJiwKoktUHYHT2fijje9FsmRprU70WNUYLBMd0laTnosPchEF4aLBITeakI5ws0yb6JhM2F6Vi/VKYUgqEcfl9motrwwbCLDL+2yD6KvNHYF++QCMsJtF/N3SCyA28x2mvyIbRDKaF0LHktJYSXoK5s4RgKES6WiRn6jIN3tjRBsalDu5zWJn8BrVqv/gMRDRwLajsp+1l1PZPQdXKQ+txnMDTGXmJ44aTtUDK4rQ88dK7jfqyZh1feDxrKyspixKdWB3TeWUjKOc6lHqS+EbQKSYMWF07EKCYDaojHoq4LRa7wv0q7xxF2Bof1Tw2vBJ38CqJZenPQvZlFHorfbdwuiDvn7qnga1pivrLli00Zj8s3RLIUxdBeiFFaKDtj589ThmQLfId8KSyojeXgleLCkFAXTjP9gQ== \ No newline at end of file diff --git a/lib/饭团影视.js b/lib/饭团影视.js new file mode 100644 index 0000000..eb2d9a0 --- /dev/null +++ b/lib/饭团影视.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICd2ZmVkJywKICAgIHRpdGxlOiAn6aWt5Zui5b2x6KeGJywKICAgIGhvc3Q6ICdodHRwczovL2ZhbnR1YW5zanouY29tLycsCiAgICB1cmw6ICcvc2p2b2RzaG93L2Z5Y2xhc3MtLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaFVybDogJy9zanZvZHNlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBjbGFzc19wYXJzZTogJy5mZWQtbmF2cy1sZWZ0JiZhO2EmJlRleHQ7YSYmaHJlZjsvc2p2b2R0eXBlLyguKj8pLmh0bWwnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICdoMyYmVGV4dDsuZmVkLWRldGEtY29udGVudCYmbGk6ZXEoMiktLXNwYW4mJlRleHQnLAogICAgICAgIGltZzogJy5mZWQtbGlzdC1waWNzJiZkYXRhLW9yaWdpbmFsJywKICAgICAgICBkZXNjOiAnLmZlZC1saXN0LXJlbWFya3MmJlRleHQ7LmZlZC1kZXRhLWNvbnRlbnQmJmxpOmVxKDQpLS1zcGFuJiZUZXh0Oy5mZWQtZGV0YS1jb250ZW50JiZsaTplcSgzKS0tc3BhbiYmVGV4dDsuZmVkLWRldGEtY29udGVudCYmbGktLXNwYW4mJlRleHQ7LmZlZC1kZXRhLWNvbnRlbnQmJmxpOmVxKDEpLS1zcGFuJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnJywKICAgICAgICB0YWJzOiAnYm9keSYmLmZlZC10YWJzLWJ0bicsCiAgICAgICAgbGlzdHM6ICdib2R5JiYuZmVkLXRhYnMtYnRtOmVxKCNpZCkmJmxpJywKICAgIH0sCiAgICDmkJzntKI6ICdib2R5JiYuZmVkLXBhcnQtbGF5b3V0JiYuZmVkLWxpc3QtZGV0YTtoMyYmVGV4dDsqOyo7LmZlZC1kZXRhLXBsYXkmJmhyZWY7LmZlZC1wYXJ0LXJvd3MmJlRleHQnLAp9 \ No newline at end of file diff --git a/lib/饺子影院.js b/lib/饺子影院.js new file mode 100644 index 0000000..f2ccb3f --- /dev/null +++ b/lib/饺子影院.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/02OsU7DMBRF936Fp7SU1tlTRfwEbJHSp+YFG9mNZb+Quoh/6FSpQgwggVgYWJGAr0ml/gV1zcD0dO897+regmW2VchydjdgjO3fnvaPPxkbHl63/cP3cBJMkqQweC+f/fum//o47J5jIhpHx0AQGZeladd1/EZCs5ZcYyRaq45AqpV0lMplhavaLxQ4N629gWvkgrSKqEOwC3EVH6LgRpiLgOWRTqLdNbbKx+M/Rd5gHitOzaUB68Jern0rpwKhQluWGpctU3IGSXKJKwpXWKxnp1GjoqjOz4p/axSsfcbm88ng/he2mqoZJQEAAA== \ No newline at end of file diff --git a/lib/首发网.js b/lib/首发网.js new file mode 100644 index 0000000..7ba6fb9 --- /dev/null +++ b/lib/首发网.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV1ulLmvQ1U7rx8K7qLYLXVNAfR+QeS2dmD1BQpLOExHacBCv+nsRh5gN0hIh6UONXnBhxDhbM1N1uDpQFfgykHivgeyNF5qYxfNhj9vAaK/HJZC6zyib4CxQ9Q2v2PjgsLu6l85AHQfxJuC3wBxB25aHwED3rNAimRM0Eo+5kHGxfNToGBzAVt4RsIcF9GZdmyMmUlhyIyUc8/oBt6mm2007meoYSyKnzC0E+aaKCbSZ/AeG9TYZ5U/p8Ji/J8wyYWH59LYb3m9erJDDXsk52VAuYAcXtxPQfpR9cv6I+3EJtU3i5++o7EMve3ZhGQQXIjn5bAWJkuxiF0wq4C08d1ScN8NwJqmeJRGjxwjBD0GGxK6sv7ZqM5Q2Gw4kldeLoOKYuz7hJ2IAuwrFgFdCD+6+EQF3UG0R9aHvfbczlcTPlTkCTDKOws3Dt3KSL/nkYpuukjzHnrwaJsqj8n2jmYG1eavY7dA17Qa7Q2aZyAzwEx1QP/PuUQTOw07vkMXh74JmmeLDzWHtpzAwDho61ksAyHOilZStrP3uxdJkcb8iJYH/nWompb6BFtxYjkY4/ZJg/9RVtyvtrHKjDPr/0hnE4COvyCDuSjTJb8xSJe5nKO8LORRSwdzNlgYYA3OJd8GHTIU9PyGBbX11z8IDvI76OWZp2ra8DyWAzZd9ydvpOJ2nhJXlPvBKyk4iZcEphaPi0IFWj1dLJCd+oTWoeBX4pSaUQKq1LIQT02Wi0KBx2EQio1z/SIT1Pb7BDyO8zOxqo+O2YAZSjqjxaav/xiYn7uknt/UZI+oE9LM4uOIvmjG+EnDgA+WHqONhtUD5ibRNenMNUfgs/V01O0Sd6q6Xl6y87ANQAnlghVVNc9BvnKJERhXD8u14sZWfBeA/Mi8D/Y0tGDRQt/4Emkn1PbknH69Y1yazrHyraCW+l/Gb2BQSHW+0/9Sv65ePDsZWfwn8Diy4YPr5aq6TXVdqOIjdxZtJvG0R9qbzj4eVAu1sMjicRaQNKRxfW7A9zhnpP452oBPU3tj9KKuzaltBrRA0RmlollyO5uQJLVHYmdn9oQFM+z+/RuZ8j5rhgIfCcIISa8q1DW3BBzEJJNxLdQzDDEvAMIMU4j/5QwGlvpTB6ADuBNuxFwrU5N6gMGRkuXyWQnHxnaGrYmV9KfFxXidD4Rg+CbVUl7e57B8qRK0mYUOxOaScbIsSn1+C9m7tFqAaObO1RYGS9/d9hNhud775q+VPYTnBFlOpKJyZTGUiR1qq39PGeaI6jukmo3pxxdRNwROaszXAlL0cuHUl8yLlPNE3m4dJ2NmsuP4rfuKLqosXBqKryALObboo5rUCEnF6wiDcGR7zoVDnsCTh04XNsVbgbVGfkPefqCoMEXkSjiN1wOq/x5ZeBHwdA3l8265H0iZVf9JNVkXTDjd3BLjzcYG5GmFaBym6PKhP9GZYBCSOosOe1PYLhZNjeL1W2g== \ No newline at end of file diff --git a/lib/驴番.js b/lib/驴番.js new file mode 100644 index 0000000..819c1d4 --- /dev/null +++ b/lib/驴番.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn6am055WqJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5sdmZhbi5mdW4nLAogICAgdXJsOiAndm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0vJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyBsaTthJiZUZXh0O2EmJmhyZWY7LiovKFxcZCspLycsCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS8nLAogICAgdGFiX2V4Y2x1ZGU6ICfmjpLluo8nLAp9 \ No newline at end of file diff --git a/lib/魔力高清.js b/lib/魔力高清.js new file mode 100644 index 0000000..4c531ca --- /dev/null +++ b/lib/魔力高清.js @@ -0,0 +1,25 @@ +// 网址发布页 https://molicp.com +muban.首图.二级.title = '.text-fff--font&&Text;.data--span:eq(0)&&Text'; +muban.首图.二级.desc = '#rating&&Text;;;.data--span:eq(1)&&Text;.data--span:eq(2)&&Text'; +muban.首图.二级.content = '.desc&&Text'; +var rule = { + title:'HDmoli', + 模板:'首图', + host:'https://www.hdmoli.pro', + // url:'/mlist/fyclass-fypage.html', + url:'/search.php?page=fypage&searchtype=5&tid=fyfilter', + filterable:1,//是否启用分类筛选, + filter_url:'{{fl.cateId}}&jq={{fl.class}}&area={{fl.area}}&year={{fl.year}}&state={{fl.state}}&order={{fl.by}}', + filter:{ + "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":"30"},{"n":"动画","v":"32"}]},{"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":"喜剧"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"美国","v":"美国"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"泰国","v":"泰国"},{"n":"中国","v":"中国"},{"n":"其他","v":"其他"}]},{"key":"year","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":"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":"more","v":"more"}]},{"key":"state","name":"状态","value":[{"n":"全部","v":""},{"n":"完结","v":"w"},{"n":"连载中","v":"l"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"评分","v":"douban"}]}], + "2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"美剧","v":"15"},{"n":"韩剧","v":"16"},{"n":"日剧","v":"13"},{"n":"英剧","v":"34"},{"n":"中国","v":"14"},{"n":"泰剧","v":"29"},{"n":"综艺","v":"39"},{"n":"其他","v":"38"}]},{"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":"喜剧"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"美国","v":"美国"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"泰国","v":"泰国"},{"n":"中国","v":"中国"},{"n":"其他","v":"其他"}]},{"key":"year","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":"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":"more","v":"more"}]},{"key":"state","name":"状态","value":[{"n":"全部","v":""},{"n":"完结","v":"w"},{"n":"连载中","v":"l"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"评分","v":"douban"}]}], + "41":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"41"},{"n":"日本","v":"42"},{"n":"其他","v":"43"}]},{"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":"喜剧"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"美国","v":"美国"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"泰国","v":"泰国"},{"n":"中国","v":"中国"},{"n":"其他","v":"其他"}]},{"key":"year","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":"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":"more","v":"more"}]},{"key":"state","name":"状态","value":[{"n":"全部","v":""},{"n":"完结","v":"w"},{"n":"连载中","v":"l"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"评分","v":"douban"}]}] + }, + filter_def:{ + 1:{cateId:'1',by:'time'}, + 2:{cateId:'2',by:'time'}, + 41:{cateId:'41',by:'time'} + }, + searchUrl:'/search.php?page=fypage&searchword=**&searchtype=', + class_parse: '.myui-header__menu li;a&&Text;a&&href;.*/index(\\d+).html', +} \ No newline at end of file diff --git a/lib/魔方影视.js b/lib/魔方影视.js new file mode 100644 index 0000000..4b73289 --- /dev/null +++ b/lib/魔方影视.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn6a2U5pa55b2x6KeGJywKICAgIGhvc3Q6ICdodHRwczovL21meXMudmlwLycsCiAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0vJywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLycsCiAgICBjbGFzc19wYXJzZTogJy5uYXZiYXItaXRlbXMgbGk6Z3QoMCk6bHQoOCk7YSYmVGV4dDthJiZocmVmOy4qLyhcXGQrKScsCn0= \ No newline at end of file diff --git a/lib/魔都资源[资].js b/lib/魔都资源[资].js new file mode 100644 index 0000000..f1ab91d --- /dev/null +++ b/lib/魔都资源[资].js @@ -0,0 +1 @@ +N+7eQjuVB6YRMQK3E7jVrgT0+jDpY41SabHB6GDnlUv7eJ+w3t8DtYDoDi4b5T5ntJldyMiLmzUZj4NAHHdDXQ/NHzYq6W9Avas7rpFZVTlB3y4K46HEexh5fK/JtMh7PB/yS3PH95qPust3+fI3iXJGkMI578JcO+YLvrikLnp3Mx6riDn7szIc2XMxSEPvSj31yJwB4W1ETtS92HnBdbLPBVUV2jiljma/VvsZgiHyoX3Ehh8RUkXWSydzQTQ17MuXW1HqYcGj+lcuhNVlZBE2LUCGv8L6lKejxSF4H1lb8z4JoDFoktdKNm0FmmyZSBj2gED6WlTsguS8biPIuFR+qXyrg83ue2pBDmKC5ddPfyk4/jUk55SOGO+tchEz5EuSOLfOUWMUFAErvydPkwLSPrYjDiLHwr77SrWrQ8xSK1fJtTwMtu4b1OKWjVMl \ No newline at end of file diff --git a/lib/鸭奈飞影视.js b/lib/鸭奈飞影视.js new file mode 100644 index 0000000..85541fe --- /dev/null +++ b/lib/鸭奈飞影视.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWV+NNWKEw0J62/I1tCaXxB7/CInNx6En4xM7oST9EbBn8zoKQ96lKEmqPYNgIR/6IuQcv6lmPJjF7r5FsYuXAoBEOR7NxwyxYr3+fcJOxeLWKqtNZ6DFl62OgFUH0VSHZc2C8P7VwojfIn8GyPI25QKzAIFJefPEeXYgZ3RYT+2AYC3KXjlWN6lEKmjVhGthiIGE/UummPNLRw4YjIMJ7wlBUG7CI2X3tXDyJOwaFY3dSM6F4xD5B7Z7di78h4dQvi8xmkDR8ZEPCoSDDJfL1PHCH8aeeujfSoGXTDmkSIZu0W9pS8sppz05ipBC1oBZJPnD8xHiAK5G9YLmAHSGSL5oZW+H7ZbxSxhRIeRuEvDlJGMyIGQ/vt1xvid36h+9+K07vGewpxnrdK1QqkljPupFnGi+w1cqXM9cfUDlC/ILAwDFS8EHfWBE1vJHNixw6kg45rWSGunmVLkhCqQqL0Z1gBZ2sEP4uRqObWVF3NkEd+PBsKV+v4aTk3eHwr2SqiR/iUBFeKrq2IJSG0m02O5kbWPJRqA4Q7++IcIO3m2S+OjDSFIhjGNh3wSG8upg6I6lpr+UcdpQQi0zW1v6J244Xw+z8xLAYJbTsDJImpJ3oC+KtOzkFDdzDGu/uJ4lwA97DplbslYOkR5DYIXVi9Gt/lGSvPVCK0NVJwbqtrGPcoo98JXZD3beJvkdIQB6Uhw+MWgA7jC8YD2v5g2m3zYjZDljlXrmFAvXWXALoiHhrbdLKTuuFYQ+uglfRlihOgOM2XAR0M+V7SKh4ft1kD1OmHgUzhnE+YP2LbifNdqmJb7Rjajx2v2woM3/2fdlZG7NvPG6/i8qX2T996v+yDnzGrAQOvr/mkBf+3BBVAlvMpUw2ywjXq/f8ET+43bqT5q+jWRmnTL/hEp4xQjOVJ0b6beQEPd/TsbLr7U+OC2lVu0brv3YXVQc/1bkNqdvqKoASllipo/YgNhHo2QkBiC10OX0caGj4xamcrE/3IY5N0NRVJwyCA0zml2yaCbV0frkKsaxggTPsRV3yEyBh2kGh6yyeWttdTyZx8b4DQLPwHf7Yy4Lmz2MUBmuihhNbarrlv5Sx+ZrUZNEtAgOpusODjtLxMP4N6il+Ljys1iIs2E9sjqUtP7uqfEwS4ywvrrQw8lwVpUNUgIKBR+rh45Z37QmzNBFDJQ6lWC3GpMXmJ7Sxzi7png1mfQxp6GTbEklGryogCOEpcMdJ8DjAHK7/hHMdSNDlOfqrCf+RaZ2uv+4cti4wVQ8UnMjY3BnPYzLDVOoLJT/hvNJZttCufcmdU283r2U4/2iPeddf0q93a1/bPS28yuSxy+H2sygP9nx+cz1aMelZWRuzWkNWvA6qfMlLyJWAW9Sq38j7QQgbDZZdCkCKcU2md6qn7eorzuuuH+NjUMPkqPpzvudFU+5/IxWfMX3QbCXGE++6uJonQ5lB0oqw+Z6genCJVwJ7rqOy4gRESKH/rrbLScAjQRScXUzH28fKfEL8xZks6wsutnS6u/KUp54pNw7hdXzFI4SfQqBqaLP1dvOkJ4d7qJLh/sZxkUnXK6LIcdp7IZneSNwrjWMpV9PifKL8Y4b+kI3+Oy2EpXO7Z5VfuFg219g= \ No newline at end of file diff --git a/lib/鸭飞影视[V2].js b/lib/鸭飞影视[V2].js new file mode 100644 index 0000000..7bbcc9c --- /dev/null +++ b/lib/鸭飞影视[V2].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/91aeXMbx5X/W/4UcMpLkBkGM7gBqrTKACAJEjcB4lJUzABzYIC5MAeAgckqb2LZlteHktLali07h2RLscuRVWutYkV2vozB4698hXTPDAYDckhxU9LW7kIlzPR7v+73uvv1e68fOCBkj6xxlOeS59WXPOCjsipHrXi8R3/5+ujOZ5PvHx7ee+NKNXDVu+xBUU9bkXZwSWoo1YCB7oiKCsAdVZWUFRTVCYFSaY4d+XgKJSTWJ3Uk8JRQ77IB12QOoAcsSYmXVZa8ROttjlAUWqdZTqXkBY7lWfVSAFuQGMCTCIayOpr8HbP/gtHp0quv0pzPeN3bWyBkijAp8A0QOEJgTAJ8gwRKBUNYJOMdEHWKsEjwDRBautls6Xt7c7KB3HRI2cCnHyTQCNZCxNaokg6GqnIdGZbDkXyYK4v1/momzha07FYG295qNpXGkCmNAqnskEgzcqzRCHXEnKoVk9tagiMFoq4i7LAZC6W3W35CrRKaVsgHx1K0WahRjVgYbarDXjRGj9NqiK9HKtRmOMTTVS4zqOtUbbWvSfX4BlEl0lKzlSFoTFPRTbEg+DWSbxVUgmj4cwF1Q05iTSJS04QxWcOR7jg2xsareDEy2Ajoqj80KjI5rCmnua4mhjaZZD5AjqqMvl5IbidG+fTqOsWhSA9RtmNpDI/gAyIckKPDAehU1DJVNLRBl1qrxWIwvtGOjxPaljwo5MPr/WRYzaFkrCQUEo0U2xYGlUiHyuGRZEgcKvF2aJhi1/LFFlosy4jOpkKJGE9kgkhlEMGT3WBjm+OQMBPFi32+ExxQUqg1WifwUQZBkoyY7+JcAgmFIijqr+UpiWFzFf9WgVEQTBeTvfWYIGFyPYIXmGpT345vyUyG2RxWqQEVKoer+VJFb20HY8XxagX3lxMYEULlXDxP5SJYnM8GNgs668+oWJnXWYoj1UJwNYhVuXFNCXbW8KSIFciqHETWOqUWsy3U4sNmJ7NW2szTLb1LsIV2HsdVLOdPxzs8k5OjA6Udw0dbGDYoityISZeKGwja3hwm6oMyGlin8HA8U20jQmFUD4oZrQ2WBhdbfa2XidR1bY1qZJrF9VES8aPbG9WenuZT9TE7aKJiLi+n9OLWalwJkSG5oW8kyPhmqx7J6fFIO79dqGnqaC2KBTAF7WJ4gl0lOwKTaAUQcRRP8MxWqtfqD4frUb69rScrFF5biwbWtxLoOrWaWs0pco5ZLSWqZTKVIIcJOYO34hmpGsjWU+tRMlTu8HgzX4tJ66NOBVkrtoWAlK20WlmKC9Yy0U1qHEgFKvViqB5fJzW6TKsVtYtU4ywJjnxW7cYFpJbv1wOtkBJt6oMsXfAXqvFWmFfHA7mV8yPNWKvJD0Y0R+Q4JBuLVnuDTktotvlYNhfN9gSuKWzSSJ+OrWfDjbLeaEfY1crGllQJMUFC6la0aqYd3OQr6bUCxYpjya8TeA4fpUZ4MD0osRUJ30r4MZEt6WU1RQ7LXFbCV5HN9XI8w/dLeF2mR6MhXWaGGwhVJtYb3VaNRopCgdARgSsjoxSr57dQjhTFWkOvhWiNy/oz6xl/QK0W5CG3EW7o+KCJ9IjA2iAz7m3GN5C6gIHNH9fLaGhcr8eYYXYjLnP+bL4vJFRRF7aF0pgq1HAiGRq0mvXRpraJ09FKM+pHBDSKbdAJXquvppukqGw0Oki+GMi1x2t4USOTZCNaSmCpQd8fyBZGGD6iMJqKktjmkGK0dJTWw2S7GUIHTSHH95Wimvb3SwoewvOrzUEu3m2MeBaP6nhVGwTlrR5SSfXSWDofWNMKdI5J6/VK1d+I46sKryEsUo4Q0SidJ1E+wfPxbSYUjDQKHSGgrEp5HkvlC82CrqPd/KiXCicVGmnSWKkUwAsxOZ5Gk8kYvz5k0HYJH1d4neD72HYjyabzxVihXwCne6NUQLJIslQjy2S5Xg3wteCQZoolf0vcKuLx+rhVGCPdrVglRSfj4bUuRwRLg2QjraWViJ/o5xnoJwisNmCVzS5TGJS3w7lUv6dsBJE8sr2lhVMctoZT2XaCDlfXEw0hLlbF7Gqpq/KsgpbyforZwrSRCBz9pUtWHCAplWC5bSMEoWbj8kAkd4w4xpIWSgFxpN2xUGbjskqN1Es//emJqGayiRYMuAGT1NfYdq9s0Fc8mDMAmTD/Moruf/RgcuOLyY0HBzfvT9564+DhXw++/uTotesmukMRJCUrK55XvdsKJf8MZyhB9QJtxB4M02jI5/dh3r1lK9rzlKiBEB7GMEsaiPLOQT1zcVwgBp7dXQ86YkDLoA78NnEKHPh9YF1QVZcoxRjSCNI7AsHDxOLg5iOQVSyAB8gsJtfvLRz89enh9ScLk7fv7z/9yloZs4cZ7v0LgYXgQsjiSByh70iErICxVFmjTCpHjPUVzy+7yorRNEiUaoLBXoDsxuu9aLNY2rOI/uIXPj6oxXbhUwqhPpVS1EVWkDR1acnKhWw8pNoZkvPTHdm75PwYihu9TvIs3bE5xp7d2vNQnEKZKi7PaeVZWPCgYORL59LVePoUiWPVRS/s5V26OAd0rI2BvYJdncKXvUugdfF5rcEV/1WXZQDijVMy1ePUlfKfY6XgBHfBQXwB27hZLuR9hiqLMtXXHMP7tDO0Ps/+6qLW03bZPquzuwNgh/0++GqL/K4kqYNdRexouxxlkfxxLGy98gzgtliOhf932RHLaMSJiV+4cMGxw+gUPm9Rl2epe3fkG/E0N4AS0MuGwXhW5tjRaLTLUiPWQMCxKdkCXoROAx537ODj1435Q/GA9jw06CqisAIxACIRAikOBZ8ki4Y76vVIHbqcY2r4p2pM3n8wefv35hDeg0++3X/v88N7d/Y/uwHwnsWjW3d/fPLG4e1fHd6+DXp4zctOper9+9N3Jtf+a/LnXwPq5M5/Hnz8BhgIONslOK2ZFYHGBcty4Kvz0F+wlv+YhRtky6rNlumtLStTVJkVGJbWF83BL3g16MGJqQfPiWOW4wg0DBy42X1vyXieMC8Xw39p3hZ/aTlOeONa8URmvv+THw6uv7n/6ef7T26seH++RdGUDK5N002CPp4UtRYhGNv081mIueTQ7l8C2GKNhXulgNd8BXz5MR92ETwBORKCL6NIaAk8wG2So2pUK8OqaDgY9QUjsHMmXclll8Ebx/Yo8Fin2j0RwpMdWQR3S78/6MPgP0AqEzQhs1ZnK0rsv3f/8N0bLhGBBDt3xeHaIA2aB0mohAvLuKpmWUU9xjOO78APDiSMdKZFpwvlykmfQxt0HyWQSo1VO4te1Lu05OKBZjq4OBw4hAcBN2eRLHZaOMeBMebds+u+n39g9IyR51rOBZkO7TO+OEC8+Aw7fK6LAeyLGu0YCj335Thz7FMXxEyLnOYA/NvcKgGHZrePLZj9Bg4hJzKLXsfI08+/erzIzEnYAKeGNtFHi/Iq0e4sLrLqMiCOljyg//yKGCbOWcq7mTPQ3x7wChzkKkTsGF1WTrIM+vxqGTRbF1Y9qYSRW/skTeksnmRMwzCr+sxce9kVYlatLBBMNN1hLM9MQRLbBv6WkFXLEqGD88L5zvhghqeAUdTrCF1eYDLn6mV0Yig1DVyYtb7Heh5ngj5zEPdpkZTSns5LpnhC7ikngXvHzdjRdr4rlLpFKRqnLpIW1QoVP/7ltYMn9/43+NS5FFemQHxtU9Z5Abmref3wLs04KrydeWFm4KSC2xigwuvYidz4bC9hJVkXn6NjtGZk+x8vMp/AA9O5Err6YpQ0Di24v81p/T/hmNycwamO4BlO4BwO4P/h4X/mwf/vH/In79iH3ANSyzMPpSMbPtNyg8ByQZI6tfzzd5sdVrPeAk83NKMdq+k4zaZhAAD4WjLEgf+qrJvyoN/pqDy8iMwfEIi8YHEcpwhSTB7sKYgkdVp4h0jznBsaCLQIdtImGkNUCyn7vmCquWIMaRvzlGFWSGyWacZTJjAAB88wB8iCXu14R6N6MusJf9pwcGFzxoQ/lziYsDljWjbl4NtWZvdvq6JzdKM9Y5OsTB1DTEkzUFsUVHCDcM7ApBg3ImnRuHftGWsJ7RFOWaTNaxW8yAH/4/FqIGOjWYECuz9dakJ2YDxe7/xNyfBJAALXzrUo4G3RYx2WiODVa//jb4/uvOc9eQS9fiyGjfUeBP349KPDb++7gXoawfYIAYImf/vq4Pa/u4G48VTa0ZvvT76+4YahaRvz6WeTN//ghukQ7NAWt//o8eTuB6dIZJTpaJNr149e+50bZqyxJGEvw+3XJnfvucFa3dlQX+2/9Vs3jCJMMQff/nHyzVM3zFDkRIExxnn33tEPt9wwI87W54Nv9h996YbROzbm/sPDtx+6YdSerfPdPx386Ykbpmsv0f5n/3bKEg3tue9/+PvJN9+7zp20N+7DLw9uPnK1kratz9++Ovz+C1d9WEEHYXZmKb85+u4bV0uxFT+689kpiquSrfjjj8C139UqKXuch09//M7VKsmWvbG3fpg8cVVcFXkb9B9fHr7zuhtIs3dk++jaYzcEayMO3no4+fSu6wEQZgf34MkfD65/cvjo9f0nN9yx80g3TCQ21nemsEjMdetm23vt8cGvvnM9IuTI3t93Ptz/4MP9j1x3pW+b7uTzNw9vuXqdjo05fPjl5F1XTK/lMKf9337tnU8NLp64ClISqwAPrJx2G7w8Cz/Qr8LEccUmAS+7MwSpzo5ZGrS9tT3oy9AHT53ztDqfIyTofE3nblAJWbYuBpAy7W0njZRkJo0XpnhaFnlHh2dmLOBjdaEkn6mrEbZ9kLq7e4yodMShQbS5kGKJcmY0c8O2gcoGGAaXKXim3svWzH0dQikMhaIsSpSs6otwAIeaFuoKJF81pjg3EkzH4SrChGWHkFjrR44p79nrAEAXnL2PTd1gwV0TNI4DmY4re8WVHJipYZSBHULsHzVsIsyi7IbzJwj/VTC8zZkNOb/sbrNw6TNbM3iFcXRwXmFmOs2v4ww+XY6FBc/L7j8hAfngKJy+yrOpWrkrznGLXp8PTNkHjodj5cyRzCmBlzn8KwD+irvCDkMzLNJSeckzZ0/mPctS1qolm2OAk+ZZhJlRj9JBUj7tZk8IDjzLjcACQuDMasH5nd7hLljngiOYFSPPugKQV5endG1aHIdKzXEUUVbhDz9ma29p7rgZ8qdZ1wsUHzhD/DSfe4Hig2eItzLFFyg9dIZ0Kwd9gdLDZ0i3ksgXKD1yhnQrNr9A6VF36ecWBLzp7H0Fanlu0bHjol+afUO5ELW4SCx7WkYtmTAInp95WsbL0sW5yL42H5enZEfhbzosT0jA33COuG4ESdS+0lmeFWB8cLLHQiQUZC6JDbjoYBslJ5sNvd1cQLbmCu7os8TGCuT24F2RFYDLfeUVr9V3Dm36aFvUcfDc/rmJmU+qIPFUIfNQQDMlGMWVNqG2OyDdshYHhrmfHL73ePL+B2ZN5/DBF/u/vnb0h0eT939zcPN3RzdvHT54sPITD+KhfDylKARDTesmVi1o/8ZtcE+zCr7mDpL21rkUeU3i8fLu+WtIi8+oBjmqPdZf1oAgOFfnhX9nA2hD8tIZhV74q+35SqewiPCMsu4/VdZ6DiqcUrQ1jeGfK9Q6JJ0o0QI1SKfbOVaNNQpRJyuwxlH+v191hdNwrbTaSZP5PV9Uhado7x+VEiBlXy0AAA== \ No newline at end of file diff --git a/lib/麻雀视频.js b/lib/麻雀视频.js new file mode 100644 index 0000000..5f5b2c0 --- /dev/null +++ b/lib/麻雀视频.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/31VTW/TQBC98yssiPzRlnWLxCWRqUBwAAE9VOVSqmhrb+JNba+7Ow4NVaWekECAQOIGp16KxAkJJFTKv+nnv2DHdhI7hvqQxLPvzc6+ebMZUmnILGKGZ+xeM/QDHCLWNqzLo9+Xn/cvDl9dHny0FvKlUCjQKyFAqtquG2/DkPh+uZhSqVg3k1EFkUZ0xCQpgW4vS9xljfBKSgF2I76p3GcieMwVEJpykobpMoxS5vVGfkSVMiVNtjz8CAWYPgXPHDEqPZNKRj0zpX2E4leZWOlVP1y7In2B8ObmSobrBgwoj5AzpTxMemJC8YEHehse1Dahm6jWrSK0nXF/azWPt43FItbjETBZwJaqIV2bVX0vtavHAtZrG7t7pf6MBkyqdtkpfKw1xeTNu32WgKXJT1buPXz8oLt2t8xSEoHHTGS6d7cXF8uycmG7CY2x1+effp7++W7qL93v09eH5vnv44vXR+bpm69nx9+sKqMoMhZDzkwYmkNq+jAGUGBdtuNHWcCmB0EPdHNztA2QGSuiXHWHPGBC48TmwAWhSnhEX47aRmugCIhVkDzp27ZjeHcqZ+ZJmsHEr+On3GJpobAVeppMPGnMF6yFGmWgpbzesi1S+PTmJiSWQ/xIN9F2ri800+vTgaS6ZlPXn/rekulnCkTclazPdjxLb5PvOz7dJMNep2iHUyQNRJb7YarH2fuvF+8+TFU7+bV/fnSo3wdKJO2AAu3kg9nhcb8jWUzlVkefqxMwNR7Ak6O3OeVK7Z6t3EflynpywUXfzrVxKjEGBtpdQ/MlElPwQ9slc89d+3kw77jO+tLGFO+6eRqkzGSZTJVONXtxXDFmqCT+qJdpVWZUAyZvM3uGEON2km1nTIH9Pxgqq2GPVleeFkaxkeg0ToW4SlQrSIYiyEdH03GVYH9I0Z8Gbqpicy3lfi0FNrcBwquuhsJAE4Z3YQ2GgSas8I6qIUs/NcvD0e1JEdfQGOXYsZimNgf0FwfiJ4oDc8hA8MS2Wq2WNSM30nQTcOf1inX+kbcn5AOq7aaTz7h3mkvf5SgrkPFfTLWWRGh3WC30iH7TYzIu60a1qPHlhEWRNFOhnaetIPac/2iS5X6ekBtnHs/52Ycv5z8OqlNctCqK1hc3iArFiyuneu8vUQ8i7J0HAAA= \ No newline at end of file diff --git a/lib/黑木耳资源[资].js b/lib/黑木耳资源[资].js new file mode 100644 index 0000000..cf7ba61 --- /dev/null +++ b/lib/黑木耳资源[资].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/ytLLFIoKs1JVbBVqOZSAIJnKxY+m7vfSkH9ZXv7y9lthuo6YOGSzJKcVJDo7onP5qx40bD5xdaWZ7smRAOpWKiSjPziEqCKjJKSgmIrff3y8nK9jNTM3NLUIr2SMqgafX2gstzUkMwUoEpDY7hOmBBUIDmxJDU+tSI5pzQFZGnc8ylbn+7dqFIDYrxY3va0czmIvXvPi85dQMbTrhXP9qxWgeotSCwqTo0vLcqBGFcLAEfuq3jiAAAA \ No newline at end of file diff --git a/lib/黑狐影视.json b/lib/黑狐影视.json new file mode 100644 index 0000000..3dd397e --- /dev/null +++ b/lib/黑狐影视.json @@ -0,0 +1,51 @@ + { + + "作者":"cc", + + "站名":"黑狐影视", + + "主页url":"http://fagmn.com/", + + "简介":"cc提醒您请勿相信影片中的广告,以免上当受骗!

    &&", + + "导演":"导演:&&

    ", + + "主演":"主演:
    &&

    ", + + "影片状态":"更新:&&

    ", + + "影片类型":"类型:&&
    ", + + "影片地区":"地区:&&", + + "影片年代":"年份:&&", + + "数组":"stui-vodlist__thumb lazyload\"&&
      ", + + //"数组":"[不包含:Clicky]", + + //"图片":"url(&&)", + + //"标题":"text-one-line\">&&", + + //"链接":"href=\"&&\"", + + //"副标题":"play-icon\">&&", + + "搜索模式":"1", + + "搜索url":"/index.php/vod/search/wd/{wd}.html", + + //"搜索数组":"content\">&&", + + //"搜索标题":"text-one-line\">&&", + + //"搜索图片":"url(&&)", + + "线路数组":"module-tab-item tab-item&&", + + "线路标题":"&&[替换:kuaiyun>>快云#>>共]+集", + + "分类url":"https://web.w1988.cc/index.php/vod/type/id/{cateId}.html;;ak", + + "分类":"电影$1#电视剧$2#综艺$3#动漫$4"} diff --git a/lib/一起看.js b/lib/一起看.js new file mode 100644 index 0000000..bce9f64 --- /dev/null +++ b/lib/一起看.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgdGl0bGU6J+S4gOi1t+eciycsCiAgaG9zdDonaHR0cDovL3d3dy5jcGxkcS5jb20nLAogIHVybDonL2NwdHlwZS9meWNsYXNzLWZ5cGFnZS5odG1sJywKICBzZWFyY2hVcmw6JycsCiAgc2VhcmNoYWJsZTowLAogIHF1aWNrU2VhcmNoOjAsCiAgZmlsdGVyYWJsZToxLAogIGZpbHRlcjonJywKICBmaWx0ZXJfdXJsOicnLAogIGhlYWRlcnM6ewogICAgICAnVXNlci1BZ2VudCc6J01PQklMRV9VQScsCiAgfSwKICB0aW1lb3V0OjUwMDAsCiAgY2xhc3NfcGFyc2U6J3VsLnRvcC1uYXYmJmxpO2EmJlRleHQ7YSYmaHJlZjsvKFxcZCspXC5odG1sJywKICBjYXRlX2V4Y2x1ZGU6JycsCiAgcGxheV9wYXJzZTp0cnVlLAogIGxhenk6JGpzLnRvU3RyaW5nKCgpPT57CiAgICBpbnB1dCA9IHtwYXJzZToxLHVybDppbnB1dCxqczonJ307CiAgfSksCiAgZG91YmxlOnRydWUsCiAg5o6o6I2QOicubWFpbiYmLmJndGUxMTMwO3VsJiYuc2ItZmlsbS1vbmU7KjsqOyo7KicsCiAg5LiA57qnOicuc2ItYXJlYS1pbmRleCYmdWwmJi5xY29udGFpbmVyO2kmJlRleHQ7LmxhenkmJmRhdGEtb3JpZ2luYWw7Lm90aGVyJiZUZXh0O2EmJmhyZWYnLAogIOS6jOe6pzp7CiAgICB0aXRsZTonLm5hbWUmJlRleHQ7LmN0JiZkZCYmVGV4dCcsCiAgICBpbWc6Jy5sYXp5JiZkYXRhLW9yaWdpbmFsJywKICAgIGRlc2M6Jy5jdCYmZGQ6ZXEoMSkmJlRleHQ7LmN0JiZkZDplcSgyKSYmVGV4dDsuY3QmJmR0OmVxKDIpJiZUZXh0Oy5jdCYmZHQmJlRleHQ7JywKICAgIGNvbnRlbnQ6J2Rpdi5lZSYmVGV4dCcsCiAgICB0YWJzOicucGxheWZyb20tLXN1cCYmbGknLAogICAgbGlzdHM6Jy5wbGF5bGlzdDplcSgjaWQpJiZ1bCYmbGknLAogICAgbGlzdHM6JGpzLnRvU3RyaW5nKCgpPT57CiAgICAgICAgLy9sb2coaHRtbCk7CiAgICAgICAgTElTVFMgPSBbXTsKICAgICAgICBwZGZhKGh0bWwsJ2JvZHkmJi5wbGF5bGlzdCcpLmZvckVhY2goKGl0KT0+ewogICAgICAgICAgICBsZXQgbGlzID0gcGRmYShpdCwndWwmJmxpJyk7CiAgICAgICAgICAgIGxldCBsaXMxID0gW107CiAgICAgICAgICAgIGxpcy5mb3JFYWNoKChpdGVtLGluZGV4KT0+ewogICAgICAgICAgICAgIGxldCB0dCA9IHBkZmgoaXRlbSwnYm9keSYmVGV4dCcpOwogICAgICAgICAgICAgIC8vbG9nKCdpdGVtOicraXRlbSk7CiAgICAgICAgICAgICAgbGV0IHV1ID0gcGQoaXRlbSwnYSYmaHJlZicsTVlfVVJMKTsKICAgICAgICAgICAgICBpZighL9C00YDRgC8udGVzdCh0dCkpewogICAgICAgICAgICAgICAgbGlzMS5wdXNoKHR0KyckJyt1dSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgTElTVFMucHVzaChsaXMxKTsKICAgICAgICB9KTsKICAgIH0pLAogICAgdGFiX3RleHQ6J2JvZHkmJlRleHQnLAogICAgbGlzdF90ZXh0Oidib2R5JiZUZXh0JywKICAgIGxpc3RfdXJsOidhJiZocmVmJwogIH0sCiAg5pCc57SiOifliJfooag75qCH6aKYO+WbvueJhzvmj4/ov7A76ZO+5o6lO+ivpuaDhScsCn0= \ No newline at end of file diff --git a/lib/一起看[优].js b/lib/一起看[优].js new file mode 100644 index 0000000..73769e1 --- /dev/null +++ b/lib/一起看[优].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/七年影视.js b/lib/七年影视.js new file mode 100644 index 0000000..3003ace --- /dev/null +++ b/lib/七年影视.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/七新电影网.js b/lib/七新电影网.js new file mode 100644 index 0000000..fd0d4c7 --- /dev/null +++ b/lib/七新电影网.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi7pppblm74yLuS6jOe6pywgewogICAgdGFiczogJy5zdHVpLXBhbm5lbF9oZCBoMycsCn0pOwp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAn5LiD5paw55S15b2x572RJywKICAgIOaooeadvzogJ+mmluWbvjInLAogICAgaG9zdDogJ2h0dHA6Ly93d3cuN3hkeS5jb20nLAogICAgLy8gdXJsOicvZnljbGFzcy9pbmRleGZ5cGFnZS5odG1sWy9meWNsYXNzL2luZGV4Lmh0bWxdJywKICAgIHVybDogJy9meWZpbHRlci9pbmRleGZ5cGFnZS5odG1sWy9meWZpbHRlci9pbmRleC5odG1sXScsCiAgICBmaWx0ZXJhYmxlOiAxLC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJ3t7ZmwuY2F0ZUlkfX0nLAogICAgdGFiX2V4Y2x1ZGU6ICfmnKzlkajng63pl6h85pyA6L+R5pu05pawJywKICAgIGZpbHRlcjogJ0g0c0lBQUFBQUFBQUE2dFdTc2xNekt2TXpFc3ZBTkpLVnRIVlN0bXBsVXBXU3NtSkphbWVLVW82U25tSnVhbEEvdE9PdHVjYmR3UDVaWWs1cGFsZ2hYa2c0ZFlWTDV0WGdJU0JIQlNqYW5XZ0tycFdQTms3NTNsbk8weFJmbDU2VldrK2lwcm5IUnVmTmJjaTFDUm1GcUliODN6NXhLYzdkeU9VWktkbWxDYm1vU2g1MWpqaFdjTTBKQ1ZBbTVKS1VSMHpiYzdUenVVSUpSV1pXYWdLWHF6YjhIVHZWSVNDck13Y05CTTZsNk00TmFzVTRkVFkybGdkY0NBVVp3RE5wVUpnUXN5Qld6MTc3NU5keTRFT2dLcElMODFQemtqTVExTHhiTWY2cC8wYkVDcEtFdlBTU3hLUnpYaTJadm56ZlgwSUZmbWx1YWtvOHRPWHZweS9FaUZmbElscXcvUDVheEdTS2FVUU9hQy9hd0VhMitwQlNRSUFBQT09JywKICAgIGZpbHRlcl9kZWY6IHsKICAgICAgICBkaWFueWluZ3BpYW46IHtjYXRlSWQ6ICdkaWFueWluZ3BpYW4nfSwKICAgICAgICBkaWFuc2hpanU6IHtjYXRlSWQ6ICdkaWFuc2hpanUnfSwKICAgICAgICB6b25neWk6IHtjYXRlSWQ6ICd6b25neWknfSwKICAgICAgICBkb25nbWFuOiB7Y2F0ZUlkOiAnZG9uZ21hbid9CiAgICB9LAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICAvLyDlsY/olL3lm77niYdvbmVycm9y5peg6ZmQ6K+35rGC6Zeu6aKYCiAgICAgICAgLy8gbGV0IGluaXRfanMgPSBgCiAgICAgICAgLy8gdmFyIGltZ1RpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgICAvLyAgICAgaWYodHlwZW9mKCQpIT0ndW5kZWZpbmVkJyl7CiAgICAgICAgLy8gICAgICAgICBsZXQgY3NzID0gJCgnLmxhenlsb2FkW2FsdD0i5oiQ5Lq65rex5aSc56aP5YipIl0nKTsKICAgICAgICAvLyAgICAgICAgIGlmKGNzcy5sZW5ndGggPiAwKXsKICAgICAgICAvLyAgICAgICAgICAgICBjc3MuYXR0cignb25lcnJvcicsJ3RoaXMub25lcnJvcj1udWxsJyk7CiAgICAgICAgLy8gICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbWdUaW1lcik7CiAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgLy8gICAgIH0KICAgICAgICAvLyB9LDIwMCk7CiAgICAgICAgLy8gYDsKICAgICAgICBsZXQgaW5pdF9qcyA9IGBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuYXZpZ2F0b3IsIHtwbGF0Zm9ybToge2dldDogKCkgPT4gJ2lQaG9uZSd9fSk7YDsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDEsCiAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgIGpzOiAnJywKICAgICAgICAgICAgcGFyc2VfZXh0cmE6ICcmaW5pdF9zY3JpcHQ9JyArIGVuY29kZVVSSUNvbXBvbmVudChiYXNlNjRFbmNvZGUoaW5pdF9qcykpLAogICAgICAgIH0KICAgIH0pLAogICAgLy8gc2VhcmNoVXJsOicvc2VhcmNoLnBocD9wYWdlPWZ5cGFnZSZzZWFyY2h3b3JkPSoqJnNlYXJjaHR5cGU9JywKICAgIHNlYXJjaFVybDogJy9zZWFyY2gucGhwI3NlYXJjaHdvcmQ9Kio7cG9zdCcsCiAgICBjbGFzc19wYXJzZTogJy5zdHVpLXRvdV9fbWVudSBsaTpndCgwKTpsdCg3KTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykvLipodG1sJywKfQ== \ No newline at end of file diff --git a/lib/七色番.js b/lib/七色番.js new file mode 100644 index 0000000..65889d0 --- /dev/null +++ b/lib/七色番.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/七色番[漫].js b/lib/七色番[漫].js new file mode 100644 index 0000000..d113cb1 --- /dev/null +++ b/lib/七色番[漫].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogIuS4g+iJsueVqlvmvKtdIiwKICAgIGhvc3Q6ICJodHRwczovL3d3dy43c2VmdW4udG9wIiwKICAgIHVybDogIi92b2RzaG93L2Z5Y2xhc3NmeWZpbHRlciIsCiAgICBzZWFyY2hVcmw6ICIvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sIiwKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICJINHNJQUFBQUFBQUFBTzJXUzA4VFVSVEh2OHVzV2R4YityaXc0LzJXaDd3TkMySnFKQ0ltZ2taRE1BaUk1U0VVQWxRRVVUVEVJdGFDRU5JSDZwZnBUTnR2NFpRNTk1eFR5d0pkc1pqZC9ILy9jMmZtMTg2MGQ5S1FSdVdkU2VOQjhMbFJhV1JQMHViZWtsRm1qQTAvRFBMOGRIajBTZkJ5Y016RzVxdG9malphd0hZd3BzcUFYc3hrRWx2WnpXVW9LT3VKN1BZdk14eUNHZ0t1RHErWTM0LzBVaWZndXRsWWJuOWFyM01DZG9lL2MrZUx1bk1DbnZQZ3RabE02M002UVhkVzZLMjFGWUVPQW5iaHZleTNOZDA1QWJ2SWdabEk2TTRKZUM5ZjF1aDZFSERkajdRMXA5MGhZUGR4Mzl5SjZjNEoyTDFjeW9aT2RPY0U5SnRmejI4ZmFqOG40THFWYURZOHI5YzVBYnZkbEcyc095Zm9Mdi9oTkpNTVF3ZUI3aVZzVFcvaHZWd0c3R1lYclpsM3VuTUNkcWY3K2ZlZnNwdGZkWTBaSnhJSks3UnFiU1QxQkdaMFBWN054YzlvZ2pLZTQrSW91NUZtNThDc0oyNEZKKzZOamp5RFhpZmRlb1NuM0V5ZUNXbnQ2dStwQ1AwOTV5MmQ4MTQxRnlpZEMxd3hKMFhKbklQWW5MZjAvZ2hORFJVbW5SYzVGNC9sb3RQMEltTyt6b3RzUDlYMlBEM2loWUJmdzg1UDZpRHdDOXQzazBsL3BndGp2czZGQ3pyTXJPZ1RZcDhNNXg3aUhzNGxjY201SUM0WWx4WEk3VVBHRlhIRmVZQjRnSE0vY1QvblB1SSt6c2xYY2w5SnZwTDdTdktWM0ZlU3IrUytrbndsOXhYa0s3aXZJRi9CZlFYNUN1NHJ5RmR3WDBHK2d2c0s4aFhjVjVDdjRMNkNmQVgzRmVRcnVLOGdYMEcrc3FKQysxNGVNcTZJSzg0RHhBT2MrNG43T2ZjUjkzSHVKZTdsdkp4NE9lY2U0aDdPSlhISnVTRE9mUlg1S3U2cnlGZHhYMFcraXZzcThsWGNWNUd2NHI2S2ZCWDNWZVNydUs4aVg4VjlGZmtxN3F2STF6NHMrdUdKUmF6NEcvYkRvL04xZm5pcUFGUWhxUVpTamFRR1NBMlNXaUMxU09xQTFDR3BCMUtQcEFGSUE1SkdJSTFJbW9BMElXa0cwb3lrQlVnTGtsWWdyVWphZ0xUUlg2RCs4MFBTRHFRZFNRZVFEaVNkUURxUmRBSHBRbklieUcwazNVQzZrZlFBNlVIU0M2UVhTUitRUGlUOVFQcVJEQUFaUURJSVpCQ0plS0hmZ2NJUmYxU3NsWFV6dFVxUEN1YmlSOFZhWHJBaTUvbklHWnhtWXNTZXh2L0k1WVZNS21VZGIwQjVmMlJpbkplNStKd1owdHV2OGJ1UEhnY0x0ekJVWm5odXhuYmIzVkwveDViNlg3Zk43b2JNM1pDNUd6SjNRK1p1eUF4M1ErWnV5RzdpaG16cUR3MWYzK2tCRlFBQSIsCiAgICBmaWx0ZXJfdXJsOiAiLS17e2ZsLuaOkuW6j319LXt7Zmwu57G75Z6LfX0te3tmbC7or63oqIB9fS17e2ZsLuWtl+avjX19LS0tZnlwYWdlLS0te3tmbC7lubTku6N9fS5odG1sIiwKICAgIGZpbHRlcl9kZWY6ICIiLAogICAgaGVhZGVyczogewogICAgICAgICJVc2VyLUFnZW50IjogIlBDX1VBIgogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19wYXJzZTogIi5zaWRlLW1lbnUmJmE7YSYmVGV4dDthJiZocmVmOy8oXFxkKylcXC5odG1sIiwKICAgIGNhdGVfZXhjbHVkZTogIiIsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHtwYXJzZTogMSwgdXJsOiBpbnB1dCwganM6ICcnLCBoZWFkZXI6IHJ1bGUuaGVhZGVycywgcGFyc2VfZXh0cmE6ICcmaXNfcGM9MSd9OwogICAgfSksCiAgICBkb3VibGU6IGZhbHNlLAogICAg5o6o6I2QOiAiKjsudmlkZW8tbmFtZSYmVGV4dDsqOy52aWRlby10aW1lJiZUZXh0OyoiLAogICAg5LiA57qnOiAiLnZpZGVvLmFuaW07LnZpZGVvLW5hbWUmJlRleHQ7LnZpZGVvaW1nJiZzcmM7LnZpZGVvLXZpZXcmJlRleHQ7YSYmaHJlZiIsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogIi52aWRlby1wLW5hbWUmJlRleHQ7LnZpZGVvLXAtc3ViMTplcSgwKSYmVGV4dCIsCiAgICAgICAgaW1nOiAiLmF1dGhvci1pbWcmJnNyYyIsCiAgICAgICAgZGVzYzogIjs7Oy52aWRlby1wLXN1YjE6ZXEoMSkmJlRleHQ7LnZpZGVvLXAtc3ViMTplcSgzKSYmVGV4dCIsCiAgICAgICAgY29udGVudDogIi52aWRlby1wLXN1YnRpdGxlJiZUZXh0IiwKICAgICAgICB0YWJzOiAiLmNoYXQtc3RyZWFtLWJmcXMiLAogICAgICAgIGxpc3RzOiAiLnZvZC1wbGF5LWxpc3QtY29udGFpbmVyOmVxKCNpZCkgYSIsCiAgICAgICAgdGFiX3RleHQ6ICJib2R5JiZUZXh0IiwKICAgICAgICBsaXN0X3RleHQ6ICJib2R5JiZUZXh0IiwKICAgICAgICBsaXN0X3VybDogImEmJmhyZWYiCiAgICB9LAogICAg5pCc57SiOiAiLnZpZGVvLmFuaW07LnZpZGVvLWJ5JiZUZXh0Oyo7LnZpZGVvLXRpbWUmJlRleHQ7YSYmaHJlZjsiCn0= \ No newline at end of file diff --git a/lib/三六零.js b/lib/三六零.js new file mode 100644 index 0000000..d668037 --- /dev/null +++ b/lib/三六零.js @@ -0,0 +1,99 @@ +var rule = { + title: '360影视[官]', + host: 'https://www.360kan.com', + homeUrl: 'https://api.web.360kan.com/v1/rank?cat=2&size=9', + detailUrl: 'https://api.web.360kan.com/v1/detail?cat=fyclass&id=fyid', + searchUrl: 'https://api.so.360kan.com/index?force_v=1&kw=**&from=&pageno=fypage&v_ap=1&tab=all', + url: 'https://api.web.360kan.com/v1/fyfilter&size=35&pageno=fypage&callback=', + filterable: 1, + filter_url: 'filter/list?catid=fyclass&rank={{fl.排序}}&cat={{fl.类型}}&year={{fl.年代}}&area={{fl.地区}}', + filter: "H4sIAAAAAAAAA+2YS08jRxCA/4vPHGbMvrK3/IJcor1Eq4gDUqIlbLQhkVYrJINt1jYPA8vLa2MgYJtlMdhAiD1e4z8z3TP+Fxm7Xu0oGs2BQBRx81fVXV3V3VNV7XcxO/b8u3exV5NvY89jXrOjyouxsdj0xE+TJv82MfXr5HDgdCBW6eN+8nggDiA2O4bSrZLK1lCKQDov09TJNOoQeF7u2O2WaB4A6fTcqk5soQ6BbdbWVLtDNgHYZrYm6yHwvNy51z2heQA8r/JebCKwL5kd18mSLwCsmz/1ttZIB2DE5210JL4B8Lyt937WoXkA7Kdzorqb5CcA6dwv+/5ZA3UIbLO+5GfKZBOAfckf+Ye8LwCsW1lQ+QvSAbDNZE7PfySbAOJL1VtdYF+GwDbT126Hzg9h9uVACxdOlRpqyZELxxzpwi2kg/Fk/KjWL8jCbquuit1+taBb5zgCYXSEyjd0+4Y3ZAgc9GUjGEFBA/Dh3KyIDoF0/b1PokNgm9sVXTolmwCy3qa53qY5z19sig6B9+HmT9EhsG65oZwq6QAiH077yu0cGodDHOVw4lb8EcqGPw35uMjHTXlc5HFTbovcNuWWyC1Dbn/F8uCnIX8m8mem/KnIn5ryJyJ/Ysofi/yxKZd4bTNeW+K1zXhtidc247UlLtuMy5K4LDMuS+KyzLgsicuSuHTxSm9/Qs3UzPdvJyfejJy6XllXTl5OnXn01HUp4ffWvGRd7+yjtTcT069+eD0jSw2HuK3c6JCpiZnJX0ZGqfy2qnT985Qx6ufXP07PDBx7ORaL31aJ8o8TUhYQopSM0BQXUvbCykI/2VWtecoSAGxz7lol82QTIFIKXyi6ziLpADj2elUtUdlDiJL6Va6pettcvobAWbBS9s93KQsC8HqN5aBI0noAHPvuut6pUOxDMLdNnV0rp05LDmFEHdYwJNO6QBkfQQpj1b2hm4gQqZm4uyIGcFdFLKwYhRWxsOIXVqj0VkPl9tXuATc8xA9l56Hs/OfKzvitlZ1UU+UPvVqCPgtm/qJKe67jyAhh9ne17J1yKQHgbzWRlakIkrw+q2VuAAHYr7Oe38iQUwBmIk3tGYk0APZ2Y09fcbIE4HmFj+4XfikASE65dNurnFOGwL7MLakSvYQQjHzTPyRfECSHXasGrwfAulZLZ6iMIvC+NNZUqkf7AsBZtfvBn6dyiGC+ys7odYVgFBG9WZAiMgD5AC6Mlx5AlBebf/W716EYEHhes+t36WwRWLde1zkqsQj/j1dZ2AvqtBZcD9IB3EuSGeaPR7eVPwJP/ANODQBRGpdBaQ5uduXSKNXA/EXWN2Q2As/u5FW6RVMBojSFYV+WWljvF6gMIETJcHrlWBpwBNbNLXqZJukAWHfR0SnKcAjsS7ujk7Q1CDxv/0AVqQNFMNpPL8sxAMi1cKTpReCr7VyoOmU/BLaZ6gXfPdkE4AzQWw1WoQwAEOWBoRMn4icC60L+y/KKOV2gTIUQ0rjLvM8V4zEAILqyzvENBojSzntHN1JNEOQhtGg82AD+Vk+zdPTCUsP+UN2mMYKZRnzz4mtRI5Du2xeigt9Gj+ttnoz85zcikjfOktf5MPrfoCm6k3wclkv/scl/aNPvvU2XeG0z3n+3fQ9A4rXMeC2J1zLjtSReS+IdeQYg3FeBnv0LfL9z7fwYAAA=", + filter_def: {}, + headers: { + 'User-Agent': 'MOBILE_UA' + }, + timeout: 5000, + class_name: '电视剧&电影&综艺&动漫', + class_url: '2&1&3&4', + limit: 5, + multi: 1, + searchable: 2, + play_parse: true, + lazy: 'js:input=input.split("?")[0];log(input);', + // 疑似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/lib/三集电影[自动].js b/lib/三集电影[自动].js new file mode 100644 index 0000000..61ac4c0 --- /dev/null +++ b/lib/三集电影[自动].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDmqKHmnb86ICfoh6rliqgnLAogICAg5qih5p2/5L+u5pS5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIG11YmFuLuiHquWKqC7kuoznuqcudGFicyA9ICcubW9kdWxlLXRhYi1pdGVtLnRhYi1pdGVtJzsKICAgICAgICBtdWJhbi7oh6rliqgu5LqM57qnLnRhYl90ZXh0ID0gJ2Rpdi0tc21hbGwmJlRleHQnOwogICAgfSksCiAgICB0aXRsZTogJ+S4iembhueUteW9sVvoh6rliqhdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy4zamR5LmNvbScsCiAgICB1cmw6ICcvaW5kZXgucGhwL3ZvZC90eXBlL2lkL2Z5Y2xhc3MuaHRtbCcsCiAgICBjbGFzc19wYXJzZTogJy5uYXZiYXItaXRlbXMgbGk6Z3QoMSk6bHQoOCk7YSYmVGV4dDthJiZocmVmOy8oXFxkKykuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL3Jzcy9pbmRleC54bWw/d2Q9KionLAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IGl0ZW1zID0gcGRmYShodG1sLCAncnNzJiZpdGVtJyk7CiAgICAgICAgLy8gbG9nKGl0ZW1zKTsKICAgICAgICBsZXQgZCA9IFtdOwogICAgICAgIGl0ZW1zLmZvckVhY2goaXQgPT4gewogICAgICAgICAgICBpdCA9IGl0LnJlcGxhY2UoL3RpdGxlfGxpbmt8YXV0aG9yfHB1YmRhdGV8ZGVzY3JpcHRpb24vZywgJ3AnKTsKICAgICAgICAgICAgbGV0IHVybCA9IHBkZmgoaXQsICdwOmVxKDEpJiZUZXh0Jyk7CiAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgJ3AmJlRleHQnKSwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgZGVzYzogcGRmaChpdCwgJ3A6ZXEoMykmJlRleHQnKSwKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBkZmgoaXQsICdwOmVxKDIpJiZUZXh0JyksCiAgICAgICAgICAgICAgICBwaWNfdXJsOiAiIiwKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgc2V0UmVzdWx0KGQpOwogICAgfSksCn0= \ No newline at end of file diff --git a/lib/两个BT.js b/lib/两个BT.js new file mode 100644 index 0000000..1a8270a --- /dev/null +++ b/lib/两个BT.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/九牛电影.js b/lib/九牛电影.js new file mode 100644 index 0000000..0696f9a --- /dev/null +++ b/lib/九牛电影.js @@ -0,0 +1 @@ +bXViYW4ubXhvbmU1LuS6jOe6py50YWJfdGV4dCA9ICdib2R5LS1zbWFsbCYmVGV4dCc7CnZhciBydWxlID0gewogICAg5qih5p2/OiAnbXhvbmU1JywKICAgIHRpdGxlOiAn5Lmd54mb55S15b2xJywKICAgIGhvc3Q6ICdodHRwOi8va2s5eS5jb20nLAogICAgdXJsOiAnL2luZGV4LnBocC92b2Qvc2hvdy9pZC9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwnLAp9 \ No newline at end of file diff --git a/lib/云电影网.js b/lib/云电影网.js new file mode 100644 index 0000000..0c0a131 --- /dev/null +++ b/lib/云电影网.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWVyvwWtIzIIYsnA8q/wlLeXw1PZrDcQkS4SM6d2BKO0LPBsOvYv2JE5eBbQA775S66EoOTFvNPc+UI0O0Pg8CktRvLZcsRYtH/lPEDsfOfRIgKX1czws7qyAeBsm06RVSqeDtGjh/6yBaUiU5jdAZpAGholvs8jTNsAOh4LCAgu9pNiAl8j+56iGdQ1rMMf0uEe6jbrCkQSG0i1xW8L+OZxGBYLnsdhT6BSDt7wYbhFGSzXnXP1iaYmh5ewfuJ6wcITMS4Gs/d+ISLfvozBfaZ1veyCRBVVPA+LMnypZjag6bQ+D/t0uYmCAVV6PrO96FpaeB8jUu6xSTDoAAn656hgxggMHP+OsFYwH8yhruDy9hQaaMcgZIWfBDnsq9a5Z/5gb8Euql+7a1FmIkxHuLIzcrBmh7CWjvesCZ3tTADdFG6XFtfMkpF1J5m/SHG/aMb9yHOFraDMuItlJ3tw9rjA7Eodkw/ZhISaeB6BA6SSrAtOnjI4BOl4jfSgecUGjV5RusuJpTaXHxmeT95fxl0Q1vyWkV1GtW+roCybUf7YujSUNmP7jvR7KzZRMbEIl/YSBCJGWQDopa7sR+8UdI+LQs/Qnlg3AqrSWzFR0vJ3Ujt7NGhQxaks+0Kt+ibk4gb+rjdNXJDcpOK8aHjRluJrdfApvbOWZGB/E/oth/FYAoBAIUDrAienW5ScsISzVEAxLUIeeQ3IBKXHjWDNs90vqDrlTocvSnn8JDC5vh/FJ3fDKG54S+Tofemnywp6BZiiF/D1Q5IrMkbwQpjhox4jVAH+cXHxwX+H7e47g+CYEJKHWN8/Nc1muysMHvb4KfFg1Oz4UyK6AjffJUtM5v54sYC1BTROI2w6gE9IMKhZaxHy6c3nSelY4hw4nBQY+PJxMmEfDcvNmlZQvzW5LJQw1VFYXCJczed8FiM8Axm+wBWyNv2Tqopd08uvaFsu+kvNzH3YDkbvDkr9n80oxAPcitsmB6o5a259+sqpG/sQLmfPYFv9EPDqsSXAe9jcnNQZzv0+Sp2z1hwNwqLK3t/IBkjOVy32i/tUnehRw5/E9d \ No newline at end of file diff --git a/lib/低端.js b/lib/低端.js new file mode 100644 index 0000000..ded1cbd --- /dev/null +++ b/lib/低端.js @@ -0,0 +1 @@ +dmFyIGxpc3RzID0gYGpzOgpsb2coVEFCUyk7CmxldCBkID0gW107CnBkZmggPSBqc3AucGRmaDsKcGRmYSA9IGpzcC5wZGZhOwppZiAodHlwZW9mIHBsYXlfdXJsID09PSAidW5kZWZpbmVkIikgewoJdmFyIHBsYXlfdXJsID0gIiIKfQoKZnVuY3Rpb24gZ2V0TGlzdHMoaHRtbCkgewoJbGV0IHNyYyA9IHBkZmgoaHRtbCwgIi53cC1wbGF5bGlzdC1zY3JpcHQmJkh0bWwiKTsKCXNyYyA9IEpTT04ucGFyc2Uoc3JjKS50cmFja3M7CglsZXQgbGlzdDEgPSBbXTsKCWxldCBsaXN0MiA9IFtdOwoJbGV0IHVybDEgPSAiIjsKCWxldCB1cmwyID0gIiI7CglzcmMuZm9yRWFjaChmdW5jdGlvbihpdCkgewoJCWxldCBzcmMwID0gaXQuc3JjMDsKCQlsZXQgc3JjMSA9IGl0LnNyYzE7CgkJbGV0IHRpdGxlID0gaXQuY2FwdGlvbjsKCQl1cmwxID0gImh0dHBzOi8vdi5kZHlzLnBybyIgKyBzcmMwOwoJCXVybDIgPSAiaHR0cHM6Ly9kZHlzLnByby9nZXR2ZGRyMi92aWRlbz9pZD0iICsgc3JjMSArICImdHlwZT1taXgiOwoJCWxldCB6bSA9ICJodHRwczovL2RkeXMucHJvL3N1YmRkci8iICsgaXQuc3Vic3JjOwoJCWxpc3QxLnB1c2goewoJCQl0aXRsZTogdGl0bGUsCgkJCXVybDogdXJsMSwKCQkJZGVzYzogem0KCQl9KTsKCQlsaXN0Mi5wdXNoKHsKCQkJdGl0bGU6IHRpdGxlLAoJCQl1cmw6IHVybDIsCgkJCWRlc2M6IHptCgkJfSkKCX0pOwoJcmV0dXJuIHsKCQlsaXN0MTogbGlzdDEsCgkJbGlzdDI6IGxpc3QyCgl9Cn0KdmFyIGRhdGEgPSBnZXRMaXN0cyhodG1sKTsKdmFyIGxpc3QxID0gZGF0YS5saXN0MTsKdmFyIGxpc3QyID0gZGF0YS5saXN0MjsKbGV0IG51bXMgPSBwZGZhKGh0bWwsICJib2R5JiYucG9zdC1wYWdlLW51bWJlcnMiKTsKbnVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CglsZXQgbnVtID0gcGRmaChpdCwgImJvZHkmJlRleHQiKTsKCWxvZyhudW0pOwoJbGV0IG51cmwgPSBpbnB1dCArIG51bSArICIvIjsKCWlmIChudW0gPT0gMSkgewoJCXJldHVybgoJfQoJbG9nKG51cmwpOwoJbGV0IGh0bWwgPSByZXF1ZXN0KG51cmwpOwoJbGV0IGRhdGEgPSBnZXRMaXN0cyhodG1sKTsKCWxpc3QxID0gbGlzdDEuY29uY2F0KGRhdGEubGlzdDEpOwoJbGlzdDIgPSBsaXN0Mi5jb25jYXQoZGF0YS5saXN0MikKfSk7Cmxpc3QxID0gbGlzdDEubWFwKGZ1bmN0aW9uKGl0ZW0pIHsKCXJldHVybiBpdGVtLnRpdGxlICsgIiQiICsgcGxheV91cmwgKyB1cmxlbmNvZGUoaXRlbS51cmwgKyAifCIgKyBpbnB1dCArICJ8IiArIGl0ZW0uZGVzYykKfSk7Cmxpc3QyID0gbGlzdDIubWFwKGZ1bmN0aW9uKGl0ZW0pIHsKCXJldHVybiBpdGVtLnRpdGxlICsgIiQiICsgcGxheV91cmwgKyB1cmxlbmNvZGUoaXRlbS51cmwgKyAifCIgKyBpbnB1dCArICJ8IiArIGl0ZW0uZGVzYykKfSk7CkxJU1RTID0gW2xpc3QxLCBsaXN0Ml07CmA7Cgp2YXIgbGF6eSA9IGBqczoKbGV0IHB1cmwgPSBpbnB1dC5zcGxpdCgifCIpWzBdOwpsZXQgcmVmZXJlciA9IGlucHV0LnNwbGl0KCJ8IilbMV07CmxldCB6bSA9IGlucHV0LnNwbGl0KCJ8IilbMl07CnByaW50KCJwdXJsOiIgKyBwdXJsKTsKcHJpbnQoInJlZmVyZXI6IiArIHJlZmVyZXIpOwpwcmludCgiem06IiArIHptKTsKaWYgKC9nZXR2ZGRyLy50ZXN0KHB1cmwpKSB7CiAgICBsZXQgaHRtbCA9IHJlcXVlc3QocHVybCwgewogICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgUmVmZXJlcjogSE9TVCwKICAgICAgICAgICAgIlVzZXItQWdlbnQiOiBNT0JJTEVfVUEKICAgICAgICB9CiAgICB9KTsKICAgIHByaW50KGh0bWwpOwogICAgdHJ5IHsKICAgICAgICBpbnB1dCA9IHtqeDowLHVybDpKU09OLnBhcnNlKGh0bWwpLnVybCxwYXJzZTowfSB8fCB7fQogICAgfSBjYXRjaCAoZSkgewogICAgICAgIGlucHV0ID0gcHVybAogICAgfQp9IGVsc2UgewogICAgaW5wdXQgPSB7CiAgICAgICAgang6IDAsCiAgICAgICAgdXJsOiBwdXJsLAogICAgICAgIHBhcnNlOiAwLAogICAgICAgIGhlYWRlcjogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICAndXNlci1hZ2VudCc6IE1PQklMRV9VQSwKICAgICAgICAgICAgJ3JlZmVyZXInOiBIT1NUCiAgICAgICAgfSkKICAgIH0KfQpgOwoKLy8g572R5Z2A5Y+R5biD6aG1IGh0dHBzOi8vZGR5cy5zaXRlCi8vIOe9keWdgOWPkeW4g+mhtSBodHRwczovL2RkeXMud2lraQp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAnZGR5cycsCiAgICAvLyBob3N0OidodHRwczovL2RkeXMud2lraScsIAogICAgLy8gaG9zdEpzOidwcmludChIT1NUKTtsZXQgaHRtbD1yZXF1ZXN0KEhPU1Qse2hlYWRlcnM6eyJVc2VyLUFnZW50IjpNT0JJTEVfVUF9fSk7SE9TVCA9IGpzcC5wZGZoKGh0bWwsImE6ZXEoMSkmJmhyZWYiKScsCiAgICBob3N0OiAnaHR0cHM6Ly9kZHlzLnBybycsCiAgICAvLyBob3N0OidodHRwczovL2RkeXMubW92JywKICAgIHVybDogJy9meWNsYXNzL3BhZ2UvZnlwYWdlLycsCiAgICBzZWFyY2hVcmw6ICcvP3M9KiomcG9zdF90eXBlPXBvc3QnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIGNsYXNzX3BhcnNlOiAnI3ByaW1hcnktbWVudSBsaS5tZW51LWl0ZW07YSYmVGV4dDthJiZocmVmO1wucHJvLyguKiknLAogICAgY2F0ZV9leGNsdWRlOiAn56uZ6ZW/fF7lhbbku5YkfOWFs+S6jnxe55S15b2xJHxe5Ymn6ZuGJHxe57G75Z6LJCcsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgLy8gbGF6eTonanM6bGV0IHB1cmw9aW5wdXQuc3BsaXQoInwiKVswXTtsZXQgcmVmZXJlcj1pbnB1dC5zcGxpdCgifCIpWzFdO2xldCB6bT1pbnB1dC5zcGxpdCgifCIpWzJdO3ByaW50KCJwdXJsOiIrcHVybCk7cHJpbnQoInJlZmVyZXI6IityZWZlcmVyKTtwcmludCgiem06Iit6bSk7bGV0IG15dWE9Im9raHR0cC8zLjE1IjtpZigvZGRya2V5Ly50ZXN0KHB1cmwpKXtsZXQgcmV0PXJlcXVlc3QocHVybCx7UmVmZXJlcjpyZWZlcmVyLHdpdGhIZWFkZXJzOnRydWUsIlVzZXItQWdlbnQiOm15dWF9KTtsb2cocmV0KTtpbnB1dD1wdXJsfWVsc2V7bGV0IGh0bWw9cmVxdWVzdChwdXJsLHtoZWFkZXJzOntSZWZlcmVyOnJlZmVyZXIsIlVzZXItQWdlbnQiOm15dWF9fSk7cHJpbnQoaHRtbCk7dHJ5e2lucHV0PUpTT04ucGFyc2UoaHRtbCkudXJsfHx7fX1jYXRjaChlKXtpbnB1dD1wdXJsfX0nLAogICAgbGF6eTogbGF6eSwKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnKicsCiAgICBkb3VibGU6IHRydWUsIC8vIOaOqOiNkOWGheWuueaYr+WQpuWPjOWxguWumuS9jQogICAg5LiA57qnOiAnLnBvc3QtYm94LWxpc3QmJmFydGljbGU7YTplcSgtMSkmJlRleHQ7LnBvc3QtYm94LWltYWdlJiZzdHlsZTthOmVxKDApJiZUZXh0O2E6ZXEoLTEpJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgICJ0aXRsZSI6ICIucG9zdC10aXRsZSYmVGV4dDsuY2F0LWxpbmtzJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5kb3VsaXN0LWl0ZW0mJmltZyYmZGF0YS1jZnNyYyIsCiAgICAgICAgImRlc2MiOiAiLnB1Ymxpc2hlZCYmVGV4dCIsCiAgICAgICAgImNvbnRlbnQiOiAiLmFic3RyYWN0JiZUZXh0IiwKICAgICAgICAvLyAidGFicyI6ImpzOlRBQlM9Wyflm73lhoUnLCfmtbflpJYo6LKM5Ly85LiN6IO95pKt5pS+KSddIiwKICAgICAgICAidGFicyI6ICJqczpUQUJTPVsn5Zu95YaFKOaUuUV4b+aSreaUvuWZqCknLCflm73lhoUyJ10iLAogICAgICAgIC8vICJsaXN0cyI6ImpzOmxvZyhUQUJTKTtsZXQgZD1bXTtwZGZoPWpzcC5wZGZoO3BkZmE9anNwLnBkZmE7aWYodHlwZW9mIHBsYXlfdXJsPT09XCJ1bmRlZmluZWRcIil7dmFyIHBsYXlfdXJsPVwiXCJ9ZnVuY3Rpb24gZ2V0TGlzdHMoaHRtbCl7bGV0IHNyYz1wZGZoKGh0bWwsXCIud3AtcGxheWxpc3Qtc2NyaXB0JiZIdG1sXCIpO3NyYz1KU09OLnBhcnNlKHNyYykudHJhY2tzO2xldCBsaXN0MT1bXTtsZXQgbGlzdDI9W107c3JjLmZvckVhY2goZnVuY3Rpb24oaXQpe2xldCBzcmMwPWl0LnNyYzA7bGV0IHNyYzE9aXQuc3JjMTtsZXQgc3JjMj1pdC5zcmMyO2xldCB0aXRsZT1pdC5jYXB0aW9uO2xldCB1cmwxPVwiaHR0cHM6Ly9kZHlzLnR2L2dldHZkZHIvdmlkZW8/aWQ9XCIrc3JjMStcIiZkaW09MTA4MFArJnR5cGU9bWl4XCI7bGV0IHVybDI9XCJodHRwczovL3cuZGR5cy50dlwiK3NyYzArXCI/ZGRya2V5PVwiK3NyYzI7bGV0IHptPVwiaHR0cHM6Ly9kZHlzLnR2L3N1YmRkci9cIitpdC5zdWJzcmM7bGlzdDEucHVzaCh7dGl0bGU6dGl0bGUsdXJsOnVybDEsZGVzYzp6bX0pO2xpc3QyLnB1c2goe3RpdGxlOnRpdGxlLHVybDp1cmwyLGRlc2M6em19KX0pO3JldHVybntsaXN0MTpsaXN0MSxsaXN0MjpsaXN0Mn19dmFyIGRhdGE9Z2V0TGlzdHMoaHRtbCk7dmFyIGxpc3QxPWRhdGEubGlzdDE7dmFyIGxpc3QyPWRhdGEubGlzdDI7bGV0IG51bXM9cGRmYShodG1sLFwiYm9keSYmLnBvc3QtcGFnZS1udW1iZXJzXCIpO251bXMuZm9yRWFjaChmdW5jdGlvbihpdCl7bGV0IG51bT1wZGZoKGl0LFwiYm9keSYmVGV4dFwiKTtsb2cobnVtKTtsZXQgbnVybD1pbnB1dCtudW0rXCIvXCI7aWYobnVtPT0xKXtyZXR1cm59bG9nKG51cmwpO2xldCBodG1sPXJlcXVlc3QobnVybCk7bGV0IGRhdGE9Z2V0TGlzdHMoaHRtbCk7bGlzdDE9bGlzdDEuY29uY2F0KGRhdGEubGlzdDEpO2xpc3QyPWxpc3QyLmNvbmNhdChkYXRhLmxpc3QyKX0pO2xpc3QxPWxpc3QxLm1hcChmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbS50aXRsZStcIiRcIitwbGF5X3VybCt1cmxlbmNvZGUoaXRlbS51cmwrXCJ8XCIraW5wdXQrXCJ8XCIraXRlbS5kZXNjKX0pO2xpc3QyPWxpc3QyLm1hcChmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbS50aXRsZStcIiRcIitwbGF5X3VybCt1cmxlbmNvZGUoaXRlbS51cmwrXCJ8XCIraW5wdXQrXCJ8XCIraXRlbS5kZXNjKX0pO0xJU1RTPVtsaXN0MSxsaXN0Ml07IiwKICAgICAgICAvLyBsaXN0czonanM6bG9nKFRBQlMpO2xldCBkPVtdO3BkZmg9anNwLnBkZmg7cGRmYT1qc3AucGRmYTtpZih0eXBlb2YgcGxheV91cmw9PT0idW5kZWZpbmVkIil7dmFyIHBsYXlfdXJsPSIifWZ1bmN0aW9uIGdldExpc3RzKGh0bWwpe2xldCBzcmM9cGRmaChodG1sLCIud3AtcGxheWxpc3Qtc2NyaXB0JiZIdG1sIik7c3JjPUpTT04ucGFyc2Uoc3JjKS50cmFja3M7bGV0IGxpc3QxPVtdO2xldCBsaXN0Mj1bXTtzcmMuZm9yRWFjaChmdW5jdGlvbihpdCl7bGV0IHNyYzA9aXQuc3JjMDtsZXQgc3JjMT1pdC5zcmMxO2xldCBzcmMyPWl0LnNyYzI7bGV0IHRpdGxlPWl0LmNhcHRpb247bGV0IHVybDE9Imh0dHBzOi8vZGR5cy5wcm8vZ2V0dmRkci92aWRlbz9pZD0iK3NyYzErIiZkaW09MTA4MFArJnR5cGU9bWl4IjtsZXQgdXJsMj0iaHR0cHM6Ly93LmRkeXMucHJvIitzcmMwKyI/ZGRya2V5PSIrc3JjMjtsZXQgem09Imh0dHBzOi8vZGR5cy5wcm8vc3ViZGRyLyIraXQuc3Vic3JjO2xpc3QxLnB1c2goe3RpdGxlOnRpdGxlLHVybDp1cmwxLGRlc2M6em19KTtsaXN0Mi5wdXNoKHt0aXRsZTp0aXRsZSx1cmw6dXJsMixkZXNjOnptfSl9KTtyZXR1cm57bGlzdDE6bGlzdDEsbGlzdDI6bGlzdDJ9fXZhciBkYXRhPWdldExpc3RzKGh0bWwpO3ZhciBsaXN0MT1kYXRhLmxpc3QxO3ZhciBsaXN0Mj1kYXRhLmxpc3QyO2xldCBudW1zPXBkZmEoaHRtbCwiYm9keSYmLnBvc3QtcGFnZS1udW1iZXJzIik7bnVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXtsZXQgbnVtPXBkZmgoaXQsImJvZHkmJlRleHQiKTtsb2cobnVtKTtsZXQgbnVybD1pbnB1dCtudW0rIi8iO2lmKG51bT09MSl7cmV0dXJufWxvZyhudXJsKTtsZXQgaHRtbD1yZXF1ZXN0KG51cmwpO2xldCBkYXRhPWdldExpc3RzKGh0bWwpO2xpc3QxPWxpc3QxLmNvbmNhdChkYXRhLmxpc3QxKTtsaXN0Mj1saXN0Mi5jb25jYXQoZGF0YS5saXN0Mil9KTtsaXN0MT1saXN0MS5tYXAoZnVuY3Rpb24oaXRlbSl7cmV0dXJuIGl0ZW0udGl0bGUrIiQiK3BsYXlfdXJsK3VybGVuY29kZShpdGVtLnVybCsifCIraW5wdXQrInwiK2l0ZW0uZGVzYyl9KTtsaXN0Mj1saXN0Mi5tYXAoZnVuY3Rpb24oaXRlbSl7cmV0dXJuIGl0ZW0udGl0bGUrIiQiK3BsYXlfdXJsK3VybGVuY29kZShpdGVtLnVybCsifCIraW5wdXQrInwiK2l0ZW0uZGVzYyl9KTtMSVNUUz1bbGlzdDEsbGlzdDJdOycsCiAgICAgICAgImxpc3RzIjogbGlzdHMKICAgIH0sCiAgICDmkJzntKI6ICcjbWFpbiYmYXJ0aWNsZTsucG9zdC10aXRsZSYmVGV4dDs7LnB1Ymxpc2hlZCYmVGV4dDthJiZocmVmJwp9 \ No newline at end of file diff --git a/lib/侠客影视.js b/lib/侠客影视.js new file mode 100644 index 0000000..8070d94 --- /dev/null +++ b/lib/侠客影视.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/4VXWY/b1hV+968QjMKasRxx0UJxXLeQRJGUKIqiJFIkm8LgKu47JZL2AAGKNg2atkBe+tCmaPuSvKRpgLzUQdo/k7HzM0pqZtwZz7QhwOVs3zn3nnsPz/UyRfbbXh7GQfu7Vx+/efVZO5WVpPGs0Wx7gZa5+nsV/Z6V6l7ynhLkjx69y24+feDdC/I81fO0BkpC2X/0aFNRle5ejhtxZV8JXjxoVFdqpa5+1mh+96+/XPz9bxfffvX9Z79qPjmKXn/+19ef/ruSHaGvmGaQpBXLTNPwDACKpJ071cO1fOdKIYvdSg5Yvqbn7dAMgX2gAYkZHABLA4xCdeUkMQrDclM9bpup517ZXXKeX5q/eGG47Ys//ePi41fn50fi9e8+uXj1+yvi4qPPXv/il1fEm6++ufjzb66I77/84vvPP7hW++IPr7/87fk5EMo7vfJdvy4F//z6u2++PT+/5bpyS3aT6fD6asHylqfl7coiADA1GNiRSyESDA3obJjteEVEYO6ZlK/mIiWnnEmNViydDsdzc9GZqBO3Q4CEvlmq89gUwNJmhBwtU2ML4iLoimkJqwAyCGG+Z0OLPaSCPa1cIj3eADYdihE5er6KRsGC2qXLvd5a+rGG9OEOUCL5Xowwq8cPnZRXcDDYszCdp8zWh0hIk7J9BKZuTIj5oZUlvgeZ9XfLWxACVID0UFxg6xY/9nxuQggsyExFWIVt07Iwyh7C8S50wZlx6PWmLXMZjrcqtC6tgnVWwupg2qC0MWM8HOP0tjfpORudlqfRcLAfjAb6lJguM8mUKL1kgqy3GrnaqDtTPDpyhwQvS9sYIywqZDUxgOkdz5XLQEzc6cSliQNtTCbbwsOigTtZdyb4ZgX5Cy501EWJLK1cIQKK7JoAxdpmZGGM5CoDWG3NEg5KSW44lGyNQga4PpCLZLgeS2QwimfsKM48Ys5s8RYoF1nBr81sI3YsFzVdcRTsPQG2A5ueTPBEoY1ltAtYt0LZRyN0h05noD0tww7WN7UMCchyDG2dCJfXSI/Zg6g7XkjxdOsn0pAjWUDket1SWyoTYrUZR3vWnOEsS7II5ni91mFX4OIuAGKYnrDQxKaJlssnrITTMyWU+AKbCqkBiLSGLRy03LiIZy4im5GnewvbBkMzwiZyul0rpqRMaG5kl8aCoKWkMEPMTIKlksq00t3O2dYcEymcLEcIP23NwyDo2hrHSEk4BwSJOESZsIUDniYLqBcGA0QAAns+ma9XMD3cKNKWZpjcGpvcgSuI3diDS2qu2NhqRHRkZYxNt72YMQ+cKu0JeitT2dTx5QO5YiXysNEQjcq4eQfTe1oGed0Y1BWISXerPhBDS23UK2VrwRPCnrcgNYsJV4Sq7x2kMiHses42GG1KGIMwqqXnWRgKNoxDPDPQTSqedRy+7AlE2dsSPTC2qxtT+0Je3WamzbvVfRBwdwgPKcmcTbSeIg2RVZgOVYznok5aGl1gE+epLmetPmxuMyjoG66meJCQrib7jldKQassk6WPdlIE3SxZgBrJK3XIcBZn9cfqzqk2xLhnzzbzAM9HhcmzsTV3KcsWHHK6cJl0mrEIhcmb2sbjvNomCdPaRtoowaK2gViksplbdqeyWbrL2gaghn12UNmYnNkfD3a70AZHtR8ywGqbBevXftb20llOaZfRpnrlZ9xfD4a0UIKQ5/CsDwCbodUF10s4HSyzkQyQoGRlvbmYJHyU8yoq+3qMyrgsFry26Ew3mIPO5Y4uAHzGk+uN6dDLDapENggBKTRIiFxInRwh+2tNwFuiRMgaBWzY2Qpc7wKz3GFOzKeBp7OmMsd8yY58Ftf8man6Q1wLSUcIe5s1Eh3scrPwyK4+XtnUHA/ook9nvsMsgtzcCa0ROD8s7FEkQryqyrBSJqQ5pbYCWBD43F+WjpZzkWV0NVid6UFVRjTfEmzGSlBHdcVkCLFe30OnEDZdFOU6MRgVRGZ8uK2WgCfKS+YAdkiXk+M9u/DEFKVofJ3v9MNh6/rDOS2ipJVu6T6+YlObI7iBeChsE6FoWEEDdkuTPU4gkBmAl9osw8itQFv9Lj/vW4g9JXAfxuMJaI5hgXXRNTFAna7Ej6pyHouHfcvlhhKv+TKtzteOXWa6vEuoDbOsarPYWqWLKcGvVLKwO3Z/JLtkh3SICN+sU9YKvcXU6mtb0sFHg0M0TIwoiLkkCGiL0F0nnDErJNBn2hQswKpqzoqlpnJ6P4wYShsjhRfsBZbOh6FdzHcWboP4yCnEAucmDLdbc7AkIxaUg0GCLogOr+6LmJypOxa1YY4mwkiarX0QnbG5TNmtoCpS8WZvDOQh3XLnAM5ygt1FZ2UYJ3ONFQrfngOUshFtXAwQDwVjINisSCKYhI4XrDbRMHTRPaJNRx4XrTzMdOfYyqRcUVUSmAf9nF3rHaFDmJJhG4OxTIUrEF0OBiu+nEb7ZTDotNZ9cWI74sDGJVeTBAWdKIvYGRQZHe8phIwTY9BDWsthhLSwAvN7oFGYvd4YUjtJtc+MvKu0CBQ44DsOVVcDrP6lP3t29a9PdDlWTe7eJuUoutksAAcNePz4bpciK3XPBF2yjh3N81COk7qPavvyXpHjy5at4VpP5cveq36bsW48rbqgk/ff11qnV4iqnOrP9Vx1M622f/PHr19/8sWVzJXL4qzxIztpp8E6jS1/d3Jy2nj2k6ve7aiip406vqqhm62ZRfsYx0msR5mepCeWH2bpaduTU9U8AeJG6MpF1WS1H//02Un1OP0xcPoz6Oent9CqDqwCqzHb1ectkREH3rWs/n4rtIzGyZGr+2pchFXfWTWeUPP0RqBXvWFlnvl6osqhflKRp0/fKpw3dDfR74eCfwhKkRO938V0NdAucW8C/3cMwe6kefHrD9989GHdXH76wVmz0WrcDqP2D0RWYb0sgszJXnq7dP/SlK2DbDmy/1KxXKu+gXZaT3A9C6fvxlY32XZehXedBpJZbypHD4EklVNLBS7TADyseMcprURtO3n4NlGNJFafPTxmqHnM0NNb+PUw7Pz0Nq9Kjxr4N5xWERzH9qTxwtRlTY+Ts8aL5ko39FiPm2eNOqjz87c+a4Bx4OPWrv34vHIK3uO0cnDbq76X3ZpbeWq+79cHi/YlxrPLV/P0wS19I/PV1Kr0dfUkSeMnjczS3p29t7g7PR3XKyCYrU9u5vP6ivU0i/3GtU69YNpcagzayXGrWEZx8lY2nKzbmn5cUJeO71pd7pwmPEDB46qwtHpU6QjtoePm6ZN7ojwul/3Z/8HCoQ40mqAQ3EUG/f6kgrkXpDrT6TdgarI9Ho3vVw5lTauGd0O/4rSXjpogd/TP352389skANRpvZG3esuf/oBKlW+j1qxSd2cJhpf7skrvO6BPGv8D4r6AwjtRHAvZ20PrzcvOzxrg3Zk6niNrnLuiq1J9jxEAXO+UF00mtnaW3zy7PuraeTsvnKuj7vntSb2vhgFeJxu89MLuVaU4FqV34r8eVSW7Uwfv0Xynop1Xq+nB+X8AxvWBMEMQAAA= \ No newline at end of file diff --git a/lib/兄弟影视[优].js b/lib/兄弟影视[优].js new file mode 100644 index 0000000..e0ed762 --- /dev/null +++ b/lib/兄弟影视[优].js @@ -0,0 +1 @@ +dnii7ugd5nEoxGnGrkv4T8NAdDDJwMaY+f0IHIJCWKN786Xp8FEzcCKaiWpmL3onHTyWiC6w1M2+CqOdh4Dw6I4A3B4s2T7xsWgBW0wQA2cKUBnantU76TyhdcSpK+gnVVVg3IujDQ5hG43Vu+zLK/5qfVZy9762q4rOm/Rjc7ynnFsD+ClJPU6fTq34de96pfS0BLTEVeer+DwLQ7kLUtLYXMnu9HS+fWAGZatjbFxN26OJvv2ycZmC4TMGgsv/UXHhPopBR00/eVFUUGWS1kBI4X/cgUY++tHTNWU6BAWPJfXHhWb100Cd8KttiPIF8ivz8s2H/uRZU/MfKyqBtbKKj9N4bwrHmMthLAyYo1+b4b7ry8taiP7HNaaAvOt59DzFYs9G6ghnYO+ZnBD8bdQlxRUJ6sIplqaCiFyrKAwricXnz6kULV2ObJmPh2qGQDRg2sg3z0q8Jr5WSi5F82u4NQ5f/L2D6TNxq8/97KHQug7Hbx/Ygj33SSGuscLFHeDrGCVMX8tNzkqJrkfY/yMDgYyX09cZS81UVvptXdyEvvkwKHc4Ks0OXvjA9ZgDQCIEKSdWIPaVMefBVFFuQdHTY0om4LQtlGe3l2A6RkS1ebmUtxHIMSIjZJPn/9oM7LOdegUWqoV+g1N2Uqx6o6faDMs5bU9EKisEfR22koQ+zfQ0vFCfiWcVPNQj1bEyah0ljUIVqwY4kORte55KLhmC3p3bBae7aCDVXRFVsfDfYfTou4nO/SRgxycCJTeINt9NObzMAHm46Gj446WlrwYoSxAmrnpAOuPA5IgDaEJSMxsObkQikojKLh+273AN1yMiKgnB9QjnKgfd7e2fR0quQDW+MHDhZLjQHjA4PHSlAcVfo1X+F6Q6sKU4YLzmfxIu4SBqkyeGX/mj+ZvAhAsIocdNsawufl5vFXrix2g2kpAiULNFaFTTlqlf8wyugh6+RKgOVBPgIi/NkvU8PBFfOvZVA4/i5RFYocQErQn3oYSehMrcb77azqbSfkN5VQbZ5i1OhZ/1c3i2CFv10fCGK81bebzFGFV1120rWKTObhSdgKxRyToHG/5ce2tqNjTrpqkEwsKKclAEuR65GiMuB0FC8hNZMJLiDm+8c+lEKJ1m64goqFukS7C4UngyvBbR30cxI3sViF3ExTadH51n0Y8OlpeW9GZ8FtKkGIv5xkeaT3GGpui5XQk7tbqw0UFOUrDkgF+wwjyE9Cn4/R0NfNQyaXdOTErl1ZXakpBtnhJ6X6CEqJtAF/LujW0ZQf0XZ67ZQcByIamIHHxG72z13AwD0XuLG1eLXfOfMz3MRFg56N2qJzNKzPHNlubbNQY9X3EwaIuQY4SrK2BbWie3vkKiHlrV0oXab/3ppKQ48fx5jbpdlRieRTtvAoQGUW9adNQJGRqD0mETUNAZJV3aWXP9fA3Qzs13juwpkvcIpBsMYf2ZuYSyIaQbT6P8NzQnsCatJrnzzfyK3a+WCQkHmdTQ3JQUL8nV93aTjeRLY6I9ITTFoVNwxM/cp4C7pYopDhmBuKm0H8WY0EfALsWNwXpzJ7pOMqOLwKN9Yigk0BFewehE10b85TV/+IqwwNnCYzjKm0cpgQu8JczHS6NYXi+GRLt6dhyZcanpN7tspVOIN9xIQce2YhwGB4GGSLUgxJz8dn2NPqbgG/LsVfeE3poPcQIeAsh7bUb16FqpTr2mEGaprSgFSAiafoBQaWfJhUc4Xv53aPK3JFp57YwpdPaya++Kg3mI/KuMC7XPtMupC1Z/6FBr5VJYVvGRZfl9yG6WpaOU9yOnXeU6Pq8t4yeSSNAM9DU256jiZHsLRVYhAkzM4mYBVxljaF1ET7FuP/P1lSFiSPMkmEvkEoeicNjJLH2dSUxQxrBgFGYxbQDkV+Xh5wpLUn1qYbDaGjnusihP7HB+4e6UBkNwB5yWiV6L3uST2vY7PqNPYZg3clzOddRhJuAp0AwPLmwdL2US9inHPeqKWFavus1xz0z4fmKagUwqw2Wo88qJyH4uPz2n9UKkW/3xNipP+EcJwmWASTpM68L47HPBepvdr1PbGXWiP+wTL4j390d2M0lNF/9/Zzsf/5gLQelnXY3LS+GT8/uTIuYGIlpfn7iLU/MONHmpe98nvd9O/ZzerSDLACmOPIxYu7kZ03BHaO0omyXiWJ8brU2uRs/0rm0xgboc3RfzZpMGneb4XK2UYFWb1Lx/li+PxgeDjiGOcbjokS1ty8uLlmd9OMKBYl1DIuYHxsok/Vve0xgp2Jro//khHzykPpof0cmLkPP6GqDXmfFYgjonH3br90ONVl2yO2jxJyKBJPMae9xyrwqoDP0goHmBTlzKAEBKhkol0ybOqKDCR2k9tUjwqQBfjNxWGv1DJu3UF3WYFD+7cxgS51K+/6QFot0lCeh3oa77SVxsp/9Zf/hSb4rNyoOJ0a+xDHClr+skM266LZj4uT7b9F7mepT1Q4s4RE0mYf6a6sjzPLruyU529tfM+wTRAgVSFI1nzLjMZVPOTDHDXVrUNQ3gkL56PBVmnJpra+mQ9oSRYZrdu/W9m8eGEttP3YLyj4Y+mqJq3vlaTF+6LgwpDXXX/Xs7TWOEM3LABZJ6ur40182rHXy1u+VtBcpjvpZZ/o/vAG/RiY0IBpSK9GhBDgbzZIGbgBmrT8T2xgvoFQSR+ewYpHiQ6Kz7w3I5nK45mpKMZClE4b14ovU+ImWMaejK0G7CqQHxIz04cuJTkw14fSVelwqogKCdAl3oy9YzLNpWwsMuu63YfrKzkKg4Clud0AHfHKRwZc2hvkNd+3koM5o0HdZwD9UMC9w5vka90GgBS7qKlz128bjOIg7bVSpTCDCGpf9nxBjMbGNx48SRurRg/X4EZVc2y/Nes4+1DNLj3/Uf4e50Urb3VPFHKybp7X/6zcGaWTfspv+nv3B5kvvUEC2DgUyxnsIv5nHqQrogTj31OxTMJZO5u6tc3K/f7zEVNfxCvwz0IDbwYoUii7pnAVT1lb6/0zfLsCQtfeR1ZJzJ9RfjSjSnJBwAQaGduiBGEJEZ/f8M7o3s1HuNTBXhvPRUWuPMphpIgCbRMqWszrriNXwBfMXLxFQHxvpVqZQhzrK0SyPJrwdvyn5eSQJka/vGZc5xeLzzTB0in4UdIJ5Qnfggo1p7jVieyk7nZlErkz3hH3iKthbWObqYgrWKdobkuL1eb2wHE1ksECE+mv2D9JbgCzgvRsISit5T/qw+c3oEd5z4Lzbyj+JsVhdUVhgNeHR5lwBvh/oX6C12D7v0+0fqtfP27gY5ttPUseAD9w7gBegDotue2Ev8+KMzdTWpnSTDbzNPqqzdp9IWDy8PUtvQa6E2LIxy9LvK1MQ+QX9nNNUhwWTyhdfqZ4XX926lpXJdKyVbgp2/j7lKFLnUDsO5M85Aj/b+r4ZhZcnkS31BKE+vfenUL35LQpZavfAhtha7e3SxBbbG50MpC2F69Dy+kHSaEDCxRFzqwV1MLqdWiyY64JY6/lOMowNwuOJgtbnx6MHRh41RMk0OGFJ0+HlldlWgxfgqo6cze2PCXyIV1JTPP1j1hI9dsbfEcXGvdombLlDEg7SRf0K3EXayZGU9Mo54861C4O2VXpFgc54a0PKmiTM0buvzNz1jjgtHDtNX7WSvsqa1QTO12whCOsnD/rGBwhEZ68epq4Yg3iQkVkpKWJPD/1fYNWPIKVePwFmUPm26hWkQwpTf0LASvDY8ggLyf1oTyx8O55FPSGcCuBLvVSAQJVeD+YeyDxg1d/ZQMNxG5Rfb4HHj+hdeD88xLyL0LA8Nu4jIrB81rAKTgVtcCw98Fmjmbenlna8/SoyN7otVIir1mHXZQ0jAqAtO28mo+mKhKjIzgAAPTMB78Gp1iyaNWbmewTC+B85F9dYGO03eekAntaUVMjlxmO4SzsOzdmt2US/B9QspfJu9H81RN9wCmB5Srg7F63BU28GV0hP1N72Vz7kGfzDQaJoZHrUMrv5TmdILTobKQ5fyf/DOIt7Ac+C/5/+blPHxb58I7i3GbuSUPmLILvEr9TLkUQlv/+z3WwIP8BmgxV8RCw1JkYYleGpgOjVk3Q5B1mCWZL1dgbfF6ZcHw/ZCIycL6tPHF4bqgYk1ROXXPIl/6ktawwiQKL8YB/L7EmFLk/xMZaQgZQhfLQAep8SzzwZe4468pm/GkFj6dAfTJIDSfR/2nc6QvlLLUGfU3czONW1wn7zEFTX5XwJ/GC0pHh09QVPkyA3Koo/bOj7uI5Sn248139LYGEca0/zjupQrBTYerK7/IDyEcO7B0F4nyQUWv+rbZqxJEi5rP26JKP26iQYFn47PnJGDVH7xvGKTN2TjKXpsGVlaX5U8ETcbSQhxB6/2FBX8mIuczkKNf2iV3vA3C2YN24z1rSC6+LsTbz5k6lRSbIB1B+ipR7QtG7RdXP2H9V5+PCuT8EANxyFtREUc7Rkt4tPoCXZt3byiSwd44L/n0wtlbsOlbeDgKlOIxtzyOph5/ct+eYB8KfltTAsA5nAyGB5gos7fZNYdHIJexxn3EFpb7NndfePehLGLDMXKvCqNU6NJHDsC4727VyBEVX8ycxX0YGnSkAMPtIFUD16nsxloDkCul8fDVYrZygCDjTu11vAu/KlJ1wC/GEuUOlk8mFv0KbijIov7VdAa0NhOPf6gFy5oGYLBVwgKlg6Ng6tD7unYU/MBrD6Ze4PVrb35KsgYiNcmS+5KirKYe35/Yt4lopJY9nVmJlPY+g3a0SGEyuXe+knOTSPfkMuE7rGxFm1+ \ No newline at end of file diff --git a/lib/全能影视.js b/lib/全能影视.js new file mode 100644 index 0000000..268b3f7 --- /dev/null +++ b/lib/全能影视.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICflhajog73lvbHop4YnLAogIGhvc3Q6ICdodHRwczovL3d3dy5xbmtrOC5jb20vJywKICB1cmw6ICcvbWxpc3QvZnljbGFzc19meXBhZ2UuaHRtbFsvbWxpc3QvZnljbGFzcy5odG1sXScsCiAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9zby5xbmtrOC5jb20vP3BhZ2U9ZnlwYWdlJnNlYXJjaHR5cGU9dm9kc2VhcmNoJmtleXdvcmQ9KiomaWRzPSZwaW55aW49JnN0YXJyaW5nPSZkaXJlY3RlZD0mYXJlYT0mbGFuZ3VhZ2U9JnllYXI9JmxldHRlcj0mdHlwZT0mb3JkZXI9JmJ5PScsCiAgY2xhc3NfcGFyc2U6ICcubmF2IHVsJiZsaTthJiZUZXh0O2EmJmhyZWY7LiovKFxcZCspLmh0bWwnLAogIHNlYXJjaGFibGU6IDIsCiAgcXVpY2tTZWFyY2g6IDAsCiAgZmlsdGVyYWJsZTogMCwKICBoZWFkZXJzOiB7CiAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScsCiAgfSwKICBwbGF5X3BhcnNlOiB0cnVlLAogIGxhenk6ICJqczpcbiAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcbiAgbGV0IGhjb25mID0gaHRtbC5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdO1xuICBsZXQganNvbiA9IEpTT041LnBhcnNlKGhjb25mKTtcbiAgbGV0IHVybCA9IGpzb24udXJsO1xuICBpZiAoanNvbi5lbmNyeXB0ID09ICcxJykge1xuICAgIHVybCA9IHVuZXNjYXBlKHVybCk7XG4gIH0gZWxzZSBpZiAoanNvbi5lbmNyeXB0ID09ICcyJykge1xuICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKTtcbiAgfVxuICBpZiAoL1xcLihtM3U4fG1wNHxtNGF8bXAzKS8udGVzdCh1cmwpKSB7XG4gICAgaW5wdXQgPSB7XG4gICAgICBwYXJzZTogMCxcbiAgICAgIGp4OiAwLFxuICAgICAgdXJsOiB1cmwsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpbnB1dDtcbiAgfSIsCiAgbGltaXQ6IDYsCiAgZG91YmxlOiB0cnVlLAogIOaOqOiNkDogJy5waWMmJmxpO2xpOyBhJiZUZXh0O2ltZyYmc3JjOyNpbWdfYnV0JiZUZXh0O2EmJmhyZWY7JywKICDkuIDnuqc6ICcubGl0JiZkbDsuaDQmJlRleHQ7aW1nJiZzcmM7ZGQ6ZXEoMykmJlRleHQ7YSYmaHJlZjsnLAogIOS6jOe6pzogewogICAgdGl0bGU6ICcuaDQmJlRleHQ7LmludHJvIGxpOmVxKDEpJiZUZXh0JywKICAgIGltZzogJ2ltZyYmc3JjJywKICAgIGRlc2M6ICcuaW50cm8gbGk6ZXEoNikmJlRleHQ7LmludHJvIGxpOmVxKDMpJiZUZXh0Oy5pbnRybyBsaTplcSgyKSYmVGV4dDsuaW50cm8gbGk6ZXEoNCkmJlRleHQ7JywKICAgIGNvbnRlbnQ6ICcuY29udCYmVGV4dCcsCiAgICB0YWJzOiAnLnRvbmd5aSYmaDQnLAogICAgbGlzdHM6ICcjbWhsaXN0JiZ1bDplcSgjaWQpIGxpJywKICB9LAogIOaQnOe0ojogJyonLAp9 \ No newline at end of file diff --git a/lib/农民影视[优].js b/lib/农民影视[优].js new file mode 100644 index 0000000..f204c39 --- /dev/null +++ b/lib/农民影视[优].js @@ -0,0 +1 @@ +H4sIAEqSbWYC/31Xe2/b1hX/e/kUmjroEVmiRIp62PAKPSxLlkTJsh60isKhyEuREl8iLymRroF0j6zp0i7pMqDduq0buiZA0aYBUjRI0va7DJXkfItdUoojp8EoQb73nN8597x8zyGG+eZ/ujN//Nvn//rWJ0CoGdsYNp1OY4rMWVyMVWXsisXoPt2UgG/Xd3rFhx4oQgls+4LzG58uvrkz//7h+b0bb/307OO3g1srPjM40YHCyAh0Gnz+9OPzrz8PIvzyyY/n3z34753Pglu+4OKjrxZ3f/g5+ekj9L1MPtvyYZigGnA7+IqJnGfi+lgP4Qu+3osNzIGx7bum6aICQ+XGUTu8IwGIfJelXR1MTGCsyFunAmA4oBvbp/6OAfRobggU6N+uN/KV2t5JJ3d2Ft658gtX1tBZFJuRocU0jhdCrqot/0Dl7ECA2QaTUCIcCAg64P3hd975/6g2mEG/q1bkQ79EamMGZHRo9EQohDzHguHwKaLvXngZjKDt2c7KHf/i/T/P3/vmp8dPUTq3/S4rvOM6s4tW11YRMHUJBQmzVC4qiQaMilyUt3lRgkCPuTYF3WD7LvHxqDaMJqKqjsIRjQ7sKBRlEGUlxjCi8agNGD2Kx3EiimIBXQSjAyYalRhlGPVUeueujmAGbuUktjBs8fGD+e0v5rcfLO/en793Y/nw6fKrvz2/fnNrA32yMvb0lJdiLANBhTs7c23hbY0Zgg2DPMTA9qm6z+8a50e4S/Z5AHeFGGszPdJqjYiezR7JXbko1/zgpjXIknLSqORePBG8T8ST7cOWXSLwnmX2R304otqEkVfqpVlnUDho1Q/34pXj1l7tcAgL8mRcOnIiYp/piaVKoTKoVPi+Ykp6qtRLq2kyVTiog1K1rvBZhWtwSi+rGlKk1+hkU6rDK1bNKvV6WGffxuqlfYzNjpmMzdayxyOHyI6xQta2ZlhVmKbx8iypmm22NTWhNZESYqGRjyjUyG7NNK6T1Xm+ehSX24eJBhQiHXlf7g0I6yDSLWl7anYvTifp8gEu1gdMRamlmuVuu0USVZ61akdMqSaokV6cqJYaJb4DpCOrFR/bmlHDpwbNTfZGTZagRLFMJnrHVaE/7cn72XI72cQUkuk1pZqRxma1PbldAUQKn1mtURofH037aaKrphsjsqbPjEbWGDW6BkVocZkulgdU0bHUsbEHDqvxVoIG7ZogGVy2uM+x0tDE1bRentahk5Jgn4A0zeFqitgHTLNdbA/agKDGk24qPsVzaa2lNhgaRAw1wx3kKBxmUulehDWJ8SQeV+UmJRE9RxlIrQkgspMETYyHNCSaqVGPVFSaY8SUrpWnDcdiLbHDi1mJIsVGM9/s1/rHcrXK282SkI20nSZG7vGNkjI2HbES6URYLeuI3Zld03I1W6YBOao1zU7JbFB8hQJs1QSVjOA4ZdDqk5LSnB6ZTDd5QNermT1d7oJC16lauWp2SA9LYDqYFqzKAZlHm8xUnxbM424y72JzulwCua5TuMDmuqm+kwKZ0iyjUZkhRc4mJClNhS7pKOMGm3TsWpPVyLxiltlWhHRqWqnmDLs2OaKHFDvTp/vmcSJZdJXndRzpS6SLVo7JCMqYAjnC2UebTWw3SdH1VGZfx/ug2E1TVn6SkZVxAhRph0EbEtLDBGvrU8bsb2Lz3XTJyk0yojLugjztejshJXrYdbFVV2+JrjOZgo4fXGAzHS7CUzYzY+ujnhLn8jLEmkVbxKV9jNOGRr1Yb/HZTsQ6rgwZPXsgj4x2PUslM2YcCnVT4zt2s0kOJ0UzmaLMGtlNt/LxOtNMyunDUSVutDr1biTj5OhcmmGOe44YSYwqBZAsGCyXbh+X22p9QiacutkXnDrgRMfosaIzplmbxJ3u1Di003K6PuiPBujH4RsDzeEaNTjjrCaGxwlclCMMW9QErUVnsT3VEoyZVeIJrGZiYL8t66w0kPS61pcG9Uk/QTcmk1S/yytVq92ygdmMz0yZQj8KFScthSLZShrvY9Mu1aYOBV1Mostpd/fS3XXCAX573b7dJ4E2qxsV3WoJt8PimxTcpRCbFMKlJDcpSU8qdUksFTzzjjhbnW2gC5cVOquOIyocmMWQz2/Ku253WTEDU2736tXgJn7VI/BXe8Tv788fXl/c/nT56N/rXr7uz75TDFt+f2f55SfLv/7u/MF3i4e/mX/+aGv+9a3FXx4t7j5Y3Hp3cfP64tObiL01f/x4/vgLk5l/dItV1bEIjIuYBF+2eXf+uGj0a+O8KcTndZUTjdENdwJ6A6qawlg+SdyWYCgZ3mFWPdz963b8ndhVLBS7+mZ43Vo9RSsVq/EouLz7LRqgAuc//mP59Kv5zXuB5dNn5zefBObv3188+zKw/KdLDKJYPP/7J4vr76465fz2B8t73yz++Gzx4X82VK66ZSKAB4hAMoCS8YrY4rM/nD+4sSGmSYz9wheom2Bln8Q49rbvVyMjBtUjiAaLYSgU9u3+eqN83KlHVER4MjLQ5HOtMRgBFsZQjYkKaOqqBnSIIhtCoRGHDFT1Ld8pOgvyqi6jdA0BmtNWKoNiU1AVEHSHqWs7F/pFRTPhxbz54llbmti6RPW89gQu00fumAd1+1RSUYGKqhJzM4KUcipryijJMTTs6fYRkJDtqp6TpJBf5HWUFn/4rcTbMTQy7ZwhSVYIAV0P+07PXi8Y8sck5LY/HGMlkR2Hwte2fm71CSoKnUHZCXhhM1hd1OBu0BfxAYVVOdBpVQqqrKFQoDFuwBggldzzGKF1mMPhl1rX/2NriiTKIopnarVbfHj//IPb6KDYUFIHjNQU2Roa49wKFRgjJMpDr0i9EX7nqvtZV+VPj68vn9x7neBOzGiLcF3YSEEg4IYmZuRVCFU5GgXy5aJ/ofDJLU/hyxz6vVP92z5/zFutxWLQ1kB0g+J/6aofnecJeAOfwAUCLwzYBHHAYD2UuzgRIZDdgZoIvzjgEjkZjkYNjVHWzFe4icvcy0z8EnPTAlZVoPd64BkBGVGKIpJP+zkSvRwZHkzgNsnurL2iK6bsBt497w2RC6ME+Dfv1NUN6ObJdHPUnkFUd+je5MWZm6urqwxxDGSiqzQVgbH5euEl/Ox/p5fXDfgNAAA= \ No newline at end of file diff --git a/lib/农民影视gz.js b/lib/农民影视gz.js new file mode 100644 index 0000000..ff7e153 --- /dev/null +++ b/lib/农民影视gz.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WGnOawkeW9seinhicsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cud3dnei5jbi8nLAogICAgLyoKICAgIGhvc3RKczpgcHJpbnQoSE9TVCk7bGV0IGh0bWw9cmVxdWVzdChIT1NULHtoZWFkZXJzOnsiVXNlci1BZ2VudCI6TU9CSUxFX1VBfX0pOwogICAgbGV0IHNyYyA9IGpzcC5wZGZoKGh0bWwsImJvZHkmJmE6ZXEoMSkmJmhyZWYiKXx8anNwLnBkZmgoaHRtbCwiYm9keSYmYTplcSgxKSYmVGV4dCIpOwogICAgaWYoIXNyYy5zdGFydHNXaXRoKCdodHRwJykpe3NyYz0naHR0cHM6Ly8nK3NyY307cHJpbnQoIuaKk+WIsOS4u+mhtToiK3NyYyk7SE9TVD1zcmNgLAogICAgKi8KICAgIHVybDogJy92b2QtbGlzdC1pZC1meWZpbHRlci5odG1sJywKICAgIGZpbHRlcmFibGU6IDEsLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5jYXRlSWR9fS1wZy1meXBhZ2Utb3JkZXItLWJ5LXt7ZmwuYnkgb3IgInRpbWUifX0tY2xhc3MtMC15ZWFyLXt7ZmwueWVhcn19LWxldHRlci17e2ZsLmxldHRlcn19LWFyZWEte3tmbC5hcmVhfX0tbGFuZy0nLAogICAgZmlsdGVyOiAnSDRzSUFBQUFBQUFBQSsyWjMwNFRRUnlGMzJXdnVaalp0ak5UM3NCbk1GeFViQ0pSTVFFMElZUkVMUWd0Q21xa0ZTeitpWmFXaUZJQ0liSUlmWm51bHI2Rlc3bzc1NkNKTWVGS01uZjluZE9kblc5b3NsK1dPVTk2b3pmbnZMdkZXVy9VR3kvTUZHL2M5a2E4eWNMOVlqejM5ay9DOXl2eC9LaHc3Mkh4NG91VGNSd3V0dnFsMWlDT0Irbk5qeVJ4cGRVOXJmZktTMG1UUTFPdGgrVW1HbVdiM3ZKK1ZGcEVvOUUwWDRYSEoyaU1iYUluTDZQSFZUUjUzS2ZjdkxTYUZMaG8rVzAzS0ZPRmZVZWxTdlIwa3lwc0wyd3NYZHFFalBjM05paUg1MVdZS2had1dtRzlIVDRQL241YVdQbExzNy94TEVtVEllMzYyeHZSajcya1N3WjczVm83T2o1THJ4c085c2pPVnNOM3AwbVhESGJORHp2b2tzRWVRSzBSMVhlVExobHNkOURHZGNsZ3UybzdySHdNdHo2bHRaM3RYWGQybzYzR2VhUFREVGJUZTNOa3FWNjB3MkE3cFJvT2FYZStzbzhkSkFOMnQ4NjdXK2N1M2txMDBvbVBObDNXem5ibFJxZTM5cTFYM2tnWHQzUDZqVzVub1hkYWk2cnBId096dmN2aVVmaTlsTjVpT1BCUFpMWlltS0tmeVBGaDkrVHpQLzVFZk9Gbmt1emlJK1UrY3A5emlWeHlMcEFMeW1YZTVqTFB1VUZ1T05mSU5lY0t1ZUk4aHp6SGVSWjVsblB3U3VhVjRKWE1LOEVybVZlQ1Z6S3ZBSzlnWGdGZXdid0N2SUo1QlhnRjh3cndDdVlWNEJYTUs4QXJtRmVBVnpDdkFLOWdYZ0ZlQVY2Wno2ZThGeDhwTjhnTjV4cTU1bHdoVjV6bmtPYzR6eUxQY3A1Qm51SGNSKzV6THBGTHpnVnk1alhnTmN4cndHdVkxNERYTUs4QnIyRmVBMTdEdkFhOGhua05lQTN6R3ZBYTVqWGdOY3hyd0d1WVY0TlhNNjhHcjJaZURWN052QnE4bW5rMWVEWHphdkJxNXRYZzFjeXJ3YXVaVjROWE02OEdyMlplQlY3RnZBcThpbmtWZUJYekt2QXE1bFhnVmN5cndLdVlWNEZYTWE4Q3IySmVCVjdGdkFxODhVZCtmTnlheGNNalduMGRCbXQvUER5aTJsRy9kcGdzTURNUmY5VSt2WUlnYXI5Sm1qc1RNOU40OHUwdGhNdXBmVXlQUDVncUR1NDZOdUw1VjdSQjBNYVA0bTdRakkwc1JVTVYrOHpBWEE3YWFZV3ppKzFqSUNlNENzY2Q3VFlIVG9NcTUxek11Wmh6TWVkaXpzV2NpemtYY3k1MnpWd3NReTdtN01iWmpiTWJaemZPYnB6ZE9MdHhkdlAvMjAzMmltK2FjRHBocFJYOS9Fb3Zoc3h2RmYzL0x1L2VHVG1yY2xibHJNcFpsYk1xWjFYT3FxNlpWZm5LdlRSeWV1UDB4dW1OMHh1bk4wNXZuTjVjSTcyWi93Vk5UTlFocmk0QUFBPT0nLAogICAgZmlsdGVyX2RlZjogewogICAgICAgIDE6IHtjYXRlSWQ6ICcxJ30sCiAgICAgICAgMjoge2NhdGVJZDogJzInfSwKICAgICAgICAzOiB7Y2F0ZUlkOiAnMyd9LAogICAgICAgIDQ6IHtjYXRlSWQ6ICc0J30sCiAgICAgICAgMjY6IHtjYXRlSWQ6ICcyNid9CiAgICB9LAogICAgc2VhcmNoVXJsOiAnL2luZGV4LnBocD9tPXZvZC1zZWFyY2gmd2Q9KionLAogICAgc2VhcmNoYWJsZTogMiwvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHNlYXJjaE5vUGFnZTogMSwvL+aYr+WQpuWFs+mXreaQnOe0ouWIhumhtSwKICAgIGhlYWRlcnM6IHsvL+e9keermeeahOivt+axguWktCzlrozmlbTmlK/mjIHmiYDmnInnmoQs5bi45bimdWHlkoxjb29raWVzCiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICAvLyBjbGFzc19wYXJzZTogJyN0b3BuYXYgbGk6bHQoNCk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAgY2xhc3NfbmFtZTogJ+eUteW9sSbov57nu63liacm57u86Im6JuWKqOa8qybnn63liacnLC8v6Z2Z5oCB5YiG57G75ZCN56ew5ou85o6lCiAgICBjbGFzc191cmw6ICcxJjImMyY0JjI2JywvL+mdmeaAgeWIhuexu+agh+ivhuaLvOaOpQogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIHBkZmEgPSBqc3AucGRmYTsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBtYWNfdXJsID0gaHRtbC5tYXRjaCgvbWFjX3VybD0nKC4qPyknOy8pWzFdOwogICAgICAgIGxldCBtYWNfZnJvbSA9IGh0bWwubWF0Y2goL21hY19mcm9tPScoLio/KScvKVsxXTsKICAgICAgICBsb2cobWFjX2Zyb20pOwogICAgICAgIGxldCBpbmRleCA9IHBhcnNlSW50KGlucHV0Lm1hdGNoKC9udW0tKFxkKykvKVsxXSkgLSAxOwogICAgICAgIGxldCBwbGF5VXJscyA9IG1hY191cmwuc3BsaXQoJyMnKTsKICAgICAgICBsZXQgcGxheVVybCA9IHBsYXlVcmxzW2luZGV4XS5zcGxpdCgnJCcpWzFdOwogICAgICAgIGxvZyhwbGF5VXJsKTsKICAgICAgICBsZXQganhfanNfdXJsID0gJ2h0dHBzOi8vYXBpLmNubWNvbS5jb20vbm1hcGkvbm1ib2YvJyArIG1hY19mcm9tICsgJy5qcyc7CiAgICAgICAgaHRtbCA9IHJlcXVlc3QoanhfanNfdXJsKTsKICAgICAgICBsZXQganhfcGhwX3VybCA9IGh0bWwubWF0Y2goL3NyYz0iKC4qPyknLylbMV07CiAgICAgICAgaWYgKG1hY19mcm9tLmluY2x1ZGVzKCdtM3U4JykpIHsKICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QoanhfcGhwX3VybCArIHBsYXlVcmwpOwogICAgICAgICAgICBsZXQgcmVhbFVybCA9IGh0bWwubWF0Y2goL3VybD0nKC4qPyknLylbMV07CiAgICAgICAgICAgIGlmIChyZWFsVXJsKSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IHtwYXJzZTogMCwgdXJsOiByZWFsVXJsfTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KGp4X3BocF91cmwgKyBwbGF5VXJsLCB7aGVhZGVyczogeydSZWZlcmVyJzogJ2h0dHBzOi8vbm12b2QuY25tY29tLmNvbS8nfX0pOwogICAgICAgICAgICBsZXQgbGluZTEgPSBodG1sLm1hdGNoKC9jYXNlXHMrJ+e6v+i3r+KRoCc6XHMqc3JjXHMqPVxzKicoLio/KScvKVsxXTsKICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QobGluZTEgKyBwbGF5VXJsLCB7aGVhZGVyczogeydSZWZlcmVyJzoganhfcGhwX3VybCArIHBsYXlVcmx9fSk7CiAgICAgICAgICAgIGxldCByZWFsVXJsID0gaHRtbC5tYXRjaCgvdXJsLio/JyguKj8pJy8pWzFdOwogICAgICAgICAgICBpZiAocmVhbFVybCkgewogICAgICAgICAgICAgICAgaW5wdXQgPSB7cGFyc2U6IDAsIHVybDogcmVhbFVybH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnLmdsb2JhbFBpY0xpc3QgLnJlc2l6ZV9saXN0Oyo7aW1nJiZkYXRhLXNyYzsqOyonLAogICAg5LiA57qnOiAnLmdsb2JhbFBpY0xpc3QgbGk7LnNUaXQmJlRleHQ7aW1nJiZzcmM7LnNCb3R0b20tLWVtJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgInRpdGxlIjogIi50aXRsZSYmVGV4dDsudHlwZS10aXRsZSYmVGV4dCIsCiAgICAgICAgImltZyI6ICIucGFnZS1oZCYmaW1nJiZzcmMiLAogICAgICAgICJkZXNjIjogIi5kZXNjX2l0ZW06ZXEoMykmJlRleHQ7LmRlc2NfaXRlbTplcSg0KS0tc3BhbiYmVGV4dDs7LmRlc2NfaXRlbTplcSgxKS0tc3BhbiYmVGV4dDsuZGVzY19pdGVtOmVxKDIpLS1zcGFuJiZUZXh0IiwKICAgICAgICAiY29udGVudCI6ICIuZGV0YWlsLWNvbiBwJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIuaGQgbGkiLAogICAgICAgICJsaXN0cyI6ICIubnVtTGlzdDplcSgjaWQpIGxpIgogICAgfSwKICAgIOaQnOe0ojogJy51bFBpY1R4dC5jbGVhcmZpeCBsaTsqO2ltZyYmZGF0YS1zcmM7LnNEZXM6ZXEoMSkmJlRleHQ7KicsCiAgICDmkJzntKLpqozor4HmoIfor4Y6ICfns7vnu5/lronlhajpqozor4EnLAp9Cg== \ No newline at end of file diff --git a/lib/冠建影视.js b/lib/冠建影视.js new file mode 100644 index 0000000..1ef8184 --- /dev/null +++ b/lib/冠建影视.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/3VQu07DMBTd8xWe2qTUNqyJ+AYW2CpVN7ETB9lxZDtJK8TaiV9AgqmsrEGInyGFz8AJkZi4w32ec3R0r9JbnjkC1pZFFaomhYqoXW00+ewfvvrjGt0FyIeDdOv4zsVoycoWY6tAysXi2q+W6+A+SoIWDDKN5Ohyppxenk+PH54w6XnUpFM6yf1uODwNb/3w/vp9PMwnoe0oL5yrbUxp13WkhopB0YBhJNNqxjVGehhtNbNCdzTfZ9Lbx3Pk+xoK7hs6wy0Hk4mbP9I009UK4385k+K2BmNHr6SCNgWDS8eVRbKMCxdeRLH0+TxK4PcLYxWG5wkNNxt2Fo1f+QGTYVCXXQEAAA== \ No newline at end of file diff --git a/lib/刺猬影视.js b/lib/刺猬影视.js new file mode 100644 index 0000000..3eb4f7a --- /dev/null +++ b/lib/刺猬影视.js @@ -0,0 +1 @@ +H4sIAEIfMGcC/22Qv07DMBCHZ/IUntqkND5GlIhnYIGtUuXEbm3kJJbt/AN1RQx9BQamMrCwRkK8DG15DJwQpA54Ofnu9306+zq5Y6nFxBixzv2sTEiOs0bpAn9122O3m6MHD7ljSbK0rLERmlJRhaHJiJSTyY1rTefeJoi9imikS8nQ1YgcXl8Oz58OGHwuNXiElcz19k/dcfu2/3j/3j2OI16YXs+tVSYCaA1Oa2Nw097DmCi1dAEQOWUNVlxBVVAwvKhBUFi1qXTPAEXWzF36grnN5MgaRnTKb/81DKNTEGoKs9kpPriXimjTb49zUiVEh8KyzCAporX1L4JIWv8yiMnvt/SVa7aKwV8s6HnwZzvzNj9JKAuRdQEAAA== \ No newline at end of file diff --git a/lib/剧哥哥.js b/lib/剧哥哥.js new file mode 100644 index 0000000..3801c35 --- /dev/null +++ b/lib/剧哥哥.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn5Ymn5ZOl5ZOlJywvL2h0dHBzOi8vanVnZWdlLmNvbS8KICAgIGhvc3Q6ICdodHRwczovL3d3dy5qdWdlZ2UudG9wJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyBsaTpndCgwKTpsdCg4KTthJiZUZXh0O2EmJmhyZWY7LyhcXGQrKS5odG1sJywKICAgIHVybDogJy92b2R0eXBlL2Z5Y2xhc3MuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICcvcnNzL2luZGV4LnhtbD93ZD0qKicsCiAgICDmkJzntKI6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQgaXRlbXMgPSBwZGZhKGh0bWwsICdyc3MmJml0ZW0nKTsKICAgICAgICAvLyBsb2coaXRlbXMpOwogICAgICAgIGxldCBkID0gW107CiAgICAgICAgaXRlbXMuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgIGl0ID0gaXQucmVwbGFjZSgvdGl0bGV8bGlua3xhdXRob3J8cHViZGF0ZXxkZXNjcmlwdGlvbi9nLCAncCcpOwogICAgICAgICAgICBsZXQgdXJsID0gcGRmaChpdCwgJ3A6ZXEoMSkmJlRleHQnKTsKICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0LCAncCYmVGV4dCcpLAogICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGl0LCAncDplcSgzKSYmVGV4dCcpLAogICAgICAgICAgICAgICAgY29udGVudDogcGRmaChpdCwgJ3A6ZXEoMikmJlRleHQnKSwKICAgICAgICAgICAgICAgIHBpY191cmw6ICIiLAogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICB9KSwKfQ== \ No newline at end of file diff --git a/lib/剧巴巴.js b/lib/剧巴巴.js new file mode 100644 index 0000000..dd73738 --- /dev/null +++ b/lib/剧巴巴.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflvbHop4YnLAogICAgdGl0bGU6ICfliaflt7Tlt7QnLAogICAgaG9zdDogJ2h0dHBzOi8vd3d3Lmp1YmFiYS52aXAnLAogICAgaG9zdEpzOiAnbGV0IGh0bWw9cmVxdWVzdChIT1NULHtoZWFkZXJzOnsiVXNlci1BZ2VudCI6TU9CSUxFX1VBfX0pOyBsZXQgc3JjPSBqc3AucGRmaChodG1sLCIuY29udGVudC10b3AmJmE6ZXEoMCkmJmhyZWYiKTtIT1NUPXNyYycsCiAgICBoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJ30sCiAgICDnvJbnoIE6ICd1dGYtOCcsCiAgICB0aW1lb3V0OiA1MDAwLAogICAgaG9tZVVybDogJy8nLAogICAgdXJsOiAnL3ZvZHNob3cvZnljbGFzcy1meWZpbHRlci5odG1sJywKICAgIGZpbHRlcl91cmw6ICd7e2ZsLmFyZWF9fS17e2ZsLmJ5fX0te3tmbC5jbGFzc319LXt7ZmwubGFuZ319LXt7ZmwubGV0dGVyfX0tLS1meXBhZ2UtLS17e2ZsLnllYXJ9fScsCiAgICBkZXRhaWxVcmw6ICcnLAogICAgc2VhcmNoVXJsOiAnL3ZvZHNlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hhYmxlOiAxLAogICAgcXVpY2tTZWFyY2g6IDEsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgY2xhc3NfbmFtZTogJ+eUteW9sSbliafpm4Ym57u86Im6JuWKqOa8qycsCiAgICBjbGFzc191cmw6ICcxJjImMyY0JywKICAgIGZpbHRlcl9kZWY6IHt9LAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IHBjbGljayA9ICdkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGxheWxlZnQgaWZyYW1lIikuY29udGVudFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjc3RhcnQiKS5jbGljaygpJzsKICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgcGFyc2U6IDEsCiAgICAgICAgICAgIHVybDogaW5wdXQsCiAgICAgICAgICAgIGpzOiBwY2xpY2ssCiAgICAgICAgICAgIGNsaWNrOiBwY2xpY2sKICAgICAgICB9CiAgICB9KSwKICAgIGxpbWl0OiA5LAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAogICAg5LiA57qnOiAnLmxhenlsb2FkOy5sYXp5bG9hZCYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy50ZXh0LXJpZ2h0JiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICdoMSYmc3BhbjplcSgwKSYmVGV4dDsuZGF0YS0tc3BhbjplcSgwKSYmVGV4dCcsCiAgICAgICAgaW1nOiAnaW1nLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJywKICAgICAgICBkZXNjOiAnLnYtdGh1bWImJnNwYW4mJlRleHQ7LmRhdGE6ZXEoMCkmJmE6ZXEoLTEpJiZUZXh0Oy5kYXRhOmVxKDApJiZhOmVxKC0yKSYmVGV4dDsuZGF0YS0tc3BhbjplcSgxKSYmVGV4dDsuZGF0YS0tc3BhbjplcSgyKSYmVGV4dCcsCiAgICAgICAgY29udGVudDogJ21ldGFbbmFtZV49ZGVzY3JpcHRpb25dJiZjb250ZW50JywKICAgICAgICB0YWJzOiAnLm5hdi10YWJzJiZhJywKICAgICAgICB0YWJfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RzOiAnLmV3YXZlLWNvbnRlbnRfX3BsYXlsaXN0OmVxKCNpZCkmJmEnLAogICAgICAgIGxpc3RfdGV4dDogJ2JvZHkmJlRleHQnLAogICAgICAgIGxpc3RfdXJsOiAnYSYmaHJlZicsCiAgICB9LAogICAg5pCc57SiOiAnKicsCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJaVzA4YlJ4VEgzL2tZZnFiU0duSnIzbksvMysrSjh1QkdWaHMxcFZLZ2xSQkNBb3lKSVlrTmlPQlFHd2dOdDFBTWhxUVVUSTIvakdmWC9oWWRlODc1bjNGYlZsYWJWa3E3Yi92N241M1pPV2QyZHY2YTdXa0poVU5ISDdUMGhMNk9kb2VPaGg0OWlYUjJobHBESFpGdm9oclY4SkliaTJ2K1B2TGtPeTA4NkFsMTFPVDRjalcyWEpNMWhIcGJTWjNNNnZ0SkplQ1lsOWlnamdRNDV2YVB1bjJURkNOQW55UEw1V0tXK3pTQVBwZkcxTTR1OTJrQTdUQndBVHd2OGJwY0dPYm5HZUJZSmJlb1hxeFFqQURQRzFuM2lod2pzTWJwVGV6S09HdUEyTUl6R1NjQnhwSmJMTys5NGJFWVFMdWg4ZXJVTzI1bkFPMW1WdlRJdVowQnhBWld2Y2t4amhsQUxEYmlEdnpBTVFQSWJ6ZWw0dHVjbndHT1ZhZkgzZGNMRkNOQW41UFBLc01GN3RNQWN0aGI4eVorVnNVTlRnT01PMUx6bGJlWUtRT0lKWWRVYXBOakJqQlRwVkZkWjU0cEExSzVyRHM5aHNyVkFiSEJrdmNUWjBLQUNoVEh2TjFzdzRBYnBONkh2YTFZS3BHbjBZaTFVcko1OWFMUTdFcVpYNnBPRGZFWURLRFNpMVB1OWpwWDJvRFVLdS91N0tGV2RjRFk5NUlxVStSUkc4QU12WDhsTVFMVThmbUd4QWpRTHIzZ1psZTVuUUdNYy9hZHRDT1FXZjlGWWdReWxydzlsbnhEdTVkNVZWamtkZ2JRYmpDbEs2VVN2Q0NFa2NsQ3lVdmx2T0VwVGdZc3EvU04rN3lrbTJHaE11T08rRlo1bDc5RkJBMnovaVRTOGFYTWVtVTlWMW51YTNiV00wVjlQL2R0d0pvRmlSRmdaamZuSlVhQVdVZ1gxY3UwaElXdGViTENCcXo1bFJpQjljNVlNUVBXL0ZxWkdMQXFxTlppVXNFYU5GU3dPeHA1S2hWMDAxdlY5SWNtSzlqbXRCMGdyWDVwNmUyaXQ5dDZtK2h0dGg0V1BXenJqdWlPcFljL2g2NHZMZjJJNkVkcy9iRG9oMjM5a09pSGJQMmc2QWR0WGZJTjIvbUdKZCt3blc5WThnM2IrWVlsMzdDZGIxankxWmVOYjNxMHF5dHF6WlRLcGQzMWwwM08xREVTamtFNVRzcHhLQ2RJT1FIbEpDa25vWndpNVJTVTA2U2NobktHbEROUXpwSnlGc281VXM1Qk9VL0tlU2dYU0xrQTVTSXBGNkZjSXVVU2xNdWtYSVp5aFpRclVLNlNjaFhLTlZLdVFibE95blVvTjBpNUFlVW1LVGVoM0NMbEZwVGJwTnlHY29lVU8xRHVrbklYeWoxUzdrRzVUOHA5S001bnZBaHFWdzN2eWhmZDFvcE9qcXRDNmcvdmlTeDBEVjJQOWEzY2I3bFFjUE1URlBucWNWZW5mQlhYQjFXQzk4bk9SOTgramRZZTIvS3d0U1hVOXRGY3E0Ly84SE9LeGdTcC9pMFZTelg0SXBLYWNjVnFiVXNWOEIwMTBLVGIzTmNWKzdsTlAxZnM1N1g4bkdGNVowNjhGb0c0emJnN3hWNkdBTTk3TlNRT2xzRHlZVkl6Z3FaMzZML2p5NGJpK243NHhqbzA0M2YrcW1mejgxZitmbTUvRCtYcjV5YnoydktvNlRtWWRlYkEvL3plL3dRKzVoUDJNZEFkeWRleDgzVWtYOGZPMTVGOEhUdGZSL0oxN0h3ZHlkZXg4M1VrWDMwWitLckFWMzBpdnFyOVkvbXFhdCt3dDlUSDMxMER0aThZbkxWOGdRYU1iYTFVeVNkNEp6Q0FkdU01ZDRUUGJnamtXeDUzdDltakVNZ2U4TDY4TTRvOW9BN1dQbHQ5eTJNaFFLeXdvdFptT0dZQXo4dHNXcWRlQnRCdVl0YjlnSk5KQTJpM3ZlMG1VdVhDdUp4ZU5VaW93NGNmdGRQaU9oaEFIeHNEbGY0WDNOckF2K0dCdEsvUkRnYWpyb08xbCtyZFZmYlNHaUMydXFRcnl6RURnYXNJWEVYZ0tnSlhFYmlLLzRHck9QQ3hYSVdmYy9EN0grakZjcFU1ZGlNRTZETzU3STN5dUFrUUc1M3hWdkV2ellEc2xQdi9uNnVNVGxlU2ZISkVnRDdmektrTTlnY0Q2TlBuWk1mTkZxeC9mZ2J3UEorL1lYNm5XQ3F2eThUelRHREhGdDViTVEybzUveGUrVmYrajBpQWRzbFpsY2h3T3dQeTlteXFIRHN4QXZTWkdYR24yRkVSU0YwMlZDbU51dFRCMmxQL3VST2hUTEZjd09tZEFXdWYzL2YweHRjcC9aa2JhamFYd0NrRlRpbHdTb0ZUQ3B6U2Y5QXB0ZlQrQmdXbDBrQ1FKUUFBJwp9 \ No newline at end of file diff --git a/lib/剧迷.js b/lib/剧迷.js new file mode 100644 index 0000000..db52a24 --- /dev/null +++ b/lib/剧迷.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn5Ymn6L+3JywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5qYWdjeXMuY29tLycsCiAgICB1cmw6ICcvdm9kc2hvdy9meWNsYXNzL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnL3ZvZHNlYXJjaCoqL3BhZ2UvZnlwYWdlLmh0bWwnLAogICAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zJiZsaTpndCgxKTpsdCg4KTthJiZUZXh0O2EmJmhyZWY7L3ZvZHR5cGUvKC4qPylcLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAn5LuK5pel5pu05pawfOeDreamnCcsCn0= \ No newline at end of file diff --git a/lib/剧集TV.js b/lib/剧集TV.js new file mode 100644 index 0000000..c755e80 --- /dev/null +++ b/lib/剧集TV.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/61TwW7UMBC98xWRkNJN1CSllB6yQog/qEThuprNOhsXx0ntydIFKnFCQirVag9waC9wYHup1EocoPxOybZ/ge24KN3ugQO+JH7z3szzjD0C4YiKEeex8+aeoxZSZCR2Vn5/mF0fvd9+sbJq4KyQqNAMsZRxFI1CulPtUByFSWIZlWCKEMmseBWl44SBlIFd6biEIVE/YYY5s3xJQCTZc6Nq/iPfD4J/0EBfO1xvoN2KJi+fGTx21hospQyJaGgWMn56JQipDxdyGAV9EEFOeOUw2gXX3SZ7qL+ZIGk39KNO6D/x2sUTQNIjewmrBqZBJ+eXPyf1p7Prz7/e1ofTqy8H9bdjyy0ZjG+qoahIgzJ4PVZKy2E0p6qnm82uPjy5+jhRUd+GL3+8m1/MtNk8YFRiQDknwpo1U+rSfOi6A0AICkGHlAPrhphVeX/hNGWzv0l8cWASN/Nuzzx7YIUh5SgK1y1jsttZ827J9VKFtTHd+wUDLdKAyESz2rk2vWUV1peiD5eij5aiG3c9JgVHwtE4QJIH2o7qYVrcYSL0pb0Urgu3A62BP93ams+m9fS0xdCDMVr9GsyYtJv7dKD8QMwL7MTaB1AuO3/1nreQode8HTsuG9y392JyPP/+9T9fg/0/B+TGrPcDAAA= \ No newline at end of file diff --git a/lib/动漫巴士[漫].js b/lib/动漫巴士[漫].js new file mode 100644 index 0000000..36e7a01 --- /dev/null +++ b/lib/动漫巴士[漫].js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICBhdXRob3I6ICflsI/lj6/kuZAvMjQwNTI2L+esrOS4gOeJiCcsCiAgICB0aXRsZTogJ+WKqOa8q+W3tOWjq1vmvKtdJywKICAgIGhvc3Q6ICdodHRwOi8vZG04NC5zaXRlJywKICAgIGhvc3RKczogJ3ByaW50KEhPU1QpO2xldCBodG1sPXJlcXVlc3QoSE9TVCx7aGVhZGVyczp7IlVzZXItQWdlbnQiOk1PQklMRV9VQX19KTtsZXQgc3JjPSBqc3AucGRmaChodG1sLCJ1bCYmYTplcSgwKSYmaHJlZiIpO3ByaW50KHNyYyk7SE9TVD1zcmMnLAogICAgaGVhZGVyczogeydVc2VyLUFnZW50JzogJ01PQklMRV9VQSd9LAogICAg57yW56CBOiAndXRmLTgnLAogICAgdGltZW91dDogNTAwMCwKCiAgICBob21lVXJsOiAnLycsCiAgICB1cmw6ICcvc2hvdy1meWNsYXNzLS1meWZpbHRlci1meXBhZ2UuaHRtbCcsCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5ieX19LXt7ZmwuY2xhc3N9fS0te3tmbC55ZWFyfX0nLAogICAgZGV0YWlsVXJsOiAnJywKICAgIHNlYXJjaFVybDogJy9zLSoqLS0tLS0tLS0tZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoYWJsZTogMSwKICAgIHF1aWNrU2VhcmNoOiAxLAogICAgZmlsdGVyYWJsZTogMSwKCiAgICBjbGFzc19uYW1lOiAn5Zu95Lqn5Yqo5ryrJuaXpeacrOWKqOa8qybmrKfnvo7liqjmvKsm55S15b2xJywKICAgIGNsYXNzX3VybDogJzEmMiYzJjQnLAogICAgZmlsdGVyX2RlZjoge30sCgogICAgcHJveHlfcnVsZTogJycsCiAgICBzbmlmZmVyOiAwLAogICAgaXNWaWRlbzogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgcGFyc2VfdXJsOiAnJywKICAgIGxhenk6IGBqczoKbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKbGV0IGt1cmwgPSBwZGZoKGh0bWwsJ2JvZHkmJmlmcmFtZScpLm1hdGNoKC9zcmM9IiguKj8pIi8pWzFdOwppbnB1dD0ga3VybApgLAoKICAgIGxpbWl0OiA5LAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAovL+WIl+ihqDvmoIfpopg75Zu+54mHO+aPj+i/sDvpk77mjqU76K+m5oOFKOWPr+S4jeWGmSkKICAgIOS4gOe6pzogJy52X2xpc3QgbGk7YSYmdGl0bGU7YSYmZGF0YS1iZzsuZGVzYyYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewovL+WQjeensDvnsbvlnosKICAgICAgICAidGl0bGUiOiAiaDEmJlRleHQ7bWV0YVtuYW1lKj1jbGFzc10mJmNvbnRlbnQiLAovL+WbvueJhwogICAgICAgICJpbWciOiAiaW1nJiZzcmMiLAovL+S4u+imgeaPj+i/sDvlubTku7075Zyw5Yy6O+a8lOWRmDvlr7zmvJQKICAgICAgICAiZGVzYyI6ICJtZXRhW25hbWUqPXVwZGF0ZV9kYXRlXSYmY29udGVudDttZXRhW25hbWUqPXJlbGVhc2VfZGF0ZV0mJmNvbnRlbnQ7bWV0YVtuYW1lKj1hcmVhXSYmY29udGVudDttZXRhW25hbWUqPWFjdG9yXSYmY29udGVudDttZXRhW25hbWUqPWRpcmVjdG9yXSYmY29udGVudCIsCi8v566A5LuLCiAgICAgICAgImNvbnRlbnQiOiAicDplcSgtMikmJlRleHQiLAovL+e6v+i3r+aVsOe7hAogICAgICAgICJ0YWJzIjogIi50YWJfY29udHJvbCYmbGkiLAovL+e6v+i3r+agh+mimAogICAgICAgICJ0YWJfdGV4dCI6ICJib2R5JiZUZXh0IiwKLy/mkq3mlL7mlbDnu4Qg6YCJ6ZuG5YiX6KGoCiAgICAgICAgImxpc3RzIjogIi5wbGF5X2xpc3Q6ZXEoI2lkKSYmYSIsCi8v6YCJ6ZuG5qCH6aKYCiAgICAgICAgImxpc3RfdGV4dCI6ICJib2R5JiZUZXh0IiwKLy/pgInpm4bpk77mjqUKICAgICAgICAibGlzdF91cmwiOiAiYSYmaHJlZiIKICAgIH0sCiAgICDmkJzntKI6ICcqJywKCiAgICBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJXYlVzcVFSVEgzKy9IbU5lKzBMV24yMWVKWGxnSVJVK1EzVUJFc0xUYUNyWXRTbTljYjJSUTJZT1ZGVUZhOW1XY0dmMFdqYzZjTXhQRnN0RGxjZ1hmN2UvMzkrem8yWFBVbEVVaVpIVE1TcEdaZUpLTWtzblpXQ0pCUW1RK05oY1h5S3QxZXJRdGVEazIrMU9Jc1JTWkY1cXVsZHZaY2tjTElPbVFzcWNiOUxtdXJBTEltUE9MNVFzcVV3QVpkM082VGdGbUYyK3RweTNJSkdCMnZtdlVTY0R6S21mTnhqR2NKd0hyc3BWV0tRTjFFaUJyWlY1NXcxV1pBcnluZDhTdmQrR2VFdkN6YjVWWlpvVzlYUEY5N0lDcDB1UHBFRFk1R1k4dDZoNnp3bE83OEJpd3gzYllIbEN1ZTJuNHFQWlIwMGUwajVqZTF0NDJmVmo3c09FalA5Q0xTOE9QYUQ5aSttSHRoMDAvcFAyUTZRZTFIL3pZcjRtazBTMTNqOVoyUG5WTE4xSEEwclI0S2R5NVdhdXh1MzJWVEUwdkpmU3p2czFSWjEwbGljbUZ4WGpuV0dzOFpCSDdyKzNFK2w3NzhBSW1Ra0tRbmZEYkplcTU5T1lLTWdsNkRxdjByWUFUMkFVODc3aEVmMWZnUEFsQmRvSVZhK0xkUVoyRUlEdkJWcTk1SGpNSm1OM1hXYzZCVEFLK2w4TUc5U0JUZ0hVckhzdmtvVTRDWm02WmUvQThGZWk2YmU1VXNhNExtRDJVMm45TytNRWx4TWo5cmUycHJZMyt6MXZyOTJ2bFcrZTNtVDdiOStVVzllZTVsK1o1NEYvTXMvaWIwbnd0NnY4c0hmajJQT2VMZFBNYzZpUUUrZWIzbldlbnlySnJjSjZFL2p6M3pqeGI2WGVxQ1JxcWJBd0FBQT09Jwp9 \ No newline at end of file diff --git a/lib/动漫网.js b/lib/动漫网.js new file mode 100644 index 0000000..512fde5 --- /dev/null +++ b/lib/动漫网.js @@ -0,0 +1 @@ +H4sIAEqSbWYC/22QzUrDQBDH7z5FQNhoaTaiF2nwDcSTnss02TYLkw+zs61RfAHxoBcv6kEPWvDqqfjxMjbFt3DShCLiHJaZ//z+s7uT2AGk8vvpZn77sS2/ZpeL2bMkGBhnz3HrhHaEMDmkbrCW/MeiNtTAFg9sss+lEBaFQM2WMRROYVExcLbmcJAmVD3HnV9Mq7eXxfu1213q1fShuv/kRju+lePMEIsxUW56vj+ZTGSUpaME0l0Zhi1kC2TGH2cRlbnyh2WIYIw3LHMYKRlTgi1oFBRhfLTCm9rvdLxVNCZOfvuqq7vF6yObLEpDVnvsrf/d7ycq0tBTxxtbm90/zVZdby6p9+KgDkCI5QoCiXBaYgaREBEQeFmhRzoFDGSuQ4/UCa/xkM/aERdqyE85/wEcx5tsrQEAAA== \ No newline at end of file diff --git a/lib/动漫网[漫].js b/lib/动漫网[漫].js new file mode 100644 index 0000000..cab0355 --- /dev/null +++ b/lib/动漫网[漫].js @@ -0,0 +1 @@ +/wOAwadqliIW36R7qF7RNBjZlrAqLcUEaSObqFVEivjId+D1HcA0uh6L3NrcodfPH3oAnN7TagL8uliCJWTtvOCfx/b/J52pZOhQSA0ya/Cbc380YIYY5QtzxKUVpUjSrFixsTVOErgEsx2QR5G7lmvIecfXC333VaK+6Tq5YuatuPw0bp8LKqtuN3E9lEJrP2zDeIIOaNd89hhwSL+llU2EHHjNUiis0l3juZjl3tQOJ6kyrtdpr7jUsYd9iIwf/Bx/v1xk5v5nnk0bWlRdrTKyhukSR6O4tR1dhe6XEao1l8kpEVDKiTjXDEQyfqpoHOPXte8dC4bUGPL/BjKQStvn7cPevIFgEwyWiGUXrSB5dAENLZdH4vCt7bF4tCTN1FxE0TzRWMcD6wUp+Bl/tV6aX6GZNKWNoq37jnHhOQGszUEnfn1RVRndZyadCTrbzDIQJ4nuB8FSQ8fEL1AgHWkfzkoQNmZ0bGmLl4hxoJNE6Ge3CndLyb8wCq4Gaq1Uj6p+2WIyuWjzJhuJCWnrkmAgayj/AKgLXfrmkTscoRDk527n9Vlylu6Wn6/TWjQ7Etr8EsAj9EBsZNR0eYH70oF69r4RBz5q3EoAb39XDt7Pb70OQnG7w8hjMROutjETm340NGl8Ik0zTVBnuYqCk3xMFNpW407kau8NqGyoqLOJVA9z0A/3MonTgHFx28+1 \ No newline at end of file diff --git a/lib/动画片大全.js b/lib/动画片大全.js new file mode 100644 index 0000000..5dc79d4 --- /dev/null +++ b/lib/动画片大全.js @@ -0,0 +1,29 @@ +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/lib/努努影院1.js b/lib/努努影院1.js new file mode 100644 index 0000000..9bcd88a --- /dev/null +++ b/lib/努努影院1.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgdGl0bGU6ICfliqrliqrlvbHpmaInLAogIGhvc3Q6ICdodHRwOi8vd3d3LmlqaWFucGluLmNvbScsCiAgLy91cmw6ICcvdm9kc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0vJywKICB1cmw6Jy92b2RzaG93L2Z5Y2xhc3MtZnlmaWx0ZXIvJywKICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS8nLAogIHNlYXJjaGFibGU6IDIscXVpY2tTZWFyY2g6IDAsZmlsdGVyYWJsZTogMSwKICBoZWFkZXJzOiB7J1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJ30sCiAgY2xhc3NfcGFyc2U6ICcubmF2YmFyLWl0ZW1zIGxpOmd0KDApOmx0KDgpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS8nLAogIGZpbHRlcl91cmw6ICd7e2ZsLmFyZWF9fS17e2ZsLmJ5fX0te3tmbC5jbGFzc319LS0tLS1meXBhZ2UtLS17e2ZsLnllYXJ9fScsCiAgcGxheV9wYXJzZTogdHJ1ZSxsaW1pdDogNixkb3VibGU6IHRydWUsCiAgbGF6eTogImpzOlxuICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xuICBsZXQgaGNvbmYgPSBodG1sLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV07XG4gIGxldCBqc29uID0gSlNPTjUucGFyc2UoaGNvbmYpO1xuICBsZXQgdXJsID0ganNvbi51cmw7XG4gIGlmIChqc29uLmVuY3J5cHQgPT0gJzEnKSB7XG4gICAgdXJsID0gdW5lc2NhcGUodXJsKTtcbiAgfSBlbHNlIGlmIChqc29uLmVuY3J5cHQgPT0gJzInKSB7XG4gICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpO1xuICB9XG4gIGlmICgvXFwuKG0zdTh8bXA0fG00YXxtcDMpLy50ZXN0KHVybCkpIHtcbiAgICBpbnB1dCA9IHtcbiAgICAgIHBhcnNlOiAwLFxuICAgICAgang6IDAsXG4gICAgICB1cmw6IHVybCxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGlucHV0ID0gdXJsICYmIHVybC5zdGFydHNXaXRoKCdodHRwJykgJiYgdGVsbElzSngodXJsKSA/IHtwYXJzZTowLGp4OjEsdXJsOnVybH06aW5wdXQ7XG4gIH0iLAogIOaOqOiNkDogJy50YWItbGlzdC5hY3RpdmU7YS5tb2R1bGUtcG9zdGVyLWl0ZW0ubW9kdWxlLWl0ZW07Lm1vZHVsZS1wb3N0ZXItaXRlbS10aXRsZSYmVGV4dDsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZicsCiAg5LiA57qnOiAnYm9keSBhLm1vZHVsZS1wb3N0ZXItaXRlbS5tb2R1bGUtaXRlbTthJiZ0aXRsZTsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7Lm1vZHVsZS1pdGVtLW5vdGUmJlRleHQ7YSYmaHJlZicsCiAg5LqM57qnOiB7CiAgICB0aXRsZTogJ2gxJiZUZXh0Oy5tb2R1bGUtaW5mby10YWctbGluazplcSgtMSkmJlRleHQnLAogICAgaW1nOiAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsfHxkYXRhLXNyY3x8c3JjJywKICAgIGRlc2M6ICcubW9kdWxlLWluZm8taXRlbTplcSgtMikmJlRleHQ7Lm1vZHVsZS1pbmZvLXRhZy1saW5rJiZUZXh0Oy5tb2R1bGUtaW5mby10YWctbGluazplcSgxKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbTplcSgyKSYmVGV4dDsubW9kdWxlLWluZm8taXRlbTplcSgxKSYmVGV4dCcsCiAgICBjb250ZW50OiAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbiYmVGV4dCcsCiAgICB0YWJzOiAnLm1vZHVsZS10YWItaXRlbScsCiAgICBsaXN0czogJy5tb2R1bGUtcGxheS1saXN0OmVxKCNpZCkgYScsCiAgICB0YWJfdGV4dDogJ2Rpdi0tc21hbGwmJlRleHQnLAogIH0sCiAg5pCc57SiOiAnYm9keSAubW9kdWxlLWl0ZW07Lm1vZHVsZS1jYXJkLWl0ZW0tdGl0bGUmJlRleHQ7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0O2EmJmhyZWY7Lm1vZHVsZS1pbmZvLWl0ZW0tY29udGVudCYmVGV4dCcsCiAgZmlsdGVyOidINHNJQUFBQUFBQUFBKzJZM1c0YVJ4VEg3L3NVRWRlKzJIV2FqK1pWcWx6UUdEbWtDWkZNM01xTkxObkdFQ0F1WU9UZ1VQQlhZeHZITlRiWXJndExnWmZabVlXMzZNRE0rVUF0SzlSYWxocHhCYi96MzVrOTU4ek9PYlA3TmpBWERrYVd3cEg1d0pOdjN3YStEeTBGbmdTZXZReEdvNEdaUUNUNEtxUlFwQ295RmxmOFEvRGxZbWg0WFdSZ2pwLzBZeWNrS2xOZ2VjWm9oYklTak5VQWFGNnlUaU1NZ0NaWGMzS2xZRFFET0dmNnhHMlhZVTROT0dkbFV6UmJNS2NHSE1jOU5JRDNTMzUwblJUY1R3Tm92ZXF4MkRnMW1nRzhYL3JDYTRObWdQbnBiYlhJendHZ2R2U08vRFNBdmxTUDNjNCsrS0lCeHlYeS9lSm5HS2NCeCsyZUtzOWhuQWJVMXM2OHdpWm9HbENMcGVYYUw2QnB3UGhhV1JGdlFId2FRT3Z2NU9YSEk2TVp3RGtMNzNvcEIrYlVnREYwenIydDMwVzdEbUVnNHhYWnc5NG5YQ2tOcUdVU0luc0ptZ1pjcVc1TzVSbFdTZ05scml4M05qRnpRMEJ0dmV2OUJwRVl3QXkwTjcxV2VjVGhFZFB5MDhHVmVyOEVGMEpCdGwzS05iSGhqTnN1S0k1c2w4Tkt2NWdBUnpSZ3VvK0xzbkVCNmRaQUNhdkpaZ2NUTmdRTW9KTVJwVGE0cmdHWDZlb0RhUVl3bWUvcnBCbkFjZHRIc253RzR6U2duM3VmYVp3Qld2by9TRE5BdnRTNEw3V1JjVC9YaEhNTTR6VGd1UFdzeXBSSXdxNGd4a2lPdWw2MjZxV0tFQXd5YmRWOStiNnJodUZ1QmNZcjRqZHVDd3FTQWI3MFM2SGdBbHY2NXJYYmFvOWJlaFQ1MHM5YXMxOGIyL0F2czk4biszMXVueVg3TExmYlpMZTUzU0s3eGV6Mk4yaFhmNW45TWRrZmMvc2pzai9pOW9ka2Y4anREOGorZ05zcFhwdkhhMU84Tm8vWHBuaHRIcTlOOGRvOFhwdml0WG04RnNWcjhYZ3RpdGZpOFZvVXI4WGp0U2hlaThkclVid1dqOWVpZU5WZi92Qjh0MFNQanN6a2haUDkyNk1qdDIvNjI5ZG1namRoZFNsTTdEcU9yRzBaNVhuNFRaU2UrNHQxa1lScUVuMzJlaUUwdU92VG1hL3UzUXZNUlYvY2JxUDNLZGwrelZYM0RiRjZJMkxaa1ZhaVRmeTg0SGVXRU9jM3dxbUNwbUhDSGozMkxPSFhvLzNPRW40ZHlxK2Z1czBENmxBR3FFZkhaUkdLdndHODM0Y0U5WDBEckh0UnpneE1XdEwrZXpkTHhKV0FMWGNJazNTSmY5dnAvTHFTZnhjYzMzbDh1MkNocGhxRjJEbkFjdzd3dEd0TXU4YVgyRFYrZWgyWlh3cmZhdVBvcjZTOHlncHNkZzI4NnEzdnNhcW5BTjA4Ny9acVNkaVlHbkJjdmlyVGNKNDNRRVVpTGh0UWdRMVFVYnB5bXprc1NrTmdCYVQvQ1h3eGdKcHpLczUzUWRPQTl5dGRzamNoRFRodWEwOWU0OXVxQmh6WGFNaGsxblh5OUVZellzSThYUCtxK2dqa1FRUE9VVi9yclc3QWFBMTNWdUZWMVZiMUdWMGZBcXZVcXVaVHBSNEFhbWNWbFY3UU5FeHI1clJtL2w5cjVweXFtYStDa1ZzdG1uNkYwZThUbUJlcjlnNmcyQnJBT1RNblhnNWlNSUJhYnRjN3c4OUhHcWdHalA4azFjdnQ5REp3OGplQWMrNGZpQkljMlExTWNpeVhaWWQ5NXRLQTkvUDVBT1QzRmlKcUtrMnc1Z2E0ZG5URk5BV1l6OE9PK3lkOE9qTkFyd0Y3SWxuQzE0QWgwSk4wS2FyUWFBemduS1cwTEVLbE5VQjVxWXZ1TnVabENIZDNuQysxWFFmZnZ6Uk1jdlQreDRJK1BTQlBpLzBYV095anp4ZURrZmtmUTVFNTlmdGlrUlg5dTNWbStTK1YyYmE3MEJrQUFBPT0nCn0= \ No newline at end of file diff --git a/lib/包子漫画.js b/lib/包子漫画.js new file mode 100644 index 0000000..17a43d3 --- /dev/null +++ b/lib/包子漫画.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICfmvKvnlLsnLC8v5b2x6KeGfOWQrOS5pnzmvKvnlLt85bCP6K+0CiAgICB0aXRsZTogJ+WMheWtkOa8q+eUuycsCiAgICBob3N0OiAnaHR0cHM6Ly9nb2RhbWguY29tLycsCiAgICB1cmw6ICdmeWNsYXNzL3BhZ2UvZnlwYWdlJywKICAgIHNlYXJjaFVybDogJy9zLyoqP3BhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6ICcnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19uYW1lOiAn5YWo6YOoJywKICAgIGNsYXNzX3VybDogJy9tYW5nYScsCiAgICBjbGFzc19wYXJzZTogJy5ob21lbmF2dGF4JiZhO2EmJlRleHQ7YSYmaHJlZjsoL21hbmdhLiotLiopJywKICAgIGNhdGVfZXhjbHVkZTogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsb2coaW5wdXQpOwogICAgICAgIGxldCBfaWQgPSBpbnB1dC5zcGxpdCgnQEAnKVswXTsKICAgICAgICBsZXQgX3VybCA9IGlucHV0LnNwbGl0KCdAQCcpWzFdOwogICAgICAgIC8vbGV0IG1pZCA9IF91cmwuc3BsaXQoJy8nKS5zbGljZSgtMSlbMF0uc3BsaXQoJy0nKVswXTsKICAgICAgICBsZXQgaHRtbDEgPSByZXF1ZXN0KF91cmwsIHtoZWFkZXJzOiB7UmVmZXJlcjogJ2h0dHBzOi8vZ29kYW1oLmNvbS8nfX0pOwogICAgICAgIGxldCBtaWQgPSBwZGZoKGh0bWwxLCAnI2NoYXB0ZXJDb250ZW50JiZkYXRhLW1zJyk7CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGBodHRwczovL2FwaS1nZXQubWdzZWFyY2hlci5jb20vYXBpL2NoYXB0ZXIvZ2V0aW5mbz9tPSR7bWlkfSZjPSR7X2lkfWAsIHtoZWFkZXJzOiB7UmVmZXJlcjogJ2h0dHBzOi8vZ29kYW1oLmNvbS8nfX0pOwogICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBsZXQgcmUgPSAnQFJlZmVyZXI9aHR0cHM6Ly9nb2RhbWguY29tLyc7CiAgICAgICAgbGV0IGltZ3MgPSBqc29uLmRhdGEuaW5mby5pbWFnZXMubWFwKGl0ID0+IGl0LnVybCArIHJlKTsKICAgICAgICAvL2xvZyhpbWdzKTsKICAgICAgICBpbnB1dCA9IHt1cmw6ICdwaWNzOi8vJyArIGltZ3Muam9pbignJiYnKX07CiAgICB9KSwKICAgIGRvdWJsZTogdHJ1ZSwKICAgIOaOqOiNkDogJy5jYXJkbGlzdDsucGItMjsqOyo7KjsqJywKICAgIOS4gOe6pzogJy5jYXJkbGlzdCYmLnBiLTI7LmNhcmR0aXRsZSYmVGV4dDtpbWcmJnNyYzs7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICDph43lrprlkJE6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgICAgIGxvZygn5omn6KGM6YeN5a6a5ZCROicgKyBNWV9VUkwpOwogICAgICAgICAgICAvLyBsZXQgaHRtbCA9IHJlcXVlc3QoTVlfVVJMKTsKICAgICAgICAgICAgTVlfVVJMID0gcGQoaHRtbCwgJyNtb3JlY2hhcCYmYSYmaHJlZicsIE1ZX1VSTCk7CiAgICAgICAgICAgIGxvZygn5LqM57qn6YeN5a6a5ZCR5YiwOicgKyBNWV9VUkwpOwogICAgICAgICAgICBodG1sID0gcmVxdWVzdChNWV9VUkwpOwogICAgICAgIH0pLAogICAgICAgIHRpdGxlOiAnaDEmJlRleHQnLAogICAgICAgIGltZzogJ2ltZyYmc3JjJywKICAgICAgICBkZXNjOiAnI2xhc3RjaGFwJiZUZXh0JywKICAgICAgICBjb250ZW50OiAncC50ZXh0LW1lZGl1bSYmVGV4dCcsCiAgICAgICAgdGFiczogJ2gyLnRleHQtbWVkaXVtJywKICAgICAgICBsaXN0czogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICAgICAgLy9sb2coaW5wdXQpOwogICAgICAgICAgICBsZXQgZGF0YV9pZCA9IHBkZmgoaHRtbCwgJyNhbGxjaGFwdGVycyYmZGF0YS1taWQnKTsKICAgICAgICAgICAgLy9sb2coZGF0YV9pZCk7CiAgICAgICAgICAgIGxldCBodG1sMSA9IHJlcXVlc3QoYGh0dHBzOi8vYXBpLWdldC5tZ3NlYXJjaGVyLmNvbS9hcGkvbWFuZ2EvZ2V0P21pZD0ke2RhdGFfaWR9Jm1vZGU9YWxsYCwge2hlYWRlcnM6IHtSZWZlcmVyOiAnaHR0cHM6Ly9nb2RhbWguY29tLyd9fSk7CiAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sMSk7CiAgICAgICAgICAgIC8vbG9nKGpzb24pOwogICAgICAgICAgICBsZXQgbGlzdDEgPSBbXTsKICAgICAgICAgICAgbGV0IHVybF9wcmVmaXggPSBpbnB1dC5yZXBsYWNlKCdjaGFwdGVybGlzdCcsICdtYW5nYScpOwogICAgICAgICAgICBqc29uLmRhdGEuY2hhcHRlcnMuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgICAgICBsZXQgX3R0ID0gaXQuYXR0cmlidXRlcy50aXRsZTsKICAgICAgICAgICAgICAgIGxldCBfc2x1ZyA9IGl0LmF0dHJpYnV0ZXMuc2x1ZzsKICAgICAgICAgICAgICAgIGxldCBfaWQgPSBpdC5pZDsKICAgICAgICAgICAgICAgIGxpc3QxLnB1c2goX3R0ICsgJyQnICsgX2lkICsgJ0BAJyArIHVybF9wcmVmaXggKyAnLycgKyBfc2x1Zyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBMSVNUUyA9IFtsaXN0MV07CiAgICAgICAgfSksCiAgICAgICAgdGFiX3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3RleHQ6ICdib2R5JiZUZXh0JywKICAgICAgICBsaXN0X3VybDogJ2EmJmhyZWYnLAogICAgICAgIGxpc3RfdXJsX3ByZWZpeDogJycsCiAgICB9LAogICAg5pCc57SiOiAnKicsCn0= \ No newline at end of file diff --git a/lib/包子漫画[画].js b/lib/包子漫画[画].js new file mode 100644 index 0000000..6e0cfdb --- /dev/null +++ b/lib/包子漫画[画].js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/北川影视.js b/lib/北川影视.js new file mode 100644 index 0000000..0805c42 --- /dev/null +++ b/lib/北川影视.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/南瓜影视[优].js b/lib/南瓜影视[优].js new file mode 100644 index 0000000..76168e8 --- /dev/null +++ b/lib/南瓜影视[优].js @@ -0,0 +1 @@ +Ly8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKLy8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKLy8g5rOo5YWl5YWo5bGA5pa55rOVICjku4XmlK/mjIF0dmJveOeahGpzMeS7peWPimMj54mIZHJweeeahGpzMO+8jOaaguS4jeaUr+aMgWRycHnlrpjmlrlweeeJiOeahGpzMCkKZ2xvYmFsVGhpcy5nZXRIZWFkZXJzPSBmdW5jdGlvbihpbnB1dCl7CiAgICBsZXQgdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKCk7CglsZXQgaGVhZGVycyA9IHsKICAgICAgICAndmVyc2lvbl9uYW1lJzogJzEuMC42JywKICAgICAgICAndmVyc2lvbl9jb2RlJzogJzYnLAogICAgICAgICdwYWNrYWdlX25hbWUnOiAnY29tLmFwcC5uYW5ndWF0dicsCiAgICAgICAgJ3NpZ24nOiBtZDUoJ2M0MzFlYTU0MmNlZTk2NzkjdUJGc3pkRU0wb0wwSlJuQCcgKyB0KS50b1VwcGVyQ2FzZSgpLAogICAgICAgICdpbWVpJzogJ2M0MzFlYTU0MmNlZTk2NzknLAogICAgICAgICd0aW1lTWlsbGlzJzogdCwKICAgICAgICAnVXNlci1BZ2VudCc6ICdva2h0dHAvNC42LjAnCgl9OwoJcmV0dXJuIGhlYWRlcnMKfQoJCnZhciBydWxlID0gewoJdGl0bGU6J+WNl+eTnOW9seinhlvkvJhdJywKCWhvc3Q6J2h0dHA6Ly95cy5jaGFuZ21lbmd5dW4uY29tJywKCWhvbWVVcmw6Jy9hcGkucGhwL3Byb3ZpZGUvdm9kX3Jhbms/YXBwPXlseXMmc29ydF90eXBlPW1vbnRoJmltZWk9YzQzMWVhNTQyY2VlOTY3OSZpZD0yJnBhZ2U9MScsCiAgICB1cmw6Jy9hcGkucGhwL3Byb3ZpZGUvdm9kX2xpc3Q/YXBwPXlseXMmaWQ9ZnljbGFzc2Z5ZmlsdGVyJnBhZ2U9ZnlwYWdlJmltZWk9YzQzMWVhNTQyY2VlOTY3OScsCiAgICBkZXRhaWxVcmw6Jy9hcGkucGhwL3Byb3ZpZGUvdm9kX2RldGFpbD9hcHA9eWx5cyZpbWVpPWM0MzFlYTU0MmNlZTk2NzkmaWQ9ZnlpZCcsCiAgICBzZWFyY2hVcmw6Jy9hcGkucGhwL3Byb3ZpZGUvc2VhcmNoX3Jlc3VsdF9tb3JlP2FwcD15bHlzJnZpZGVvX25hbWU9KiomcGFnZVNpemU9MjAmdGlkPTAmaW1laT1jNDMxZWE1NDJjZWU5Njc5JnBhZ2U9ZnlwYWdlJywKCXNlYXJjaGFibGU6MiwKCXF1aWNrU2VhcmNoOjAsCglmaWx0ZXJhYmxlOjEsCglmaWx0ZXJfdXJsOicmYXJlYT17e2ZsLmFyZWF9fSZ5ZWFyPXt7ZmwueWVhcn19JnR5cGU9e3tmbC5jbGFzc319JnRvdGFsPXt7ZmwudG90YWwgb3IgIueKtuaAgSJ9fSZvcmRlcj17e2ZsLmJ5IG9yICLmlrDkuIrnur8ifX0nLAogICAgZmlsdGVyOnsKICAgICAgICAiMiI6W3sia2V5IjoiY2xhc3MiLCJuYW1lIjoi57G75Z6LIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2Ijoi57G75Z6LIn0seyJuIjoi5Zu95Lqn5YmnIiwidiI6IuWbveS6p+WJpyJ9LHsibiI6Iua4r+WPsOWJpyIsInYiOiLmuK/lj7DliacifV19LHsia2V5IjoiYXJlYSIsIm5hbWUiOiLlnLDljLoiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiLlnLDljLoifSx7Im4iOiLlhoXlnLAiLCJ2Ijoi5YaF5ZywIn0seyJuIjoi6aaZ5riv5Zyw5Yy6IiwidiI6Iummmea4r+WcsOWMuiJ9LHsibiI6IuWPsOa5vuWcsOWMuiIsInYiOiLlj7Dmub7lnLDljLoifV19LHsia2V5IjoieWVhciIsIm5hbWUiOiLlubTku70iLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiLlubTku70ifSx7Im4iOiIyMDI0IiwidiI6IjIwMjQifSx7Im4iOiIyMDIzIiwidiI6IjIwMjMifSx7Im4iOiIyMDIyIiwidiI6IjIwMjIifSx7Im4iOiIyMDIxIiwidiI6IjIwMjEifSx7Im4iOiIyMDIwIiwidiI6IjIwMjAifSx7Im4iOiIyMDE5IiwidiI6IjIwMTkifSx7Im4iOiIyMDE4IiwidiI6IjIwMTgifSx7Im4iOiIyMDE3IiwidiI6IjIwMTcifSx7Im4iOiIyMDE2IiwidiI6IjIwMTYifSx7Im4iOiIyMDE1IiwidiI6IjIwMTUifSx7Im4iOiIxMOW5tOS7oyIsInYiOiIxMOW5tOS7oyJ9LHsibiI6IjAw5bm05LujIiwidiI6IjAw5bm05LujIn0seyJuIjoiOTDlubTku6MiLCJ2IjoiOTDlubTku6MifSx7Im4iOiI4MOW5tOS7oyIsInYiOiI4MOW5tOS7oyJ9XX0seyJrZXkiOiJieSIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IueDreaSreamnCIsInYiOiLng63mkq3mppwifSx7Im4iOiLlpb3or4TmppwiLCJ2Ijoi5aW96K+E5qacIn0seyJuIjoi5paw5LiK57q/IiwidiI6IuaWsOS4iue6vyJ9XX1dLAogICAgICAgICIxIjpbeyJrZXkiOiJjbGFzcyIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiLnsbvlnosifSx7Im4iOiLliqjkvZzniYciLCJ2Ijoi5Yqo5L2c54mHIn0seyJuIjoi5Zac5Ymn54mHIiwidiI6IuWWnOWJp+eJhyJ9LHsibiI6IueIseaDheeJhyIsInYiOiLniLHmg4XniYcifSx7Im4iOiLnp5HlubvniYciLCJ2Ijoi56eR5bm754mHIn0seyJuIjoi5oGQ5oCW54mHIiwidiI6IuaBkOaAlueJhyJ9LHsibiI6IuWJp+aDheeJhyIsInYiOiLliafmg4XniYcifSx7Im4iOiLmiJjkuonniYciLCJ2Ijoi5oiY5LqJ54mHIn0seyJuIjoi5oOK5oKa54mHIiwidiI6IuaDiuaCmueJhyJ9XX0seyJrZXkiOiJhcmVhIiwibmFtZSI6IuWcsOWMuiIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IuWcsOWMuiJ9LHsibiI6IuWNjuivrSIsInYiOiLljY7or60ifSx7Im4iOiLpppnmuK/lnLDljLoiLCJ2Ijoi6aaZ5riv5Zyw5Yy6In0seyJuIjoi576O5Zu9IiwidiI6Iue+juWbvSJ9LHsibiI6Iuasp+a0siIsInYiOiLmrKfmtLIifSx7Im4iOiLpn6nlm70iLCJ2Ijoi6Z+p5Zu9In0seyJuIjoi5pel5pysIiwidiI6IuaXpeacrCJ9LHsibiI6IuWPsOa5vuWcsOWMuiIsInYiOiLlj7Dmub7lnLDljLoifSx7Im4iOiLms7Dlm70iLCJ2Ijoi5rOw5Zu9In0seyJuIjoi5Y+w5rm+5Zyw5Yy6IiwidiI6IuWPsOa5vuWcsOWMuiJ9LHsibiI6IuWNsOW6piIsInYiOiLljbDluqYifSx7Im4iOiLlhbblroMiLCJ2Ijoi5YW25a6DIn1dfSx7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2Ijoi5bm05Lu9In0seyJuIjoiMjAyNCIsInYiOiIyMDI0In0seyJuIjoiMjAyMyIsInYiOiIyMDIzIn0seyJuIjoiMjAyMiIsInYiOiIyMDIyIn0seyJuIjoiMjAyMSIsInYiOiIyMDIxIn0seyJuIjoiMjAyMCIsInYiOiIyMDIwIn0seyJuIjoiMjAxOSIsInYiOiIyMDE5In0seyJuIjoiMjAxOCIsInYiOiIyMDE4In0seyJuIjoiMjAxNyIsInYiOiIyMDE3In0seyJuIjoiMjAxNiIsInYiOiIyMDE2In0seyJuIjoiMjAxNSIsInYiOiIyMDE1In0seyJuIjoiMTDlubTku6MiLCJ2IjoiMTDlubTku6MifSx7Im4iOiIwMOW5tOS7oyIsInYiOiIwMOW5tOS7oyJ9LHsibiI6Ijkw5bm05LujIiwidiI6Ijkw5bm05LujIn0seyJuIjoiODDlubTku6MiLCJ2IjoiODDlubTku6MifV19LHsia2V5IjoiYnkiLCJuYW1lIjoi5o6S5bqPIiwidmFsdWUiOlt7Im4iOiLng63mkq3mppwiLCJ2Ijoi54Ot5pKt5qacIn0seyJuIjoi5aW96K+E5qacIiwidiI6IuWlveivhOamnCJ9LHsibiI6IuaWsOS4iue6vyIsInYiOiLmlrDkuIrnur8ifV19XSwKICAgICAgICAiNCI6W3sia2V5IjoiY2xhc3MiLCJuYW1lIjoi57G75Z6LIiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2Ijoi57G75Z6LIn0seyJuIjoi5Zu95Lqn5ryrIiwidiI6IuWbveS6p+a8qyJ9LHsibiI6Iuasp+e+jua8qyIsInYiOiLmrKfnvo7mvKsifSx7Im4iOiLml6Xpn6nmvKsiLCJ2Ijoi5pel6Z+p5ryrIn0seyJuIjoi5riv5Y+w5ryrIiwidiI6Iua4r+WPsOa8qyJ9XX0seyJrZXkiOiJhcmVhIiwibmFtZSI6IuWcsOWMuiIsInZhbHVlIjpbeyJuIjoi5YWo6YOoIiwidiI6IuWcsOWMuiJ9LHsibiI6IuS4reWbveWkp+mZhiIsInYiOiLkuK3lm73lpKfpmYYifSx7Im4iOiLml6XmnKwiLCJ2Ijoi5pel5pysIn0seyJuIjoi6Z+p5Zu9IiwidiI6IumfqeWbvSJ9LHsibiI6Iuasp+e+jiIsInYiOiLmrKfnvo4ifSx7Im4iOiLlhbblroMiLCJ2Ijoi5YW25a6DIn1dfSx7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2Ijoi5bm05Lu9In0seyJuIjoiMjAyNCIsInYiOiIyMDI0In0seyJuIjoiMjAyMyIsInYiOiIyMDIzIn0seyJuIjoiMjAyMiIsInYiOiIyMDIyIn0seyJuIjoiMjAyMSIsInYiOiIyMDIxIn0seyJuIjoiMjAyMCIsInYiOiIyMDIwIn0seyJuIjoiMjAxOSIsInYiOiIyMDE5In0seyJuIjoiMjAxOCIsInYiOiIyMDE4In0seyJuIjoiMjAxNyIsInYiOiIyMDE3In0seyJuIjoiMjAxNiIsInYiOiIyMDE2In0seyJuIjoiMjAxNSIsInYiOiIyMDE1In0seyJuIjoiMTDlubTku6MiLCJ2IjoiMTDlubTku6MifSx7Im4iOiIwMOW5tOS7oyIsInYiOiIwMOW5tOS7oyJ9LHsibiI6Ijkw5bm05LujIiwidiI6Ijkw5bm05LujIn0seyJuIjoiODDlubTku6MiLCJ2IjoiODDlubTku6MifV19LHsia2V5IjoiYnkiLCJuYW1lIjoi5o6S5bqPIiwidmFsdWUiOlt7Im4iOiLng63mkq3mppwiLCJ2Ijoi54Ot5pKt5qacIn0seyJuIjoi5paw5LiK57q/IiwidiI6IuaWsOS4iue6vyJ9XX0seyJrZXkiOiJ0b3RhbCIsIm5hbWUiOiLnirbmgIEiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiLnirbmgIEifSx7Im4iOiLov57ovb0iLCJ2Ijoi6L+e6L29In0seyJuIjoi5a6M57uTIiwidiI6IuWujOe7kyJ9XX1dLAogICAgICAgICIzIjpbeyJrZXkiOiJjbGFzcyIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiLnsbvlnosifSx7Im4iOiLlpKfpmYYiLCJ2Ijoi5aSn6ZmGIn0seyJuIjoi5riv5Y+wIiwidiI6Iua4r+WPsCJ9LHsibiI6IuaXpemfqSIsInYiOiLml6Xpn6kifSx7Im4iOiLmrKfnvo4iLCJ2Ijoi5qyn576OIn1dfSx7ImtleSI6ImFyZWEiLCJuYW1lIjoi5Zyw5Yy6IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2Ijoi5Zyw5Yy6In0seyJuIjoi5YaF5ZywIiwidiI6IuWGheWcsCJ9LHsibiI6Iua4r+WPsCIsInYiOiLmuK/lj7AifSx7Im4iOiLml6Xpn6kiLCJ2Ijoi5pel6Z+pIn0seyJuIjoi5qyn576OIiwidiI6Iuasp+e+jiJ9LHsibiI6IuWFtuWugyIsInYiOiLlhbblroMifV19LHsia2V5IjoieWVhciIsIm5hbWUiOiLlubTku70iLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiLlubTku70ifSx7Im4iOiIyMDI0IiwidiI6IjIwMjQifSx7Im4iOiIyMDIzIiwidiI6IjIwMjMifSx7Im4iOiIyMDIyIiwidiI6IjIwMjIifSx7Im4iOiIyMDIxIiwidiI6IjIwMjEifSx7Im4iOiIyMDIwIiwidiI6IjIwMjAifSx7Im4iOiIyMDE5IiwidiI6IjIwMTkifSx7Im4iOiIyMDE4IiwidiI6IjIwMTgifSx7Im4iOiIyMDE3IiwidiI6IjIwMTcifSx7Im4iOiIyMDE2IiwidiI6IjIwMTYifSx7Im4iOiIyMDE1IiwidiI6IjIwMTUifSx7Im4iOiIxMOW5tOS7oyIsInYiOiIxMOW5tOS7oyJ9LHsibiI6IjAw5bm05LujIiwidiI6IjAw5bm05LujIn0seyJuIjoiOTDlubTku6MiLCJ2IjoiOTDlubTku6MifSx7Im4iOiI4MOW5tOS7oyIsInYiOiI4MOW5tOS7oyJ9XX0seyJrZXkiOiJieSIsIm5hbWUiOiLmjpLluo8iLCJ2YWx1ZSI6W3sibiI6IueDreaSreamnCIsInYiOiLng63mkq3mppwifSx7Im4iOiLmlrDkuIrnur8iLCJ2Ijoi5paw5LiK57q/In1dfV0sCiAgICAgICAgIjQ2IjpbeyJrZXkiOiJjbGFzcyIsIm5hbWUiOiLnsbvlnosiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiLnsbvlnosifSx7Im4iOiLml6Xpn6nliaciLCJ2Ijoi5pel6Z+p5YmnIn0seyJuIjoi5qyn576O5YmnIiwidiI6Iuasp+e+juWJpyJ9LHsibiI6Iua1t+WkluWJpyIsInYiOiLmtbflpJbliacifV19LHsia2V5IjoiYXJlYSIsIm5hbWUiOiLlnLDljLoiLCJ2YWx1ZSI6W3sibiI6IuWFqOmDqCIsInYiOiLlnLDljLoifSx7Im4iOiLpn6nlm70iLCJ2Ijoi6Z+p5Zu9In0seyJuIjoi576O5YmnIiwidiI6Iue+juWJpyJ9LHsibiI6IuaXpeacrCIsInYiOiLml6XmnKwifSx7Im4iOiLms7Dlm70iLCJ2Ijoi5rOw5Zu9In0seyJuIjoi6Iux5Zu9IiwidiI6IuiLseWbvSJ9LHsibiI6IuaWsOWKoOWdoSIsInYiOiLmlrDliqDlnaEifSx7Im4iOiLlhbbku5YiLCJ2Ijoi5YW25LuWIn1dfSx7ImtleSI6InllYXIiLCJuYW1lIjoi5bm05Lu9IiwidmFsdWUiOlt7Im4iOiLlhajpg6giLCJ2Ijoi5bm05Lu9In0seyJuIjoiMjAyNCIsInYiOiIyMDI0In0seyJuIjoiMjAyMyIsInYiOiIyMDIzIn0seyJuIjoiMjAyMiIsInYiOiIyMDIyIn0seyJuIjoiMjAyMSIsInYiOiIyMDIxIn0seyJuIjoiMjAyMCIsInYiOiIyMDIwIn0seyJuIjoiMjAxOSIsInYiOiIyMDE5In0seyJuIjoiMjAxOCIsInYiOiIyMDE4In0seyJuIjoiMjAxNyIsInYiOiIyMDE3In0seyJuIjoiMjAxNiIsInYiOiIyMDE2In0seyJuIjoiMjAxNSIsInYiOiIyMDE1In0seyJuIjoiMTDlubTku6MiLCJ2IjoiMTDlubTku6MifSx7Im4iOiIwMOW5tOS7oyIsInYiOiIwMOW5tOS7oyJ9LHsibiI6Ijkw5bm05LujIiwidiI6Ijkw5bm05LujIn0seyJuIjoiODDlubTku6MiLCJ2IjoiODDlubTku6MifV19LHsia2V5IjoiYnkiLCJuYW1lIjoi5o6S5bqPIiwidmFsdWUiOlt7Im4iOiLng63mkq3mppwiLCJ2Ijoi54Ot5pKt5qacIn0seyJuIjoi5aW96K+E5qacIiwidiI6IuWlveivhOamnCJ9LHsibiI6IuaWsOS4iue6vyIsInYiOiLmlrDkuIrnur8ifV19XQogICAgfSwKCWhlYWRlcnM6ewoJCSJVc2VyLUFnZW50Ijoib2todHRwLzQuNi4wIgoJfSwKCXRpbWVvdXQ6NTAwMCwKCWNsYXNzX25hbWU6J+eUteinhuWJpybnlLXlvbEm5Yqo5ryrJue7vOiJuibmtbflpJbnsr7pgIknLCAvLyAvYXBpLnBocC9wcm92aWRlL2hvbWVfbmF2CgljbGFzc191cmw6JzImMSY0JjMmNDYnLAoJbGltaXQ6MjAsCglwbGF5X3BhcnNlOnRydWUsCglsYXp5OmBqczoKICAgICAgICB0cnkgewogICAgICAgICAgICBmdW5jdGlvbiBnZXR2aWRlbyh1cmwpIHsKICAgICAgICAgICAgICAgIGxldCBqRGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHsKICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBnZXRIZWFkZXJzKHVybCkKICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIGlmIChqRGF0YS5jb2RlID09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gakRhdGEuZGF0YS51cmwKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vNDMuMTU0LjEwNC4xNTI6MTIzNC9qaGFwaS9jcy5waHA/dXJsPScgKyB1cmwuc3BsaXQoJz0nKVsxXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgvLC8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgICAgIGxldCBtanVybCA9IGlucHV0LnNwbGl0KCcsJylbMV0KICAgICAgICAgICAgICAgIGxldCB2aWRlb1VybCA9IGdldHZpZGVvKG1qdXJsKTsKICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwsCiAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiBKU09OLnN0cmluZ2lmeSh7CiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyLWFnZW50JzogJ0xhdmYvNTguMTIuMTAwJwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBsZXQgdmlkZW9VcmwgPSBnZXR2aWRlbyhpbnB1dCk7CiAgICAgICAgICAgICAgICBpZiAoL2poYXBpLy50ZXN0KHZpZGVvVXJsKSkgewogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gZ2V0dmlkZW8odmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB2aWRlb1VybCwKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcjogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXItYWdlbnQnOiAnTGF2Zi81OC4xMi4xMDAnCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlOiAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBsb2coZS50b1N0cmluZygpKQogICAgICAgIH0KCWAsCgnmjqjojZA6YGpzOgogICAgICAgIHZhciBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0LCB7CiAgICAgICAgICAgIGhlYWRlcnM6IGdldEhlYWRlcnMoaW5wdXQpCiAgICAgICAgfSk7CiAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgaHRtbC5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CiAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICB0aXRsZTogaXQubmFtZSwKICAgICAgICAgICAgICAgIGltZzogaXQuaW1nLAogICAgICAgICAgICAgICAgZGVzYzogaXQucmVtYXJrcywKICAgICAgICAgICAgICAgIHVybDogaXQuaWQKICAgICAgICAgICAgfSkKICAgICAgICB9KTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICBgLAoJ5LiA57qnOmBqczoKCQl2YXIgZCA9IFtdOwoJCWxldCBodG1sID0gcmVxdWVzdChpbnB1dCwgewoJCQloZWFkZXJzOiBnZXRIZWFkZXJzKGlucHV0KQoJCX0pOwoJCWh0bWwgPSBKU09OLnBhcnNlKGh0bWwpOwoJCWh0bWwubGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CgkJCWQucHVzaCh7CgkJCQl0aXRsZTogaXQubmFtZSwKCQkJCWltZzogaXQuaW1nLAoJCQkJZGVzYzogaXQubXNnLAoJCQkJdXJsOiBpdC5pZAoJCQl9KQoJCX0pOwoJCXNldFJlc3VsdChkKTsKCWAsCgnkuoznuqc6YGpzOgogICAgICAgIHZhciBkID0gW107CiAgICAgICAgVk9EID0gewogICAgICAgICAgICB2b2RfaWQ6IGlucHV0LnNwbGl0KCdpZD0nKVsxXQogICAgICAgIH07CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0LCB7CiAgICAgICAgICAgICAgICBoZWFkZXJzOiBnZXRIZWFkZXJzKGlucHV0KQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgIGxldCBub2RlID0gaHRtbC5kYXRhOwogICAgICAgICAgICBWT0QgPSB7CiAgICAgICAgICAgICAgICB2b2RfbmFtZTogbm9kZVsnbmFtZSddLAogICAgICAgICAgICAgICAgdm9kX3BpYzogbm9kZVsnaW1nJ10sCiAgICAgICAgICAgICAgICB0eXBlX25hbWU6IG5vZGVbJ3R5cGUnXSwKICAgICAgICAgICAgICAgIHZvZF95ZWFyOiBub2RlWyd5ZWFyJ10sCiAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogJ+abtOaWsOiHszogJyArIG5vZGVbJ21zZyddICsgJyAvIOivhOWIhjogJyArIG5vZGVbJ3Njb3JlJ10sCiAgICAgICAgICAgICAgICB2b2RfY29udGVudDogbm9kZVsnaW5mbyddLnN0cmlwKCkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgbGV0IGVwaXNvZGVzID0gbm9kZS5wbGF5ZXJfaW5mbzsKICAgICAgICAgICAgbGV0IHBsYXlNYXAgPSB7fTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBwbGF5X3VybCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHZhciBwbGF5X3VybCA9ICcnCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXBpc29kZXMuZm9yRWFjaChmdW5jdGlvbihlcCkgewogICAgICAgICAgICAgICAgbGV0IHBsYXl1cmxzID0gZXBbJ3ZpZGVvX2luZm8nXTsKICAgICAgICAgICAgICAgIHBsYXl1cmxzLmZvckVhY2goZnVuY3Rpb24ocGxheXVybCkgewogICAgICAgICAgICAgICAgICAgIGxldCBzb3VyY2UgPSBlcFsnc2hvdyddOwogICAgICAgICAgICAgICAgICAgIGlmICghcGxheU1hcC5oYXNPd25Qcm9wZXJ0eShzb3VyY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlNYXBbc291cmNlXSA9IFtdCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHBsYXlNYXBbc291cmNlXS5hcHBlbmQocGxheXVybFsnbmFtZSddLnN0cmlwKCkgKyAnJCcgKyBwbGF5X3VybCArIHVybGVuY29kZShwbGF5dXJsWyd1cmwnXSkpCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgbGV0IHBsYXlGcm9tID0gW107CiAgICAgICAgICAgIGxldCBwbGF5TGlzdCA9IFtdOwogICAgICAgICAgICBPYmplY3Qua2V5cyhwbGF5TWFwKQogICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICAgICAgICAgICAgcGxheUZyb20uYXBwZW5kKGtleSk7CiAgICAgICAgICAgICAgICAgICAgcGxheUxpc3QuYXBwZW5kKHBsYXlNYXBba2V5XS5qb2luKCcjJykpCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgbGV0IHZvZF9wbGF5X2Zyb20gPSBwbGF5RnJvbS5qb2luKCckJCQnKTsKICAgICAgICAgICAgbGV0IHZvZF9wbGF5X3VybCA9IHBsYXlMaXN0LmpvaW4oJyQkJCcpOwogICAgICAgICAgICBWT0RbJ3ZvZF9wbGF5X2Zyb20nXSA9IHZvZF9wbGF5X2Zyb207CiAgICAgICAgICAgIFZPRFsndm9kX3BsYXlfdXJsJ10gPSB2b2RfcGxheV91cmwKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGxvZygn6I635Y+W5LqM57qn6K+m5oOF6aG15Y+R55Sf6ZSZ6K+vOicgKyBlLm1lc3NhZ2UpCiAgICAgICAgfQoJYCwKCeaQnOe0ojpganM6CiAgICAgICAgdmFyIGQgPSBbXTsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQsIHsKICAgICAgICAgICAgaGVhZGVyczogZ2V0SGVhZGVycyhpbnB1dCkKICAgICAgICB9KTsKICAgICAgICBodG1sID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBodG1sLmRhdGEuZm9yRWFjaChmdW5jdGlvbihpdCkgewogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IGl0LnZpZGVvX25hbWUsCiAgICAgICAgICAgICAgICBpbWc6IGl0LmltZywKICAgICAgICAgICAgICAgIGRlc2M6IGl0LnFpbmd4aWR1ICsgJy8nICsgaXQuY2F0ZWdvcnksCiAgICAgICAgICAgICAgICB1cmw6IGl0LmlkLAogICAgICAgICAgICAgICAgY29udGVudDogaXQuYmx1cmIKICAgICAgICAgICAgfSkKICAgICAgICB9KTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICBgLAp9 \ No newline at end of file diff --git a/lib/卧龙资源[资].js b/lib/卧龙资源[资].js new file mode 100644 index 0000000..599093b --- /dev/null +++ b/lib/卧龙资源[资].js @@ -0,0 +1 @@ +H4sIAEIfMGcC/9PXV8goKSkottLXT87PyUlNLtErz8/Jz0uvqizXS87P1U8syNQryCjQLyjKL8tMSdUvy0/Rt09Mts3JLC7h4ipLLFIoKs1JVbBVqOZSAIJnKxY+m7vfSkH9ZXv7y9lthuo6YOGSzJKcVKDo097lL/fNfLG15dmuCdFAKhYqn5FfXAKUxusUqFJ9oIvzc1NDMlOAGgyN4QbAhKACyYklqfGpFck5pSkgi59P2fp078bnne01L/bPe7577dPO5TXPd+950bkLJPa0a8WzPatBLIi6F8sXv1i/pebJ3skvmjbVPNsz5enEGTXPpm14OX030NEv1q2HWlKQWFScGl9alAOxtxYAV4oqeU4BAAA= \ No newline at end of file diff --git a/lib/即看影视.js b/lib/即看影视.js new file mode 100644 index 0000000..ab13787 --- /dev/null +++ b/lib/即看影视.js @@ -0,0 +1 @@ +h36A5I5KdeB29zb3iwNWVxp6gn0/cvpz3z2sY9EmTCmx+IetXeW0oiIhKyt4XtjmxR7yHVQPa1h4vDyuFLDCoch8kZavLwpVpy9I0imZUcQqHpj76KBhBmQuhHOA7u0i2uhmnFMHEvesKNCYBI5mZdYu0AVGaOiCI35TqL5VLaQ9ALl6EIpfCzZD/tW7E/QbIXRBaNg23bGN7tT0NtTL1G/7ABLNerqWnV0DOr4Uu6J6v/oyZR6OYN0PtCb+h6FnIL2tjZ8ZK+jAyDEkYnNHnWRMHRVgOsVQ0eq1H4jyPv1fChu0/jEc5OKSYFG7KD5kTGFBG3eGOj/XU2nbWCtvAmSCk88kIt/KSsWFxONOJQDRbHfTpLjF/YulyPlDAS+Lcng84P8F/lgc3c0xWl128jCwfDwWI7qeV6SCvd4xdz2pimxfT87nZuBZNKl5aumdCpYBvyIVgNX8y+bKHuOzdb87z+K+7mlDY99yc1mYYL23mV5c+fInNQtVYCs0cLVTlKsuUdzKJcg+87K7dAGWjZ1URTTuQbruRgdtQx+ZRonYxT8av8k5jD/N4wZz3moZTzNkyp6xVvPy7U6LHlZpgcNP27TQApCvLFA9wpiMYVMwAqcZ/eJ7n4p6fHbLyCe8xkMxbN2ELOQseKrOM8ZqrrZqzdKelnfSigPnKkAAL0Zz8ERxFZRJ1ap/gpbZCwKiUhpw3Mg97WOvTsmEbSI89gHZ9ZmFOiWN33Hsbq3Ney1ZrvXj9MlFDgRVkD5Z8f7onlnRzi/92arFAI5EWdhaCp0Bx4hBdly8g5TECzBs4SkrxI0CDRnEEbz0ShETWG68s6SSOzmRpA3nAYF855KdxRlFNjB8V5IHeJ0ut/2Q17yH3ifUeBl2YegnacIn6Bmac8Zb8QR6wMOGCwRF5sggWZBxlWSS9/1qmuHPxrBwup82oxtux5YrIgzIcwLe++EVq4j+KQnIRJIcftv45yepQGNtdd3l/UCyKk31GOoZcPPcarOZqa4aweWqlrPCMIH8CmT0yAfO/bbqgRMbFIYUBAsFe5n/vtD+pNqCc2Bdlnlskeu+0JOg89LafZzyRTREDRIyWL7s8F55mZX8EKPF2wOxgB9DqhrJlIKaSOMS75Fpfx0tdWDQwHzI2lJtV4zwWk47D2jNDbqqytH5wUHWKC/fbSFTo+1UR9IyGcbwnQ2kRrYPv/ulU83Me+NamX5rf8BY3V+3VBTUbz01yelyJDFRdqtv48WZFNEDYueKEs9idg4cgDV/hQzNOneBAvv75K385zlTuPR1xd13rdjjmPjUUEBEu5sOf0OFaHiIed1LnzC2k/XpWp13XXp3hihmejkUvdCxSsXJ8PfMe7I2hIob4QxvqiYrWOaiGotKn+o= \ No newline at end of file diff --git a/lib/厂长资源.js b/lib/厂长资源.js new file mode 100644 index 0000000..1cbd139 --- /dev/null +++ b/lib/厂长资源.js @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/lib/去看吧.js b/lib/去看吧.js new file mode 100644 index 0000000..a8e1393 --- /dev/null +++ b/lib/去看吧.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/lib/去看吧.json b/lib/去看吧.json new file mode 100644 index 0000000..a004c63 --- /dev/null +++ b/lib/去看吧.json @@ -0,0 +1,68 @@ +{ + "author":"", + "name": "去看吧", + "url": "https://qkan8.com", //填网站链接 + "tihuan": "cnzz.com", //这个不用动,是个别网站嗅探时过滤地址用的 + "User": "空", //这个不用动,是个别网站播放需要请求头时才用到 + "shouye": "1", + + "fenlei": "高清原碟$/index.php/vod/show/id/33/page/#日漫$/index.php/vod/show/id/21/page/#女頻$/index.php/vod/show/id/50/page/#劇場$/index.php/vod/show/id/24/page/#国漫$/index.php/vod/show/id/51/page/#美漫$/index.php/vod/show/id/22/page/", //网站列表的分类 + "houzhui": ".html", //网站翻页链接的后缀 + + "shifouercijiequ": "0", //截取的列表数组是否需要二次截取,0不需要,1需要 + "jiequqian": "空", //不需要二次截取就填空 + "jiequhou": "空", //不需要二次截取就填空 + "jiequshuzuqian": "class=\"fed-list-pics", //截取的列表数组的前关键词,截取的关键词有 " 的用 \ 进行转义 + "jiequshuzuhou": "", //截取的列表数组的后关键词,截取的关键词有 " 的用 \ 进行转义 + "tupianqian": "data-original=\"", //列表中资源的图片前关键词,截取的关键词有 " 的用 \ 进行转义 + "tupianhou": "\"", //列表中资源的图片后关键词,截取的关键词有 " 的用 \ 进行转义 + "biaotiqian": ".html\">", //列表中资源的标题前关键词,截取的关键词有 " 的用 \ 进行转义 + "biaotihou": "", //列表中资源的标题后关键词,截取的关键词有 " 的用 \ 进行转义 + "lianjieqian": "href=\"", //列表中资源的详情页跳转链接前关键词,截取的关键词有 " 的用 \ 进行转义 + "lianjiehou": "\"", //列表中资源的详情页跳转链接后关键词,截取的关键词有 " 的用 \ 进行转义 + + //搜索部分基本不用动,现在网站基本都是苹果CMS,所有搜索是固定的。 + "sousuoqian": "/ajax/suggest?mid=1&wd=", + "sousuohou": "&limit=500", + "sousuohouzhui": "/voddetail/", //搜索页影片跳转详情页的中间标识链接部分 + "ssmoshi": "0", + "sousuoshifouercijiequ": "0", + "jspic": "pic", + "jsname": "name", + "jsid": "id", + "ssjiequqian": "空", + "ssjiequhou": "空", + "ssjiequshuzuqian": "空", + "ssjiequshuzuhou": "空", + "sstupianqian": "空", + "sstupianhou": "空", + "ssbiaotiqian": "空", + "ssbiaotihou": "空", + "sslianjieqian": "空", + "sslianjiehou": "空", + + "bfshifouercijiequ": "0", + "bfjiequqian": "空", + "bfjiequhou": "空", + "bfjiequshuzuqian": "class=\"fed-play-item", //播放截取的列表数组的前关键词 + "bfjiequshuzuhou": "", //播放截取的列表数组的后关键词 + + "zhuangtaiqian": "fed-text-center\">", //状态前关键词 + "zhuangtaihou": "", //状态后关键词 + "daoyanqian": "导演:", //导演前关键词 + "daoyanhou": "", //导演态后关键词 + "zhuyanqian": "声优:", //主演前关键词 + "zhuyanhou": "", //主演后关键词 + "juqingqian": "简介:", //剧情前关键词 + "juqinghou": "", //剧情后关键词 + + "bfyshifouercijiequ": "1", //截取的播放列表数组是否需要二次截取,0不需要,1需要 + "bfyjiequqian": "class=\"fed-part-rows\">", //不需要二次截取就填空 + "bfyjiequhou": "

    [不包含:推荐]", + + "标题":"&&", + + "副标题":"text-right\">&&", + + "图片":"data-original=\"&&\"", + + "链接":"href=\"&&\"", + + "搜索url":"http://fagmn.com/search.php;post;searchword={wd}", + + "搜索数组":"stui-vodlist__thumb lazyload\"&&", + + "搜索标题":"&&", + + "搜索副标题":"text-right\">&&", + + "搜索图片":"data-original=\"&&\"", + + "搜索链接":"href=\"&&\"", + + "线路数组":"#down&&[排序:奇>搜>咪]", + + "线路标题":"🌸cc🌸+>&&", + + "分类url":"http://fagmn.com/list/{cateId}_{catePg}.html;;akm0", + + "分类":"电影$1#电视剧$2#综艺$4#动漫$3"} diff --git a/lib/黑狐影院.js b/lib/黑狐影院.js new file mode 100644 index 0000000..d401c4a --- /dev/null +++ b/lib/黑狐影院.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi7pppblm74yLuS6jOe6pywgewogICAgdGFiczogIi5uYXYubmF2LXRhYnMmJmxpIiwKfSk7CnZhciBydWxlID0gewogICAg5qih5p2/OiAn6aaW5Zu+MicsCiAgICB0aXRsZTogJ+m7keeLkOW9semZoicsCiAgICBob3N0OiAnaHR0cDovL2ZhZ21uLmNvbScsCiAgICB1cmw6ICcvbGlzdC9meWNsYXNzX2Z5cGFnZS5odG1sJywKICAgIHNlYXJjaFVybDogJy9zZWFyY2gucGhwI3NlYXJjaHdvcmQ9Kio7cG9zdCcsCn0= \ No newline at end of file