Skip to content

Instantly share code, notes, and snippets.

@gjp0609
Last active January 18, 2024 17:35
Show Gist options
  • Save gjp0609/086a2403f9e1e5f767067e3bffb76322 to your computer and use it in GitHub Desktop.
Save gjp0609/086a2403f9e1e5f767067e3bffb76322 to your computer and use it in GitHub Desktop.
Tampermonkey script Translate.js
// ==UserScript==
// @name * 搜狗/百度/谷歌翻译
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author OnySakura
// @include *
// @grant GM_xmlhttpRequest
// ==/UserScript==
(function () {
if (window.top != window.self) {
// iframe直接返回
return;
}
// 选中的文本
let translateText = '';
const SOGO_CONFIG = {
enable: true,
status: false,
COLOR: '#fd6853',
CODE: 'sougo',
URL: 'https://fanyi.sogou.com/reventondc/api/sogouTranslate',
PID: '',
KEY: '',
initParam: function () {
translateText = translateText.trim().replace(/\n/g, ',');
let salt = getSalt();
let src = SOGO_CONFIG.PID + translateText + salt + SOGO_CONFIG.KEY;
let sign = MD5(src);
let encodedTranslateText = encodeURI(translateText);
return "q=" + encodedTranslateText + "&pid=" + SOGO_CONFIG.PID + "&to=zh-CHS&from=auto&salt=" + salt + "&sign=" + sign;
},
parseResult(json) {
if (json.query) {
return json.translation;
} else {
return JSON.stringify(json);
}
}
};
const BAIDU_CONFIG = {
enable: true,
status: false,
COLOR: '#398bfb',
CODE: 'baidu',
URL: 'https://fanyi-api.baidu.com/api/trans/vip/translate',
PID: '',
KEY: '',
initParam: function () {
translateText = translateText.trim().replace(/\n/g, ',');
let salt = getSalt();
let src = BAIDU_CONFIG.PID + translateText + salt + BAIDU_CONFIG.KEY;
let sign = MD5(src);
let encodedTranslateText = encodeURI(translateText);
return `q=${encodedTranslateText}&appid=${BAIDU_CONFIG.PID}&to=zh&from=auto&salt=${salt}&sign=${sign}`;
},
parseResult(json) {
if (json.trans_result) {
if (json.trans_result[0].dst) {
let dst = '' + json.trans_result[0].dst;
return decodeURI(dst);
}
}
return JSON.stringify(json);
}
};
const GOOGLE_CONFIG = {
enable: true,
status: false,
COLOR: '#1fa463',
CODE: 'google',
URL: 'https://translate.google.cn/translate_a/single?client=gtx&dt=t&dt=bd&dj=1&source=input&hl=zh-CN&sl=auto&tl=zh-CN&',
initParam: function () {
translateText = translateText.trim().replace(/\n/g, ',');
let encodedTranslateText = encodeURI(translateText);
return "q=" + encodedTranslateText;
},
parseResult(json) {
let result = '';
console.log(json);
if (json) {
if (json.sentences) {
for (let item of json.sentences) {
result += item.trans;
}
}
if (json.dict) {
for (let item of json.dict) {
let terms = '';
for (let term of item.entry) {
terms += `
<span class="term">${term.word}
<span class="tooltiptext">score: ${term.score}<br/>reverse: ${term.reverse_translation}</span>
</span>&nbsp;
`;
}
result += `
<div class="google_dict">
<span class="base_form">${item.base_form}</span>
<span class="pos pos_${item.pos_enum}">: ${item.pos}</span>
<span class="terms">${terms}
</span>
</div>
`;
}
}
}
return result;
}
};
let transList = [SOGO_CONFIG, BAIDU_CONFIG, GOOGLE_CONFIG];
// 选择文本后展示的图标
let showIcon = document.createElement("div");
showIcon.id = "OnySakuraTranslateShowIcon";
showIcon.innerHTML = "译";
showIcon.style.display = 'none';
document.body.appendChild(showIcon);
// 样式
let div_style = document.createElement("style");
div_style.innerHTML = `
#OnySakuraTranslateShowIcon {
background-color: white;
border: #fd6848 solid 2px;
border-radius: 200px;
color: #fd6848;
box-sizing: border-box;
width: 30px;
height: 30px;
text-align: center;
line-height: 26px;
cursor: pointer;
position: fixed;
z-index: 30000;
}
#OnySakuraTranslateShowIcon:hover {
background-color: #fd6848;
color: white;
animation-duration: 1s;
}
#OnySakuraTranslateShowIcon:active {
border-color: white;
}
#OnySakuraTranslateDiv {
display: none;
background-color: #FFFAF6;
border: #fd6848 solid 2px;
border-radius: 10px;
padding: 5px;
margin:auto;
position: fixed;
z-index: 100000001;
}
.google_dict {
margin-left: 20px;
margin-top: 10px;
}
.google_dict .base_form {
font-size: 20px !important;
font-family: "Sarasa Term SC", mononoki, monospace;
}
.google_dict .term {
position: relative;
display: inline-block;
border-bottom: 1px dotted black;
}
.google_dict .term .tooltiptext {
visibility: hidden;
background-color: #fdc;
color: #555;
text-align: left;
padding: 5px;
border-radius: 5px;
position: absolute;
z-index: 1;
white-space: pre;
top: 200%;
left: 0%;
}
.google_dict .term:hover .tooltiptext {
visibility: visible;
}
/*.google_dict .term .tooltiptext::after {
content: " ";
position: absolute;
bottom: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent #fdc transparent;
}
*/
.google_dict .pos {
font-size: 10px;
font-style: italic;
}
.google_dict .pos_1 {
color: #369;
}
.google_dict .pos_2 {
color: #396;
}
.google_dict .pos_3 {
color: #639;
}
.google_dict .pos_4 {
color: #693;
}
.google_dict .pos_5 {
color: #936;
}
.google_dict .pos_6 {
color: #963;
}
`;
document.body.appendChild(div_style);
// 翻译框
let translateDiv = document.createElement("div");
translateDiv.id = "OnySakuraTranslateDiv";
document.body.appendChild(translateDiv);
function selectText() {
if (document.selection) {//For ie
return document.selection.createRange().text;
} else {
return window.getSelection().toString();
}
}
document.onmouseup = function (ev) {
ev = ev || window.event;
let left = ev.clientX, top = ev.clientY;
setTimeout(function () {
translateText = selectText();
if (translateText.length > 0) {
setTimeout(function () {
showIcon.style.display = 'block';
showIcon.style.left = left + 'px';
showIcon.style.top = top + 'px';
}, 100);
}
}, 200);
};
function strToJson(str) {
try {
return (new Function("return " + str))();
} catch (e) {
}
return str;
}
showIcon.onclick = function (ev) {
ev = ev || window.event;
let left = ev.clientX, top = ev.clientY;
let height = document.body.clientHeight, width = document.body.clientWidth;
translateDiv.style.display = "block";
if (left > parseInt(width) / 2) {
// 右
translateDiv.style.right = width - left + 'px';
translateDiv.style.left = '';
} else {
// 左
translateDiv.style.left = left + 'px';
translateDiv.style.right = '';
}
if (top > parseInt(height) / 2) {
// 下
translateDiv.style.bottom = height - top + 'px';
translateDiv.style.top = '';
} else {
// 上
translateDiv.style.top = top + 'px';
translateDiv.style.bottom = '';
}
let innerHtml = `
<div style="margin: 3px">
<span style="color: blueviolet">src: </span>
<span>${translateText}</span>
</div>
`;
for (let item of transList) {
if (item.enable) {
innerHtml += `
<div style="margin: 3px">
<span style="color: ${item.COLOR}">${item.CODE}: </span>
<span>{{result${item.CODE}}}</span>
</div>
`;
}
}
translateDiv.innerHTML = innerHtml;
translate();
};
function translate() {
let innerHTML = translateDiv.innerHTML;
for (let item of transList) {
if (item.enable) {
GM_xmlhttpRequest({
method: "POST",
url: item.URL,
data: item.initParam(),
headers: {
"Content-Type": "application/x-www-form-urlencoded;",
"Accept": "application/json"
},
onload: function (xhr) {
let d = strToJson(xhr.responseText);
if (xhr.readyState === 4 && xhr.status === 200) {
let result = item.parseResult(d);
innerHTML = innerHTML.replace('{{result' + item.CODE + '}}', result);
} else if (xhr.status !== 200) {
innerHTML = innerHTML.replace('{{result' + item.CODE + '}}', 'ERROR: ' + JSON.stringify(xhr));
}
translateDiv.innerHTML = innerHTML;
item.status = true;
let allFinish = true;
for (let item of transList) {
allFinish = allFinish && item.status;
}
if (allFinish) {
translateDiv.style.display = "block";
}
}
});
}
}
}
showIcon.onmouseup = function (ev) {
ev = ev || window.event;
ev.cancelBubble = true;
};
// 点击页面隐藏弹出框
document.onclick = function (ev) {
showIcon.style.display = 'none';
translateDiv.style.display = 'none';
};
// 阻止事件冒泡,防止点击翻译框后隐藏
translateDiv.onclick = function (ev) {
event.stopPropagation();
};
// 获取随机数字字符串
function getSalt() {
let salt = "";
for (let i = 0; i < 5; i++) salt += parseInt(Math.random() * 8);
return salt;
}
/**
* @return {string}
*/
var MD5 = function (string) {
function RotateLeft(lValue, iShiftBits) {
return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
}
function AddUnsigned(lX, lY) {
var lX4, lY4, lX8, lY8, lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
} else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
} else {
return (lResult ^ lX8 ^ lY8);
}
}
function F(x, y, z) {
return (x & y) | ((~x) & z);
}
function G(x, y, z) {
return (x & z) | (y & (~z));
}
function H(x, y, z) {
return (x ^ y ^ z);
}
function I(x, y, z) {
return (y ^ (x | (~z)));
}
function FF(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
}
function GG(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
}
function HH(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
}
function II(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
}
function ConvertToWordArray(string) {
var lWordCount;
var lMessageLength = string.length;
var lNumberOfWords_temp1 = lMessageLength + 8;
var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
var lWordArray = Array(lNumberOfWords - 1);
var lBytePosition = 0;
var lByteCount = 0;
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
return lWordArray;
}
function WordToHex(lValue) {
var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
for (lCount = 0; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
}
return WordToHexValue;
}
function Utf8Encode(string) {
string = string.replace(/\r\n/g, "\n");
let utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
let x = Array();
let k, AA, BB, CC, DD, a, b, c, d;
let S11 = 7, S12 = 12, S13 = 17, S14 = 22;
let S21 = 5, S22 = 9, S23 = 14, S24 = 20;
let S31 = 4, S32 = 11, S33 = 16, S34 = 23;
let S41 = 6, S42 = 10, S43 = 15, S44 = 21;
string = Utf8Encode(string);
x = ConvertToWordArray(string);
a = 0x67452301;
b = 0xEFCDAB89;
c = 0x98BADCFE;
d = 0x10325476;
for (k = 0; k < x.length; k += 16) {
AA = a;
BB = b;
CC = c;
DD = d;
a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
a = AddUnsigned(a, AA);
b = AddUnsigned(b, BB);
c = AddUnsigned(c, CC);
d = AddUnsigned(d, DD);
}
let temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
return temp.toLowerCase();
}
})();
@Alora1972
Copy link

