From 8299f4e17ccd1142cd4d14250f18d8d2334466ad Mon Sep 17 00:00:00 2001 From: src48597962 <48597962@qq.com> Date: Tue, 28 Mar 2023 21:33:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'SrcJyAliPublic.js'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SrcJyAliPublic.js | 225 ---------------------------------------------- 1 file changed, 225 deletions(-) diff --git a/SrcJyAliPublic.js b/SrcJyAliPublic.js index a874d8ba..cac81f3c 100644 --- a/SrcJyAliPublic.js +++ b/SrcJyAliPublic.js @@ -118,232 +118,7 @@ function SortList(v1, v2) { } -function createsession(headers,deviceId,userId){ - function getNowTime() { - const yy = new Date().getFullYear() - const MM = (new Date().getMonth() + 1) < 10 ? '0' + (new Date().getMonth() + 1) : (new Date().getMonth() + 1) - const dd = new Date().getDate() < 10 ? '0' + new Date().getDate() : new Date().getDate() - const HH = new Date().getHours() < 10 ? '0' + new Date().getHours() : new Date().getHours() - const mm = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes() - return yy + '' + dd + '' + HH + '' + MM + '' + mm - } - - for(let i=1; i<5; i++){ - let signature; - let public_key; - log(getItem('aliecctype')); - if(getItem('aliecctype')=="1"){ - let getaliecc = JSON.parse(request('http://124.221.241.174:87/api', { body: 'did=' + deviceId + '&uid=' + userId + '&token=' + md5(getNowTime()), method: 'POST', timeout: 3000 })); - if (getaliecc.code == 200) { - signature = getaliecc.sign; - public_key = getaliecc.key; - } - }else{ - let a = justTestSign('5dde4e1bdf9e4966b387ba58f4b3fdc3',deviceId,userId); - signature = a.split('##')[0]; - public_key = a.split('##')[1]; - } - headers['x-signature'] = signature; - let data = { - "deviceName": "Edge浏览器", - "modelName": "Windows网页版", - "pubKey": public_key, - } - if (signature && public_key) { - let req = JSON.parse(request("https://api.aliyundrive.com/users/v1/users/device/create_session", { headers: headers, body: data, timeout: 3000 })); - if (req.success) { - return {"signature":signature, "success":1} - } - } - } - return {"success":0} -} - -function aliSharePlayUrl(share_id,file_id,share_pwd){ - try{ - share_pwd = share_pwd&&share_pwd.length==4?share_pwd:""; - let sharetoken = JSON.parse(request('https://api.aliyundrive.com/v2/share_link/get_share_token', { body: { "share_pwd": share_pwd, "share_id": share_id }, method: 'POST', timeout: 3000 })).share_token; - - let authorization = 'Bearer ' + userinfo.access_token; - let deviceId = userinfo.device_id; - let userId = userinfo.user_id; - headers['authorization'] = authorization; - headers['x-device-id'] = deviceId; - let aliecc = createsession(headers,deviceId,userId); - let aliyunUrl = []; - if(aliecc.success){ - headers['x-signature'] = aliecc.signature; - headers['x-share-token'] = sharetoken; - headers['fileid'] = userId; - let data = data = {"category": "live_transcoding", "file_id": file_id, "get_preview_url": true, "share_id": share_id, "template_id": "", "get_subtitle_info": true} - let json = JSON.parse(request('https://api.aliyundrive.com/v2/file/get_share_link_video_preview_play_info', { headers: headers, body: data, method: 'POST', timeout: 3000 })); - aliyunUrl = json.video_preview_play_info.live_transcoding_task_list; - aliyunUrl.reverse(); - } - return aliyunUrl; - }catch(e){ - log('根据共享链接获取播放地址失败,挂载的阿里分享应有密码>'+e.message); - return ""; - } -} - -function getAliUrl(share_id, file_id, share_pwd) { - try { - let urls = []; - let names = []; - let heads = []; - let u = startProxyServer($.toString((share_id,file_id,share_pwd,config) => { - function geturl(fileid,line){ - require(config.依赖.match(/http(s)?:\/\/.*\//)[0] + 'SrcJyAliPublic.js'); - let playUrlList = aliSharePlayUrl(share_id,fileid,share_pwd) || []; - let aliurl; - playUrlList.forEach((item) => { - if(item.template_id == line){ - aliurl = JSON.parse(request(item.url, { headers: { 'Referer': 'https://www.aliyundrive.com/' }, onlyHeaders: true, redirect: false, timeout: 3000 })).headers.location[0]; - } - }) - //上面是获取阿里的播放地址 - //log("我在代理" + aliurl); - let home = aliurl.split('media.m3u8')[0]; - let f = fetch(aliurl, { headers: { 'Referer': 'https://www.aliyundrive.com/' }, timeout: 3000}).split("\n"); - let ff = f.map(it => { - if (it.startsWith("media-")) { - return "/proxy?url=" + base64Encode(home+it); - } - return it; - }).join("\n"); - //log('ufid-'+fileid); - writeFile('hiker://files/cache/_fileSelect_'+fileid+'.m3u8',ff); - return ff; - } - let url = base64Decode(MY_PARAMS.url); - if(url.includes(".ts")){ - let fid = url.split('&f=')[1].split('&')[0]; - //log('sfid-'+fid); - let f = fetch('hiker://files/cache/_fileSelect_'+fid+'.m3u8').split("\n"); - f.forEach(it => { - if(it&&it.startsWith('/proxy?url=')){ - let furl = base64Decode(it.replace('/proxy?url=','')); - if(url.substr(url.indexOf('/media-'),url.indexOf('.ts')) == furl.substr(furl.indexOf('/media-'),furl.indexOf('.ts'))){ - url = furl; - } - } - }) - let expires = url.split('x-oss-expires=')[1].split('&')[0]; - const lasttime = parseInt(expires) - Date.now() / 1000; - if(lasttime < 40){ - //log('过期更新') - let line = url.split('/media')[0];//取之前播放的ts段线路 - line = line.substring(line.lastIndexOf('/')+1); - let f = geturl(fid,line).split("\n"); - f.forEach(it => { - if(it&&it.startsWith('/proxy?url=')){ - let furl = base64Decode(it.replace('/proxy?url=','')); - if(url.substr(url.indexOf('/media-'),url.indexOf('.ts')) == furl.substr(furl.indexOf('/media-'),furl.indexOf('.ts'))){ - url = furl; - } - } - }) - - }else{ - //log('未过期') - //log("代理ts:" + url); - } - return JSON.stringify({ - statusCode: 302, - headers: { - "Location": url, - 'Referer': 'https://www.aliyundrive.com/' - } - }); - }else{ - //log('首次更新') - let line = url.split('|')[1]; - let ff = geturl(file_id,line); - return ff; - } - },share_id,file_id,share_pwd,config)); - let playUrlList = aliSharePlayUrl(share_id,file_id,share_pwd) || []; - if(playUrlList.length>0){ - playUrlList.forEach((item) => { - urls.push(u + "?url=" + base64Encode(item.url+"|"+item.template_id) + "#.m3u8#pre#"); - names.push(transcoding[item.template_id] ? transcoding[item.template_id] : item.template_height); - heads.push({ 'Referer': 'https://www.aliyundrive.com/' }); - }) - return { - urls: urls, - names: names, - headers: heads - }; - }else{ - log('未获取阿里播放地址,建议重进软件再试一次') - return {}; - } - } catch (e) { - log('获取共享链接播放地址失败>' + e.message); - return {}; - } -} - -function getSubtitle(share_id,sub_file_id,share_pwd){ - try{ - share_pwd = share_pwd&&share_pwd.length==4?share_pwd:""; - let sharetoken = JSON.parse(request('https://api.aliyundrive.com/v2/share_link/get_share_token', { body: { "share_pwd": share_pwd, "share_id": share_id }, method: 'POST', timeout: 3000 })).share_token; - headers["authorization"] = userinfo.access_token; - headers["x-share-token"] = sharetoken; - let data = {"expire_sec":600,"file_id":sub_file_id,"share_id":share_id}; - let downurl = JSON.parse(request("https://api.aliyundrive.com/v2/file/get_share_link_download_url", { headers: headers, body: data, timeout: 3000 })).download_url; - let substr = fetch(downurl, {headers:{"referer": "https://www.aliyundrive.com/"},timeout:3000}); - if(substr){ - writeFile("hiker://files/cache/src/subtitles.srt",substr); - return getPath("hiker://files/cache/src/subtitles.srt"); - } - }catch(e){ - log('获取字幕失败>'+e.message); - } - return ""; -} - -function aliMyPlayUrl(file_id) { - try { - let authorization = 'Bearer ' + userinfo.access_token; - let deviceId = userinfo.device_id; - let userId = userinfo.user_id; - let drive_id = userinfo.default_drive_id; - headers['authorization'] = authorization; - headers['x-device-id'] = deviceId; - let aliecc = createsession(headers,deviceId,userId); - let aliyunUrl = []; - if(aliecc.success){ - headers['x-signature'] = aliecc.signature; - let data = { "drive_id": drive_id, "file_id": file_id, "category": "live_transcoding", "template_id": "", "get_subtitle_info": true } - let json = JSON.parse(request('https://api.aliyundrive.com/v2/file/get_video_preview_play_info', { headers: headers, body: data, method: 'POST', timeout: 3000 })); - aliyunUrl = json.video_preview_play_info.live_transcoding_task_list; - aliyunUrl.reverse(); - } - let urls = []; - let names = []; - let heads = []; - if (aliyunUrl.length > 0) { - aliyunUrl.forEach((item) => { - urls.push(item.url + "#pre#"); - names.push(transcoding[item.template_id] ? transcoding[item.template_id] : item.template_height); - heads.push({ 'Referer': 'https://www.aliyundrive.com/' }); - }) - } else { - log('未获取阿里转码播放地址,建议重进软件再试一次') - } - return { - urls: urls, - names: names, - headers: heads - }; - } catch (e) { - log('获取我的云盘播放地址失败>' + e.message); - return { message: '获取我的云盘播放地址失败>' + e.message }; - } -} //evalPrivateJS('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') //evalPrivateJS('0kK6/ewyxPI9Mo9Wxd+uwc+lUicjavkKL2TvBnlYkP84IatIUbbLttdvvHLcjmNMLa07YJlBGbZumIeRjW7jBX5DWkt4BUiG9zDBqorkz6fMV8yqPd48b14DsQAH8kw8cuxD5KoPjn6x0+1Kv1WAlt3xEcB7szgtlab4uZVgwcEx/Wk6zmrGtspsgVCxkKzP4fcxBiLbqNqMcdRJ1ztbHnNjBiqpqYalrd5sg+ubYmeXfOCJ0ala+r22YLtBHiVfz0TPQz47ihmGwGbgg2QPlVubSrtt/3sUZ02+O8VX4QPjKzs+xGXbKTQte/HYfM3QY8YjvaQzIGy5BBpciEk2mlNQ1oQENWOnBOdVCEjW21cwPd7f1GqU/Cv/aYn2X6XK0PduTy1Vc8rN8S05gxq8b79FeClVspuvoLxWrc8hlXV4b7CK9Wt9lCQ/1d+fhUnQRXDfvG/VTDDgIaOd2Cte+GGSGx4G/77M+okzDIM+GPB0ZVLpY9hKSdtM6Oa8aNybuT+dRD7+rpjLwcLPIQrKh3B/UZmtIgKkAEZjGRURynHPOtU9msmG/y3jkloguoiXyiGFJiA8s8Bsm66seQg6kJMITVlyTDS/el/jF9aSt/4CjKnlUWAIk2YYIN0s4qBCRJf4mskVgDt/cy9OdU3sSiMAd1yngYkTo/iQpuMuVsId1lROGH7gwQGUI0jnRyaYl8GPSm98l+XrJSy5+L+cKRlMSrNqLKK8ah+ofCBx485VI4vqnycjeBUyQQSKoNj7KBsfmLs4N2GIzX1iHa3RYRNQ0QgotC+4MCUREM89Re5yhR8NZe+oBIMYnvgDHQQbbTQffxKzu4eelkn4rWNTC05jQqFLtqBhuth2W/1wVFi8v4RLyhctYbHNY9f3Yhnw77RBNmUyrv+k+omiY5ljf5HxIDKk6W8WFMLSApBOiFjyEikM0xmyUogRR9h9il/J9DKts5u2Hz4lRztj3krIP0asZfuIiS9/OHuAkMlnlMguBmCzMQ+Fkarney89B44yYEcvSTySVKtFBVceAfsFTg1LnRGjrvaw4l70H1g75b+XK6+i4wjhHRF/I1yk1qe8SEY+y5FNfIcYgU7bnyviL8PJRJaReAHmbBhX4N0QmcU4BPLSRDINzXgSB3biRjBkbcko46Tgj6Kpn6okOFAr8muT3E2Y8xNdLxSCro8/OFeFPn+brfyY3wa5qVJp4154nlap5PMA2cD0R7rB4bb/DV+kQFFtN5jAL2i1JGMhLCFFWsHbgT9ZJkX/QRc6uUMzQyWp4XUf6CcIceILgHDPxFkfLaO8keLuYUMr1AnIG/GKUArD8bYLXchTS000yCnn3l5I4gy7oxgqiJM/zHWhOEFpY3CYbCvOxvGKZcIH+0+CSc3LG+V0dJKbNzoa6AprPO9y5cgSuCvUP8+6AWaE5eHtPV7Vu2EOi24hTWyy6IvgKRAWqlOY49CvpkkSNOLc5PEZZpTK/svQX3CpuUK0hNckVtXvYFCWPBQr3oZXdpARGjjZyFcJQ/Q6aJbv0LpE9Pg4MIXBAE5uxZ6hWi1FSEkaamQHdv+8c/qQKYG0kJ2YBZ/onCRdswr9Wc5h5dsDdgg1PvWiKjtBlxjYKPqziGPerJAbTZbzQMeiBqcyjfGo5YKz7Ocq3SADTFRb1UsuusYtQPuackwwlBwE1uBQxRkxVYsm2imNs1bxjzvNRWI4L44df2pkz8xggSkMaeqvknOtdQgCgT6AT5QI0O6ikuB/VI6SjPIA+M8hY93dpcuhISHnfz/sLJHA+4TgxfcxxDn6CU/YK72DZE94PBxWoZmEpkvWZGWIDNg0u2mwIaN3Cd+Ap+KSe4CsGkGODj7TbVvvyEteHoDE3w3H8KUg/c1+XxE4rqrvphRbk0gG2zSGx/A6X8Jed45l5O1Noo5ONlpP5yUyqugySbkkvd9WqlDKbkDsDZxfyQFAgWr/EPN41mZkeFo9irpLOkOcUX83ExpqdxpHIE7v7wEALDBjFTQM9zE7AVMoMHXx4kQUk/EUVFtJnrN82dqaRJ4B+0FwsUSpPEUUuhI1JsZxlUTkB4A6nKfc7du/gGx2UBzO83vMxDhThjhQGI+doA6kffelsrWXI9LrH7MUEwlrqUEVX00TvdZ/gpAYhYkXYYB73PDjTRDpIo3rNmC1D/p/nO5BkRnKJBG3kKwYbJGaILQfKVJIp1HEqf36AMc7by760j03su99x7JG9KXVZw3Ybmn192O0As5e3cMvPcPM6In7siQvq1VrAXvy21UoQnvIaS4x/m1YzHirk+8ASyUTeZ55Zzdl8Djc2Me+TIK7ndexUUWScgejGFtaaX2WsVMMhFeGj9PHojQzhPS/hwF1++ilogaY5kxdrLDUdTu4+MEzlVt4xRsdvbgfJX63rxtyhI2FqRVyqIM9viqMbgF495houeEfQjqq9cvP0UL1gZdbfoZ7AV8nxeQQTNGL+z2puqf3injpSz+D6K5YcDax0e4Q199+oIUNilJkuuFd4CVXW27wPOjM4RVs9ac6mRpfIgWcD5qh6EqODgZs+I9eazqD1xESBmuVIa/afulUX2DE6BL2ygtC9ht+OnXMUevfl0OnyTKgfZq/tBAShFD8ish0WqU4L76vTwOvBwe7DdPSp9bynJdzsmyn6o7AogbZ/pBFEzvXrBk1oxuBWetcmRZmL+2ipzba5fI7jFZoN+VeP4aXD1FLFuapIiF3+oJ64KuN1cRLKmJjBARjK8fw7hdi5PfZMDLz02qBK1MvFM4wnzGeAMmq7l+tp04YvL1aE/a2Irn59kvxOAuGyCHZLp2fRCbRfTEjzbnKKvkiBam3lB3haFb4gIEbAZhrXdjpyRMuCPMI0UMtjqHAiXJIpwWSh6MuyFhRjMLbKGX+tbb4jf9SWUd+pe86jgWhYwHpGVnbO1OLb/54e7VAM7ofYZcc/JM4rxtzebbfnbdXiOYPGYQScjOQaORBFmh/aP4UhEsSc/S+umr8Vx8kgP56WDdwoHOWOTUsNe6zZNRN9gaxD7CIkFM9dLjMj/ESJ6nNNKv9rmZcV2373Dksh+SoVM7Cwbw5wRGA5T9sEhNxBSzjWM7NhbZ0/djzm2lLi3rbMD0873LlyBK4K9Q/z7oBZoTl+6QUwjCGppqSKJWwNx1AcSa4EtCZTswIc8rrrWQdU9t3mzij7U5SA/JqzlslnAeHtouRwk6wRUBZL91kdAu/sKghTbPdtxhtCoE15vchEte4w8cjXMVtoR5G1cOLKegq7cB7ElKwxfXC+dc0kdqWKMHfXOGmoPn7rhUkvvAwwA08Hn+OxRxFlKhIf2fs13owDQms5c9HDNpWoKuYS6JCmJ4sFWG3hSMkPcGeTiPQ0MkIeU4pCXNcBlGrpLczMoveD/73xmfTU9gPTJt/u+Zq8aZcCzN7Uw03YJSRRqJw/YM6pZtT2eFCN0xWvtr+Lw7/BELBpJY5K0gwgOTWU6GnPbCWJCZs+ArPjtq+5g1dbxL9ITHGVLhHguR7j3dtsZh/RuxBNsH0n0BGyakNgVwiKQhqya2aNrcC0ZnqcXvrTWIn86S51iUQyoDX87i9bamMPZXqrIRqy5Sb8Ww3hgXjtiF++F2kL4aaLL++n3BnoPjsFlWYkdsiKIzvTAc0bC2Ds1XAKPyrhenugqoN34039X2M16s3jP1+wIwhHFFirYn8gMQUT4s+CVelr9aI0KS/X7R9h/ShM5Y3XdQ8hOjn6x98h8s3Gnl2vtohMjjjwPttohvqBnYMPDfoeuXvI2Qo8udrlawvFk1yKCunRtQE6DL5MxTbieWAHPKgWwlgFl/nr3FgYrO16HT0nlxPwAC4VVxRq4Drq/YuDRZPocNeBPeKeOlLP4PorlhwNrHR7hCcYgbc1zOnOC1ue8gvUWeTKfWMqMO3t7BJuaRbSszISFWh8ZlVxrh7LWorno1QgFvD+r/PhZvdDZH3a2hMEMRuIh2+7siRfG1A8Wy28p852in5tHgry5+L5yTF2J+y0UcEMqLPtkIhlgWagxflR8QKgiJKReE6EsZwINK4yFn5gLhfTeqzcH/DamOOYifpu/KVlFhI58EpWQ4b2ZiNAKICY29ETdZefM52gNVVOb/eBA5E2fRRTL4YDWjLB70nbn3kcsrHXts5gnxx2OG4Xwlp+suHUowhjlKzjUoD16R7J2GSGx4G/77M+okzDIM+GPB0ZVLpY9hKSdtM6Oa8aNyb9n+4ByGth8ny2vGhdC2A+ufiKH+gVeDMxYvmvvwq4htbcFwnyVnaoKAi8jB2UjqlxcBljAzXX5+3sVto/L3YDGTpyf+wIy5fy24ThhMvOyy863c8hNigW+YJ92FvtJCKN92X07E1yg28xlhaD7XMuRCyfooAkHraJG5ZAbV/DbTZmby/8L4Pb4kb8HIVAyN+yIYbxcv4qZjeB7v2KAQPFvK0dVa1HUTcKxa2Rr7BjvTfRrRTj8xO+qUPmlEdzPl/J59t26u3FmjtHriuAwPUAboPIp0CKO96ScuCQZgG2ATzTpjqR87D+MwQYwDfdZ35kbVYUStOlRr/n4z0M/Kuy/NOmOpHzsP4zBBjAN91nfmmnOQ80SSfeEojUi2dtU7jg/gTDNI7T/K+pMf4f5JhM1a6R/K16VRq61hKPx2NIyO82yw1wjFvIfq1uQ3Kawut7GcG5Qo/p0PyJANhJ/hcKSlZm9KQWm+0LUhDGVzWQZuH9J7G5RGGFKKgIYmmMV14u2UjxK38WfnWjYrb7ZEA3nlL+o3wp53hw+yecoKxwQVJDXbrEE20QFS19RTR3/QCAy/ljSmTeDbT3MfOVNpPe/rlSgaEWttUi0UA7+TnD9NCRHfG60JlsbVxBvTGhIwl1xfNlWFj/HrVGjv7kkqto4xXEfwnUSXtaFgTMwW27yYv63itNqDKVJQsjnCMycjMIZ611j7tD9y859pDWSNZ5tRz0pb67HaNSoMEtnb7x54muu9z23SeVw3n8zRYda0YHVdtemyu+tHf9tJHvxMi1wMRGWcaU+QxMKOIJZx+KuhmyvhVjNZOCQNflVNoM3mvFtEahwsnsaRhMAf07pUiz+1fI6s/p2Ew4t5tJ0pug9kelWof9klHkz0Ak64vbDJij7M4u+7NkttQUD1r8Jhk3A==') //evalPrivateJS('rhiz2Ll8wYnkCoIzJ/nTsBjQ/xZMODzvvtPniw+kAOLskUtISUP3bxLpce3nKwueKIRVgYJSl08ETl80Jugl4F61PEurKDXlGxDMMHTL7RX8xTEGMNCtr0CEz49SZNWjtFkzEGIq6pS3iLCILVd6h1sXtv/FScNv6NQQYlEIjW7WckFOqjGXn5HhlATkGQmmbAMBJ0g/ouwqhIYNv1nH7aM4kSMYV2Nhe5VOaRJSBslqZw1YGcjXBGsYZxkC5TAkNDhSCR42A5to1wbVLxZKSf3fgoHgw+KOnjR8TJQCUbpri8ThGahcNNwT6KOSNgCmj51XEqoS0TCPxASkthcPtwtXvqepUwN0J4Yw+u9NTlvflx/heN21C99lmN6yaas6yJsPThBcAo3jemTHDB7XMnQ+kKPA/ewnSU7+1H4yZwcBUB10+Nc8wgA9X4E0J+ewhsMeSt+G0DEwiOpXGEBtIRKy/iVnqtMQRHPnsgOHcrcDt4Gsvz6HPt96e5z8iZf2Fc0QL3h6ttzoWhQe+QQBCBFWQZjj+wKwO2CrO+QquMGCMhBruPZ5ABGNRpVUhwpnmR18bApwPylzNvJ914epBb/09vaSV+tfD47g2MlmcF+TBjKMDhcSh/12ulK4mptYKEIgtITWO2Mn93gIo6W3SkSKPMO1aVMeCV9p192nn4hGHJQ6cgvJLxuzG//iZFEHJRUx6gpdXp9veuxHmi+lIC+TP/eMEIDVk3lRdLXnGrnq7urLKf6lq6QNwOklKE19gD21NChrlzhsUyUvCeSgiCcmHkeKYnBhGEmFlIGVlF4cppbtPp2BI9D1kolcTb6Is5hJwU0CkNeJK8EOorKLBPGc4TiyezUOexy7awqQBMCsDufyvWgQcfbloZLTORi+eH0xEUpkbnodXZDU3iyB5J/yFAm5Jb3i5Ww7pn3Zf6b1rFmo8ktnBuQIHoRLmUwIlt971xsP0wHpb4NvbBjihk6Az5Ej93a6vmvwQFZZm0sssD2u51v6KP3S7NTgUpbtQVgkTdu5kbng1qnSwRzuzX3hFGcY52jflMGUK79bivtwRvjXwkijdQO5RW0JE2ghqS29uV05QpOZbG8VyeKt4dTkat1xBMxQgj4FXRJNAPMqWgFjdXFXhXA6hYnCNaPrp4cZlxCzHTj22y4879HSfcvTzoox+ETl5BuacQZrpzDuGbVbv46iBW6URJDpXAkpUngQv06JpoE8q2wEWdmn5ok8NGVg/CMYZm5+lGwVjo3oFvGylB61l5njRqwmF6wsBqKfHP866FgaDf2lSpp/LO0rf99mTGs7UjJ0OEUdJ+vy94l6Z3qXV11xVOFq1GfhZgU4yQ/FGMo6XQ9gyGka7w2xS/i59MwZpYYggKySgemY+wBpM7HPa9GBx8Sr19rH')