<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta property="og:title" content="chicagocommunitygardens.org Revolutionize Cash Flow Management in Your Small Business -Free trial and Limited-time offer: Save 15% on monthly plans or 25% on annual plans."><meta property="og:type" content="website"><meta name="x-apple-disable-message-reformatting">
<style type="text/css">td>p{margin: 0; padding-top: 1rem; padding-bottom: 1rem;} a{color: black; text-decoration:none;}
</style>
<title>chicagocommunitygardens.org Revolutionize Cash Flow Management in Your Small Business -Free trial and Limited-time offer: Save 15% on monthly plans or 25% on annual plans.</title>
<script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script><script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script>
<script data-by="Web-eID extension" data-name="TokenSigning" type="text/javascript">(function pageScript() {
let hasDeprecationWarningDisplayed = false;
const eidPromises = {};
window.addEventListener("message", function (event) {
if (event.source !== window)
return;
if (event.data.src && (event.data.src === "background.js")) {
console.log("Page received: ");
console.log(event.data);
if (event.data.nonce) {
const p = eidPromises[event.data.nonce];
if (event.data.result === "ok") {
if (event.data.signature !== undefined) {
p.resolve({ hex: event.data.signature });
}
else if (event.data.version !== undefined) {
p.resolve(event.data.extension + "/" + event.data.version);
}
else if (event.data.cert !== undefined) {
p.resolve({ hex: event.data.cert });
}
else {
console.log("No idea how to handle message");
console.log(event.data);
}
}
else {
p.reject(new Error(event.data.result));
}
delete eidPromises[event.data.nonce];
}
else {
console.log("No nonce in event msg");
}
}
}, false);
function nonce() {
let val = "";
const hex = "abcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 16; i++)
val += hex.charAt(Math.floor(Math.random() * hex.length));
return val;
}
function messagePromise(msg) {
if (!hasDeprecationWarningDisplayed) {
console.warn("TokenSigning API is deprecated. Please consider switching to the new Web-eID library.");
hasDeprecationWarningDisplayed = true;
}
return new Promise(function (resolve, reject) {
window.postMessage(msg, "*");
eidPromises[msg.nonce] = { resolve, reject };
});
}
window.TokenSigning = class TokenSigning {
getCertificate(options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "CERT",
lang: options.lang,
filter: options.filter,
};
console.log("getCertificate()");
return messagePromise(msg);
}
sign(cert, hash, options) {
const msg = {
src: "page.js",
nonce: nonce(),
type: "SIGN",
cert: cert.hex,
hash: hash.hex,
hashtype: hash.type,
lang: options.lang,
info: options.info,
};
console.log("sign()");
return messagePromise(msg);
}
getVersion() {
const msg = {
src: "page.js",
nonce: nonce(),
type: "VERSION",
};
console.log("getVersion()");
return messagePromise(msg);
}
};
})();</script>
</head>
<body style="text-align: -webkit-center; font-family: sans-serif;">
<table style="margin: 0px auto;" width="100%">
<tbody>
<tr>
<td>
<div class="table-block-resizer hide react-draggable" style="touch-action: none; transform: translate(0px, 0px);">
<div class="block-resizer-circle hide" style="top: 20px; display: none;"> </div>
</div>
<table class="header-table" data-bg-size="cover" height="60px" style="background-color: rgb(247, 247, 247); padding-top: 40px; padding-bottom: 40px;" width="100%">
<tbody>
<tr style="text-align: center;">
<td id="template-header">
<div style="text-align: left;">
<div style="text-align: justify;">Hi chicagocommunitygardens.org<br />
</div>
<div style="text-align: justify;">My name is Alessandro and I represent X best world, company that promotes business solutions that can be from marketing to financial to<br />
<br />
facilitate their daily work.<br />
<br />
I am contacting you today to talk to you about a simple payment solution that helps small businesses like yours save time and money and increase<br />
<br />
cash flow.<br />
<br />
What is it? It's a super easy-to-use accounts payable tool with an intuitive dashboard where you can pay all your business invoices and receive<br />
<br />
payments from other businesses.<br />
<br />
Here's why it has been great for me:<br />
<br />
- Paying via ACH bank transfer is free. Or you can pay with your credit card (2.9% fee), even when cards aren't accepted*.<br />
<br />
- No more handwritten checks - you choose how you pay, no matter how your vendor wants to be paid.<br />
<br />
- Schedule a payment in advance to ensure you never miss a payment.<br />
<br />
- Connect your QuickBooks Online account for two-way sync between invoice pay and accounting.<br />
<br />
- Free Trial and Limited-time offer: Save 15% on monthly plans or 25% on annual plans.<br />
<br />
You can easily get more details here:<u><span style="color:#e74c3c;"> </span><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/cde10c1e9e5b707f5ba13b1d2dfc3a71eacebcba"><span style="color:#e74c3c;">https://affiliates.meliopayments.com/1kbgs6177oeo-sa6pgo</span></a></u><br />
<br />
And if you have any questions, there's a responsive support team available via chat and email. There is also an informative help center with lots of<br />
<br />
information.<br />
<br />
Download the app , and from there you can manage all your payments from your smartphone you can find the link here :<br />
<br />
<u><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/bd6e950f9dabc628c3d819803313226996f7d23c"><span style="color:#e74c3c;">https://affiliates.meliopayments.com/0sqy6z6w30b0-vrvp5</span></a></u><br />
<br />
*Subject to card network limitations<br />
<br />
<meta charset="UTF-8" /></div>
<p style="text-align: justify;"><strong>Build Your Credit with Kikoff – Exclusive Offer for Individuals!</strong></p>
<p style="text-align: justify;">This is an exclusive offer to help individuals achieve a better credit score. Join over a million users building their credit without a credit check.<br />
<br />
Open your account in minutes and see an average credit score increase of 28 points after the first month. Plus, enjoy our 45-day satisfaction<br />
<br />
guarantee! Click on the link and find out how <u><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/24744bafa17ccefe7754e39a2807f8d6bb38b2e7"><span style="color:#e74c3c;">kikoff.pxf.io/Y937EOnbestqtf</span></a></u></p>
<div style="text-align: justify;"><br />
Best regards,<br />
<br />
Alessandro<br />
<br />
info@bestqtf.org</div>
</div>
<div style="text-align: justify;"><br />
For other offers related to SEO, marketing tools, and more you can visit the site www.bestqtf.org</div>
</td>
</tr>
</tbody>
</table>
<div class="table-block-resizer hide react-draggable" style="touch-action: none; transform: translate(0px, 0px);">
<div class="block-resizer-circle hide" style="top: 3px; display: none; text-align: justify;"> </div>
</div>
<table class="preview-table" data-bg-size="cover" height="60px" style="background-color: rgb(255, 255, 255); padding-top: 23px; padding-bottom: 23px;" width="100%">
<tbody>
<tr style="text-align: center;">
<td id="template-body">
<table style="margin: auto;" width="600">
<tbody>
<tr class="start-style-tr" id="table-tr-withoutDisplay" style="min-height: 1px; padding: 2px 0px; width: 600px; margin-bottom: 0px;">
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<div class="table-block-resizer react-draggable hide" style="touch-action: none; transform: translate(0px, 0px);">
<div class="block-resizer-circle hide" style="top: 4px; display: none;"> </div>
</div>
<table class="footer-table" data-bg-size="cover" height="70px" style="background-color: rgb(51, 51, 51); padding-top: 24px; padding-bottom: 24px;" width="100%">
<tbody>
<tr style="text-align: center; margin: auto;">
<td class="template-footer">
<table style="margin: auto;" width="600">
<tbody>
<tr id="table-tr-withoutDisplay" style="min-height: 1px; padding: 2px 0px; width: 600px; margin-bottom: 0px; transition: all 0.2s ease 0s; top: 0px;">
</tr>
<tr id="table-tr-withoutDisplay" style="min-height: 1px; text-align: center; padding: 0px; width: 600px; margin-bottom: 0px; transition: all 0.2s ease 0s; top: 0px; background-color: transparent; font-weight: normal; font-style: normal;">
<td id="exist-template-footer-1720449131679" style="display: block; text-align: center; color: rgb(255, 255, 255);">
<p>Copyright © 2024 X Best World Ou, All rights reserved.</p>
<p style="text-align: center;"><strong>Our mailing address is:</strong></p>
<p style="text-align: center;">X Best World Ou<br />
12 Athri <br />
Tallin Harjumaa (Tallinn) 10151<br />
Estonia<br />
,<br />
info@bestqtf.com</p>
<p style="text-align: center;">Want to change how you receive these emails?</p>
<p style="text-align: center;">You can <a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/8ce782a4cd59239a76d926d21648c308fd7a09d9"><span style="color:#e74c3c;">update your preferences</span><span style="color:#e74c3c;"> </span></a>or <a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/449c5f2d436bcdfd0d304ab5f5ec545f2d3382f3"><span style="color:#e74c3c;">unsubscribe from this list</span></a><span style="color:#e74c3c;">.</span></p>
</td>
</tr>
<tr id="table-tr-withoutDisplay" style="min-height: 1px; text-align: center; padding: 0px; width: 600px; margin-bottom: 0px; transition: all 0.2s ease 0s; top: 0px; background-color: transparent; font-size: 13px; font-weight: normal; font-style: normal;">
<td align="center" iconstyle="socialItemColorIcon" id="exist-template-soc-1720449135008" style="display: block; color: rgb(245, 233, 233);">
<table style="padding: 9px; border-spacing: 0px; font-size: inherit; width: initial;">
<tbody>
<tr>
<td colspan="1" data-soc-type="facebook" id="soc-1111" style="background-color: transparent;">
<table style="font-size: inherit; width: auto">
<tbody>
<tr>
<td width="24"><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/78a22372c1bd6a822b753f410adadc7b234a8f35" style="text-decoration: none; pointer-events: auto;" target="_blank"><img alt="Facebook/" src="https://app.bestqtf.com/frontend/assets/cache/ext-email-template-builder-basic/static/media/color-facebook-128.png" style="width: 20px; margin-top: 5px; pointer-events: auto;" width="20" /></a></td>
<td>
<p style="max-width: 120px; color: rgb(245, 233, 233);"><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/7de9c41567306a694b39dd03e7767779cb81228a"><span style="color:#ffffff;">Facebook</span></a></p>
</td>
</tr>
</tbody>
</table>
</td>
<td colspan="1" data-soc-type="twitter" id="soc-222" style="background-color: transparent;">
<table style="font-size: inherit; width: auto">
<tbody>
<tr>
<td width="24"><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/7de9c41567306a694b39dd03e7767779cb81228a"><img alt="Twitter/" src="https://app.bestqtf.com/frontend/assets/cache/ext-email-template-builder-basic/static/media/color-twitter-128.png" style="width: 20px; margin-top: 5px; pointer-events: auto;" width="20" /></a></td>
<td>
<p style="max-width: 120px; color: rgb(245, 233, 233);"><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/7c5d688cdec133c104d011f3bdebedf75d202c96"><span style="color:#ffffff;">Twitter</span></a></p>
</td>
</tr>
</tbody>
</table>
</td>
<td colspan="1" data-soc-type="linkedin" id="soc-333" style="background-color: transparent;">
<table style="font-size: inherit; width: auto">
<tbody>
<tr>
<td width="24"><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/e4156d6478e6065ba81e52ebddf04f43487dbccd" style="text-decoration: none; pointer-events: auto;" target="_blank"><img alt="LinkedIn/" src="https://app.bestqtf.com/frontend/assets/cache/ext-email-template-builder-basic/static/media/color-linkedin-128.png" style="width: 20px; margin-top: 5px; pointer-events: auto;" width="20" /></a></td>
<td>
<p style="max-width: 120px; color: rgb(245, 233, 233);"><a href="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-url/os163138r57d2/cf06b989afc1169d7928eed15b6e050ab17cd389"><span style="color:#ffffff;">LinkedIn</span></a></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<img width="1" height="1" src="https://app.bestqtf.com/campaigns/cr322mjg7p6ba/track-opening/os163138r57d2" alt="" />
</body>
</html>