ceived: from MW2PR2101CA0025.namprd21.prod.outlook.com (2603:10b6:302:1::38)
by IA1PR17MB6624.namprd17.prod.outlook.com (2603:10b6:208:3fe::7) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Mon, 3 Jul
2023 12:11:50 +0000
Received: from MW2NAM04FT031.eop-NAM04.prod.protection.outlook.com
(2603:10b6:302:1:cafe::6) by MW2PR2101CA0025.outlook.office365.com
(2603:10b6:302:1::38) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.14 via Frontend
Transport; Mon, 3 Jul 2023 12:11:50 +0000
Authentication-Results: spf=pass (sender IP is 209.85.128.171)
smtp.mailfrom=gmail.com; dkim=pass (signature was verified)
header.d=gmail.com;dmarc=pass action=none header.from=gmail.com;compauth=pass
reason=100
Received-SPF: Pass (protection.outlook.com: domain of gmail.com designates
209.85.128.171 as permitted sender) receiver=protection.outlook.com;
client-ip=209.85.128.171; helo=mail-yw1-f171.google.com; pr=C
Received: from mail-yw1-f171.google.com (209.85.128.171) by
MW2NAM04FT031.mail.protection.outlook.com (10.13.30.190) with Microsoft SMTP
Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.20.6565.18 via Frontend Transport; Mon, 3 Jul 2023 12:11:50 +0000
Received: by mail-yw1-f171.google.com with SMTP id 00721157ae682-56fff21c2ebso51734207b3.3
for <no-reply@neighborlysoftware.com>; Mon, 03 Jul 2023 05:11:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20221208; t=1688386309; x=1690978309;
h=to:subject:message-id:date:from:in-reply-to:references:mime-version
:from:to:cc:subject📅message-id:reply-to;
bh=Jw6WW0iN7S5+LpLOtqvpjW1ruZYukSgATQOd0khxn/Q=;
b=knna7N9xe3eVezCPzXvOu4tbqMkqNuxPXbpsImSkL8At+u++GS4TXJTwj3wNjgO9tY
My+n+hLdbYOnaTxtoPAPcP+gEiG3HnTnHJoTr/LQSCvt3T8mpFXeq86dK80lbpM/gVZu
zZYZExmYqq2GzHFlZqzwJyqmZ3DJ/MDl7P9KLy/ia1G/JiUHYy+rEokyMeJyeBSnX+bT
ze3rd1PJbu6SRC9iZ4nVzAc6LCE3eIf17HcF6pflpBRgJ4hIbci9bkoRKokWqqaodH0W
0PCt2M7H5nw1oKFx82TP9V+NrNXgR8lWwHOdMYlnubg01PrAmg5Nq01lMYtNPvZp8hzq
BJxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20221208; t=1688386309; x=1690978309;
h=to:subject:message-id:date:from:in-reply-to:references:mime-version
:x-gm-message-state:from:to:cc:subject📅message-id:reply-to;
bh=Jw6WW0iN7S5+LpLOtqvpjW1ruZYukSgATQOd0khxn/Q=;
b=KJV4S3h5gc4aZ876XM//cvcyxmMzk9m1XJ3UbOWq9vDjsT/CC2/5nspTC1t98k8epO
+Sa/dsdhQWJU8lAeY6rNK+eJbbwBKaJmDvPVaIuyfra6qZd8+M6GlEAbApJOX1Fr+Ky3
NdAoabqrbFqqmGs3wrZLEhB0No6MSY1YdjR3/RN2fp9t0T6cRcgZEYZJZ3V8Qpa8xFgI
5jFmEivr7uLBp9q4gDfU/qWTd8jTAXVGxMWOBdxon7Ta9hAIBRY+4P9xv/hiYWS3SIW/
zofvXW4kXfzDg5BB43QRZFBL2TIjnQn9kgMgdNo246KhUlejD5zOhpfPBjQhdVGBPrYh
mQrQ==
X-Gm-Message-State: ABy/qLYjC2BI/WQ6fGYINnIR/zvCDv5YcBVIYu/gWSNxVn+mpoa71igh
pR8goHgyhr0l4MFUaZ4kM9qBTLbr7ocW2JEMh6jN5AGYUT+7/A==
X-Google-Smtp-Source: APBJJlGoVHdzhrWUaqrYDY4KCJXlv2hq5MbHg8Boau6gw7RrO6bV1Y4GYVYlgIfD9k/FJzQaxdg0k5Jg3WukNJJ8zU8=
X-Received: by 2002:a81:a18d:0:b0:579:dde6:d32e with SMTP id
y135-20020a81a18d000000b00579dde6d32emr6827989ywg.28.1688386309157; Mon, 03
Jul 2023 05:11:49 -0700 (PDT)
MIME-Version: 1.0
References: eqA-4S1NSPusCSIj82vV7A@geopod-ismtpd-1-3
In-Reply-To: eqA-4S1NSPusCSIj82vV7A@geopod-ismtpd-1-3
From: Jennifer Meadows <jennifermeadows648@gmail.com>
Date: Mon, 3 Jul 2023 07:11:36 -0500
Message-ID: <CACDiCvM2ZrsWK7OvzQC+upp72YBAE48WrvvZwKQAvEvq5u=Y2Q@mail.gmail.com>
Subject: [EXTERNAL]Re: Neighborly Software: Emergency Rental Assistance
Alabama: You have 1 task due
To: Neighborly Software <no-reply@neighborlysoftware.com>
Content-Type: multipart/alternative; boundary="0000000000003377ac05ff9412df"
Return-Path: jennifermeadows648@gmail.com
X-EOPAttributedMessage: 0
X-EOPTenantAttributedMessage: 280e3afe-5dfb-4dd6-9d95-fa92aadbe216:0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW2NAM04FT031:EE_|IA1PR17MB6624:EE_
X-MS-Office365-Filtering-Correlation-Id: 3d535a4a-4b06-4403-d897-08db7bbeae5b
X-MS-Exchange-AtpMessageProperties: SA|SL
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?80LvISjc2tCQBb9abhOXVdyFIvdPfwEQew0x6tCAw9/ljJY8HxkDW5adMwNA?=
=?us-ascii?Q?xRo2i4bIu4+JEWp9yqXLGeYbqYZW9x0VH6cVDzBvBcv+KnF7ijF9nnqRUk+G?=
=?us-ascii?Q?9b3BIMVImL01Y6NAtBxtc652xFOMpUPgMeat+knVTsKzZvt+YzaLvw/twCpG?=
=?us-ascii?Q?0SHuckCnBoTQm8RVE8mb82oWnIE9jyIPprcGF91HY8TwSeM64prOcNairbmd?=
=?us-ascii?Q?4JgKhOLkL2tN8FrqUFilQQhN12ztxt0ciAHrWK49Ky/T+RFMob6oCtiUdnmr?=
=?us-ascii?Q?Vt0rL2l1Dj50aSxjImIIdRyMEY66UPvXM9gYqmvT852jZ2Sr1xdxRdngY9KH?=
=?us-ascii?Q?fZxeoVUT7Ncfvh7Tt21wGJHVfv9inb5mKzE2xgYuRI2ZMfDDqisSrwtM7Cjz?=
=?us-ascii?Q?jwQHoRU4YsXbLrP+Dui8hb8agl2o8a3nTBMDvtBTiQ7YNt9r6DxLn9OPfo4S?=
=?us-ascii?Q?HzKOe1TOvMsTE3jwkfaVv3/BhjCfCx+UzlzWzsQP3V8xzyOAUSSahAxVXQw+?=
=?us-ascii?Q?BA+lvRTcTaQ7nju8EJpQVFJnhG+bw5Xb1cD7P2KD+FFu0wAT3nATUwNBKmDK?=
=?us-ascii?Q?ujVrPVExVjed08nJCu0L8mV+7X0r+Ld1ExJj2tUsgj2BK5zAhDJbS6CFb+oH?=
=?us-ascii?Q?p8PXSXdw8pgrAeXI3lGTTfFPrPoqFyFfmSpmc3DCWbYt2QUT01YhhtReUywO?=
=?us-ascii?Q?l746maYqy1v1ADaE6z+4A5Ht69U48JAXmmdtO7zbu89hony5vmlwm7FM0vyD?=
=?us-ascii?Q?iFgdaMpile62iWspgm9XIUjN2N6XoXxKZS5ID3HQLd1JIy74axqnjBrDchk2?=
=?us-ascii?Q?NTV6RQ6XGmMkP/lFWqvU4yvv0kBpwxZ92VppCCRryyRhgDa8bOZA0ejRL94a?=
=?us-ascii?Q?LPeUL4SYNAJmggBC3arHOQddr1nNHdRRmMOF3w0rHsQZ1zFTIKfwUd1aopTa?=
=?us-ascii?Q?Q8pLPf5h5Ll5XiIfuOBWX9aAT8/4lfagk9X7POp+6SOWwoC/oI1A5maFqnaX?=
=?us-ascii?Q?312ubUTYbrPoumJKWVi5LG+0/l/UA4cL9/9+jzttL0oaX+55+Uiu4aSG1hfW?=
=?us-ascii?Q?PVJbwJhGd92J+bs2luLSBIS4tbp4ZOM1o17FEn5k7wRnxYrcXPENssIGQ+Sp?=
=?us-ascii?Q?4B67Tucnbly/E0BueGH7hxnqaV3Aco3ls9m0rCN7ZYoh3ZQ+69LDi/jnOL98?=
=?us-ascii?Q?s9/83BO79wA9OOA/gG/iBO2MrAH+Yy6al30QBimU/ay2ahA1CXzG7DBvFFjP?=
=?us-ascii?Q?ENg16G7COyXwpKHOwmLVnaQVwuhr9jSPOwMxiOTWjw3JwjSNFLQKazUjfaLJ?=
=?us-ascii?Q?jJcPQ+DtLcBj06i3rSpmALqcqh0M3NE6c/RUGkFbPoRX464/ONmpzgSI4NdP?=
=?us-ascii?Q?NZ94dEbdDzwfEiKKTOoG+KcE9wsaXEyt1kwBB/tWXxbFYGpD0z/p+G0rieLD?=
=?us-ascii?Q?MG+p79qCihTptCAmBt6pY9B4b7QOcTedPQBaEcAf28PMF2IOIHVbrZK1QnKa?=
=?us-ascii?Q?zSd1a0x4eLCSoO4DJ0+V09stI1cVUeQoOv1UG/BvcAAmUok1/lv6lcDTs9/W?=
=?us-ascii?Q?HvKHcYRcVohO7SHUmTNWP78BF6VSeDtInXKijmebkVQ3D3Jrq0WCo15T6VJp?=
=?us-ascii?Q?OhhTtHzXnEglnhcylC8+OzYtHD9rfjfsK2+JHY96KPAK6C4UaxWYf2eJDscL?=
=?us-ascii?Q?MSZz+exuX8pGENa6IWIRtXdmh+F1fwQ2dROnjyORsndfHJ/iaqEOPZkco9IM?=
=?us-ascii?Q?YAFI7uxB/TocX8aH/eNkFtg6rVeZVT3pwc2SH8Gdz3jLk/wzloe4zbv10uqG?=
=?us-ascii?Q?JFZRbOCi50BYlmSX2GybG60/Pa/p1emP6tI=3D?=
X-Forefront-Antispam-Report:
CIP:209.85.128.171;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-yw1-f171.google.com;PTR:mail-yw1-f171.google.com;CAT:NONE;SFTY:9.25;SFS:(13230028)(4636009)(451199021)(26005)(84300400001)(76482006)(6666004)(966005)(58800400005)(55446002)(86362001)(73392003)(7636003)(6916009)(83380400001)(356005)(336012)(7596003)(42186006)(82202003)(166002)(33964004)(5660300002)(1096003)(8676002)(22186003)(76236004)(76899015);DIR:INB;SFTY:9.25;
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2023 12:11:50.1845
(UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3d535a4a-4b06-4403-d897-08db7bbeae5b
X-MS-Exchange-CrossTenant-Id: 280e3afe-5dfb-4dd6-9d95-fa92aadbe216
X-MS-Exchange-CrossTenant-AuthSource:
MW2NAM04FT031.eop-NAM04.prod.protection.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: Internet
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR17MB6624

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment