Skip to content

Instantly share code, notes, and snippets.

@AngeloD2022
Last active December 28, 2024 10:57
Show Gist options
  • Select an option

  • Save AngeloD2022/fc105f77e999c024dff937f792875507 to your computer and use it in GitHub Desktop.

Select an option

Save AngeloD2022/fc105f77e999c024dff937f792875507 to your computer and use it in GitHub Desktop.
Found inside iCloud passwords chrome extension.
var pwlog = void 0,
pwerror = void 0;
function isStringEmpty(e) {
return !e || 0 === e.length
}
function urlFromURLString(e) {
try {
return new URL(e)
} catch {
return null
}
}
function humanReadableFormType(e) {
switch (e) {
case WBSAutoFillFormTypeUndetermined:
return "Undetermined";
case WBSAutoFillFormTypeAutoFillableStandard:
return "AutoFillable:Standard";
case WBSAutoFillFormTypeNonAutoFillable:
return "NonAutoFillable";
case WBSAutoFillFormTypeAutoFillableLogin:
return "AutoFillable:Login";
case WBSAutoFillFormTypeNewAccount:
return "NewAccount";
case WBSAutoFillFormTypeChangePassword:
return "ChangePassword";
case WBSAutoFillFormTypeFoundTOTPURI:
return "FoundTOTPUri"
}
return "Unrecognized"
}
function domainsForDisplayFromUsernamesAndDomains(e, t) {
const s = e.length;
let a = t.map((function(e) {
return e.replace(/^(www|m)\./, "")
})),
n = [];
for (var r = 0; r < s; r++) n.push([e[r], a[r]]);
for (r = 0; r < s; r++) {
let e = [];
for (var o = r + 1; o < s; o++) n[r].join("\n") === n[o].join("\n") && (e.length || e.push(r), e.push(o));
for (let s of e) a[s] = t[s]
}
return a
}
function urlIsBrowserURL(e) {
const t = e.protocol;
return "chrome:" === t || "edge:" === t || "about:" == t
}
function isExtensionContextInvalidatedError(e) {
return "Extension context invalidated." === e.message
}
function capabilitiesDeclaresMacOS(e) {
try {
return "macos" === e.operatingSystem.name
} catch {
return !1
}
}
class Localizer {
static configureDocumentElementForLanguage(e, t) {
switch (t) {
case "he":
case "ar":
case "fa":
e.setAttribute("dir", "rtl"), e.setAttribute("lang", t)
}
}
#e = {};
constructor(e) {
e && (this.#e = e.operatingSystem)
}
getMessage(e, t, s) {
const a = this.messageNamesToTry(e);
for (let e of a) {
let a;
try {
a = chrome.i18n.getMessage(e, t, s)
} catch {
a = chrome.i18n.getMessage(e, t)
}
if (a) return a
}
return ""
}
messageNamesToTry(e) {
let t = [];
const s = this.#e,
a = s ? s.name : void 0,
n = s ? s.majorVersion : void 0,
r = s ? s.minorVersion : void 0,
o = void 0 !== n;
return a && o && void 0 !== r && t.push(`${e}_${a}_${n}_${r}`), a && o && t.push(`${e}_${a}_${n}`), a ? t.push(`${e}_${a}`) : t.push(`${e}_${this.#t}`), t.push(e), t
}
get #t() {
return navigator.platform.startsWith("Mac") ? "macos" : "windows"
}
}
class ExtensionSettings {
#s = !1;
#a = !0;
#n = !0;
eventTarget = new EventTarget;
constructor(e = !1) {
this.#s = e, this.#r(), this.#o()
}
get enableInPageAutoFill() {
return this.#a
}
set enableInPageAutoFill(e) {
this.#a = e, this.#i()
}
get allowExtensionToControlAutoFillSettings() {
return this.#n
}
set allowExtensionToControlAutoFillSettings(e) {
this.#n = e, this.#c().then(this.#i.bind(this))
}
#c() {
return this.#n ? this.attemptToControlBrowserAutoFillSettings() : this.clearControlOfBrowserAutoFillSettings()
}
async attemptToControlBrowserAutoFillSettings() {
if (this.#s) throw new Error("This Settings instance does not allow writing browser settings");
const e = await Promise.allSettled([this.#l(chrome.privacy.services.passwordSavingEnabled, !1), this.#l(chrome.privacy.services.autofillCreditCardEnabled, !1), this.#l(chrome.privacy.services.autofillAddressEnabled, !1)]);
return this.#d(), e
}
async clearControlOfBrowserAutoFillSettings() {
if (this.#s) throw new Error("This Settings instance does not allow writing browser settings");
const e = await Promise.allSettled([this.#m(chrome.privacy.services.passwordSavingEnabled), this.#m(chrome.privacy.services.autofillCreditCardEnabled), this.#m(chrome.privacy.services.autofillAddressEnabled)]);
return this.#d(), e
}
#r() {
let e = new Promise((e => {
chrome.storage.sync.get({
enableInPageAutoFill: !0,
allowExtensionToControlAutoFillSettings: !0
}, (t => {
this.#a = t.enableInPageAutoFill, this.#n = t.allowExtensionToControlAutoFillSettings, e()
}))
}));
return this.#s || (e = e.then(this.#c.bind(this))), e.then(this.#d.bind(this))
}
#i() {
return new Promise((e => {
chrome.storage.sync.set({
enableInPageAutoFill: this.#a,
allowExtensionToControlAutoFillSettings: this.#n
}, e)
})).then(this.#d.bind(this))
}
#o() {
this.#s || (chrome.privacy.services.passwordSavingEnabled && chrome.privacy.services.passwordSavingEnabled.onChange.addListener((e => {
this.#d()
})), chrome.privacy.services.autofillCreditCardEnabled && chrome.privacy.services.autofillCreditCardEnabled.onChange.addListener((e => {
this.#d()
})), chrome.privacy.services.autofillAddressEnabled && chrome.privacy.services.autofillAddressEnabled.onChange.addListener((e => {
this.#d()
})))
}
#d() {
const e = new CustomEvent("settingsChanged", {
detail: {
enableInPageAutoFill: this.#a
}
});
this.eventTarget.dispatchEvent(e)
}
async #l(e, t) {
let s;
try {
s = await this.#u(e)
} catch (e) {
return
}
if (s) {
if (s.value === t) return {
details: s,
newValue: t
};
try {
s = await e.set({
value: t
})
} catch (e) {
return
}
return {
details: s,
newValue: t
}
}
}
async #u(e) {
if (!e) throw new Error(`Unable to get ${e} setting.`);
const t = await e.get({});
if ("not_controllable" === t.levelOfControl) throw new Error(`Cannot control ${e} setting.`);
return t
}
async #m(e) {
if (!e) throw new Error(`Unable to clear browser setting: ${e}.`);
await e.clear({})
}
}
const ErrCodes = {
ErrSuccess: "Success",
InvalidMessage: "InvalidMessage",
UnexpectedMessage: "UnexpectedMessage",
InvalidSyntax: "InvalidSyntax",
InvalidSessionKey: "InvalidSessionKey",
CryptoError: "CryptoError",
InvalidUserName: "InvalidUserName"
};
class SecretSessionError extends Error {
constructor(e, t = null) {
super(t), this.code = e
}
}
const SecretSessionVersion = {
SRPWithOldVerification: 0,
SRPWithRFCVerification: 1
},
scriptVersion = "1.0",
appVersion = "1.0",
MSGTypes = {
MSG0: 0,
MSG1: 1,
MSG2: 2,
MSG3: 3
};
SecretSession = function(e) {
this.shouldUseBase64 = !1, e.shouldUseBase64 && (this.shouldUseBase64 = e.shouldUseBase64), this.protocolVersion = SecretSessionVersion.SRPWithOldVerification, e.secretSessionVersion && (this.protocolVersion = e.secretSessionVersion), this.grp = sjcl.keyexchange.srp.knownGroup(3072), this.keyLen = 128, this.tagLen = 128, this.setUpSRP()
}, SecretSession.prototype = {
createSMSG: function(e) {
if ("object" == typeof e) try {
e = JSON.stringify(e)
} catch (e) {
return ErrCodes.InvalidMessage
}
const t = sjcl.codec.utf8String.toBits(e),
s = this.encrypt(t);
if ("string" == typeof s) return s;
let a = null;
try {
a = JSON.stringify({
TID: this.bitsToString(this.I.toBits()),
SDATA: this.bitsToString(s, !1)
})
} catch (e) {
return ErrCodes.InvalidMessage
}
return a
},
parseSMSG: function(e) {
let t = e;
if ("string" == typeof t) try {
t = JSON.parse(e)
} catch (t) {
throw new SecretSessionError(ErrCodes.InvalidSyntax, `Unable to decode SMSG from string: ${t} ${e}`)
}
if ("string" != typeof t.SDATA) throw new SecretSessionError(ErrCodes.InvalidMessage, "Missing or invalid SDATA field in SMSG message.");
if ("string" != typeof t.TID) throw new SecretSessionError(ErrCodes.InvalidUserName, "Missing or invalid 'TID' field in SMSG object.");
const s = sjcl.bn.fromBits(this.stringToBits(t.TID));
if (!this.I.equals(s)) throw new SecretSessionError(ErrCodes.InvalidUserName, "Received SMSG message meant for another session.");
return sjcl.codec.utf8String.fromBits(this.decrypt(this.stringToBits(t.SDATA)))
},
setPin: function(e) {
this.P = e
},
stringToBase64: function(e) {
let t = sjcl.codec.utf8String.toBits(e);
return sjcl.codec.base64.fromBits(t, !1, !1)
},
bitsToString: function(e, t = !0) {
return this.shouldUseBase64 ? sjcl.codec.base64.fromBits(e) : (t ? "0x" : "") + sjcl.codec.hex.fromBits(e)
},
stringToBits: function(e) {
return this.shouldUseBase64 ? sjcl.codec.base64.toBits(e) : sjcl.codec.hex.toBits(e)
},
setUpSRP: function() {
this.I = sjcl.bn.fromBits(this._randomWords(4)), this.a = sjcl.bn.fromBits(this._randomWords(8)), this.A = this.grp.g.powermod(this.a, this.grp.N)
},
currProtocols: function() {
return [SecretSessionVersion.SRPWithOldVerification, SecretSessionVersion.SRPWithRFCVerification]
},
initialMessage: function() {
this.expectedMessage = MSGTypes.MSG1;
let e = null;
try {
e = JSON.stringify({
TID: this.bitsToString(this.I.toBits()),
MSG: 0,
A: this.bitsToString(this.A.toBits()),
VER: "1.0",
PROTO: this.currProtocols()
})
} catch (e) {
return null
}
return this.stringToBase64(e)
},
_padToModulusLength: function(e) {
e = e.replace(/^0x/, "");
const t = 2 * (sjcl.bitArray.bitLength(this.grp.N.toBits()) + 7 >> 3) - e.length;
if (0 === t) return e;
return "0".repeat(t) + e
},
processMessage: function(e) {
const t = sjcl.codec.utf8String.fromBits(sjcl.codec.base64.toBits(e));
let s = null;
try {
s = JSON.parse(t)
} catch (e) {
throw new SecretSessionError(ErrCodes.InvalidMessage, `Unable to parse JSON message: ${e}`)
}
if ("string" != typeof s.TID) throw new SecretSessionError(ErrCodes.InvalidMessage, "Missing or invalid 'TID' field in PAKE message.");
let a = sjcl.bn.fromBits(this.stringToBits(s.TID));
if (!this.I.equals(a)) throw new SecretSessionError(ErrCodes.UnexpectedMessage, "Unexpected message");
if (!s.MSG) throw new SecretSessionError(ErrCodes.InvalidMessage, "Missing 'MSG' field in PAKE message.");
const n = parseInt(s.MSG, 10);
if (this.expectedMessage !== n) throw new SecretSessionError(ErrCodes.UnexpectedMessage, `Received Message ${message.MSG}, but expected Message ${this.expectedMessage} `);
let r = null;
if (n === MSGTypes.MSG1) {
var o = SecretSessionVersion.SRPWithOldVerification;
"number" == typeof s.PROTO && (o = s.PROTO, Object.values(SecretSessionVersion).includes(o) || (o = SecretSessionVersion.SRPWithOldVerification)), this.protocolVersion = o, r = this.processMessage1(s)
} else n === MSGTypes.MSG3 && (r = this.processMessage3(s));
return r
},
createSessionKey: function(e, t) {
const s = sjcl.hash.sha256.hash,
a = this._calculateX(e, this.bitsToString(this.I.toBits()), this.P, s);
this.v = this._calculateVerifier(this.grp.g, a, this.grp.N);
const n = this.A.toString(),
r = t.toString(),
o = this._padToModulusLength(n).concat(this._padToModulusLength(r)),
i = sjcl.bn.fromBits(s(sjcl.codec.hex.toBits(o))),
c = this.a.add(i.mul(a)),
l = this.grp.N.toString() + this._padToModulusLength(this.grp.g.toString()),
d = sjcl.bn.fromBits(s(sjcl.codec.hex.toBits(l))).mulmod(this.v, this.grp.N);
return s(t.sub(d).powermod(c, this.grp.N).toBits())
},
_calculateX: function(e, t, s, a) {
const n = a(t + ":" + s);
return sjcl.bn.fromBits(a(e.concat(n)))
},
_calculateVerifier: function(e, t, s) {
return e.powermod(t, s)
},
_calculateM: function(e, t, s) {
const a = sjcl.hash.sha256.hash;
let n = a(this.grp.N.toBits()),
r = a(sjcl.codec.hex.toBits(this._padToModulusLength(this.grp.g.toString())));
const o = sjcl.bitArray.bitLength(n) / 32;
for (let e = 0; e < o; ++e) n[e] = n[e] ^ r[e];
let i = a(this.bitsToString(this.I.toBits())),
c = new sjcl.hash.sha256;
c.update(n), c.update(i), c.update(e), c.update(this.A.toBits()), c.update(t.toBits()), c.update(s);
let l = c.finalize();
return c = new sjcl.hash.sha256, c.update(this.A.toBits()), c.update(l), c.update(s), this.hamk = c.finalize(), l
},
processMessage1: function(e) {
if ("string" != typeof e.s || "string" != typeof e.B) throw new SecretSessionError(ErrCodes.InvalidMessage, "Message 1 is missing some required keys.");
e.VER && (this.appVer = e.VER);
const t = this.stringToBits(e.s),
s = sjcl.bn.fromBits(this.stringToBits(e.B));
let a = new sjcl.bn(1);
if (0 == s.mulmod(a, this.grp.N)) throw new SecretSessionError(ErrCodes.CryptoError, "B.mulmod error");
const n = this.createSessionKey(t, s);
this.encKey = sjcl.bitArray.bitSlice(n, 0, this.keyLen), this.expectedMessage = MSGTypes.MSG3;
let r = {
TID: this.bitsToString(this.I.toBits()),
MSG: 2
};
switch (this.protocolVersion) {
case SecretSessionVersion.SRPWithRFCVerification:
r.M = this.bitsToString(this._calculateM(t, s, n), !1);
break;
case SecretSessionVersion.SRPWithOldVerification:
const e = this.shouldUseBase64 ? this.v.toBits() : sjcl.codec.utf8String.toBits(this.v.toString()),
a = this.encrypt(e);
r.v = this.bitsToString(a, !1);
break;
default:
throw new SecretSessionError(ErrCodes.UnexpectedMessage, `Unknown protocol version ${this.protocolVersion}`)
}
let o = null;
try {
o = JSON.stringify(r)
} catch (e) {
throw new SecretSessionError(ErrCodes.InvalidMessage, `Error encoding Message 2 to string:${e}`)
}
return this.stringToBase64(o)
},
processMessage3: function(e) {
let t = ErrCodes.ErrSuccess,
s = "";
if (0 !== e.ErrCode) s = `Message 3 contained an error: ${e.ErrCode}`, t = ErrCodes.InvalidMessage;
else switch (this.protocolVersion) {
case SecretSessionVersion.SRPWithRFCVerification:
if (e.HAMK) {
const a = this.stringToBits(e.HAMK);
sjcl.bitArray.equal(a, this.hamk) || (s = "Failed to verify server data.", this.msgExp = MSGTypes.MSG1, t = ErrCodes.InvalidSessionKey)
} else s = `Message 3 does not contain necessary data:${e.ErrCode}`, t = ErrCodes.InvalidMessage;
break;
case SecretSessionVersion.SRPWithOldVerification:
break;
default:
t = ErrCode.UnexpectedMessage, s = `Unknown SecretSessionVersion ${this.protocolVersion}.`
}
if (t != ErrCodes.ErrSuccess) throw this.sessionKey = null, this.expectedMessage = MSGTypes.MSG1, new SecretSessionError(t, s);
return t === ErrCodes.ErrSuccess
},
encrypt: function(e) {
if (!this.encKey) throw new SecretSessionError(ErrCodes.InvalidSessionKey, "Called encrypt() without a session key");
const t = new sjcl.cipher.aes(this.encKey),
s = this._randomWords(4);
let a = null;
try {
a = sjcl.mode.gcm.encrypt(t, e, s)
} catch (e) {
throw new SecretSessionError(ErrCodes.CryptoError, e.message)
}
return sjcl.bitArray.concat(a, s)
},
decrypt: function(e) {
if (!this.encKey) throw new SecretSessionError(ErrCodes.InvalidSessionKey, "Called decrypt() without a session key!");
const t = new sjcl.cipher.aes(this.encKey),
s = sjcl.bitArray.bitSlice(e, 0, this.keyLen),
a = sjcl.bitArray.bitSlice(e, this.keyLen);
let n = null;
try {
n = sjcl.mode.gcm.decrypt(t, a, s)
} catch (e) {
throw new SecretSessionError(ErrCodes.CryptoError, `Exception while decrypting message. ${e}`)
}
return n
},
_randomWords: function(e) {
const t = new Int32Array(e);
return self.crypto.getRandomValues(t), Array.from(t)
}
};
const ContextState = {
IncompatibleOS: "IncompatibleOS",
NotInSession: "NotInSession",
NativeSupportNotInstalled: "NativeSupportNotInstalled",
CheckEngine: "CheckEngine",
ChallengeSent: "ChallengeSent",
MSG1Set: "MSG1Set",
SessionKeySet: "SessionKeySet"
},
DataState = {
Initial: "Initial",
Frame0Processed: "Frame0Processed",
DataProcessed: "DataProcessed"
},
RememberIC = {
NoValueSet: "NoValueSet",
UnknownPage: "UnknownPage",
DoNotRemember: "DoNotRemember",
RememberLoginAndPassword: "RememberLoginAndPassword"
},
WBSAutoFillFormTypeUndetermined = 0,
WBSAutoFillFormTypeAutoFillableStandard = 1,
WBSAutoFillFormTypeNonAutoFillable = 2,
WBSAutoFillFormTypeAutoFillableLogin = 3,
WBSAutoFillFormTypeNewAccount = 4,
WBSAutoFillFormTypeChangePassword = 5,
WBSAutoFillFormTypeFoundTOTPURI = 6;
class FrameDoesNotExistError extends Error {
frame;
constructor(e) {
super(`Frame ${e.id} does not exist in tab ${e.tab.id}`), this.frame = e
}
}
class FrameIsBrowserFrameError extends Error {
frame;
constructor(e) {
super(`Frame ${e.id} in tab ${e.tab.id} is a browser frame.`), this.frame = e
}
}
class ContentScriptNotSetUpInFrame extends Error {
frame;
constructor(e) {
super(`Frame ${e.id} in tab ${e.tab.id} does not have active content script.`), this.frame = e
}
}
class PromiseFulfillment {
resolve;
reject;
constructor(e, t) {
this.resolve = e, this.reject = t
}
}
class DelayedMessageSender {
static defaultDelayMS = 50;
delayMS;
messageName;
#g = null;
#p = [];
#h = null;
constructor(e, t = DelayedMessageSender.defaultDelayMS) {
this.messageName = e, this.delayMS = t
}
get dateOfLastSentMessage() {
return this.#h
}
enqueueRequest(e, t) {
return new Promise(((s, a) => {
this.#p.push(new PromiseFulfillment(s, a)), this.#g && (clearTimeout(this.#g), this.#g = null), this.#g = setTimeout((async () => {
const s = e.tab.id,
a = e.id;
let n;
try {
n = await this.#S(s, a, this.messageName, t)
} catch (t) {
let s = t;
return t.message.includes("Receiving end does not exist.") && (s = new FrameDoesNotExistError(e)), this.#h = null, void this.#f(null, s)
} finally {
this.#g = null
}
this.#h = new Date, this.#f(n)
}).bind(this), this.delayMS)
}))
}
cancelPendingRequests() {
this.#g && (clearTimeout(this.#g), this.#g = null), this.#f(null, new Error("Cancelled"))
}
reset() {
this.cancelPendingRequests(), this.#h = null
}
#S(e, t, s, a) {
let n = {
subject: s
};
return a && (n = {
...n,
...a
}), chrome.tabs.sendMessage(e, n, {
frameId: t
})
}
#f(e, t = null) {
for (; this.#p.length;) {
const s = this.#p.shift();
t ? s.reject(t) : s.resolve(e)
}
}
}
class Frame {
static delayForSettingUpContentScriptAfterFrameCreationMS = 50;
static delayForRunningHeuristicsAfterFrameUpdateMS = 50;
id;
tab;
url;
state;
#b = new DelayedMessageSender("setUp", Frame.delayForSettingUpContentScriptAfterFrameCreationMS);
#C = new DelayedMessageSender("runFormMetadataHeuristics", Frame.delayForRunningHeuristicsAfterFrameUpdateMS);
constructor(e, t) {
this.id = e, this.tab = t
}
get isBrowserFrame() {
const e = this.url;
return !!e && urlIsBrowserURL(e)
}
get hasCompletedLoad() {
return "complete" === this.state
}
get hasSetUpContentScript() {
return !!this.#b.dateOfLastSentMessage
}
prepareForRemoval() {
this.#b.cancelPendingRequests(), this.#C.cancelPendingRequests()
}
updateWithDetails(e, t) {
this.state = e;
const s = t.url;
s && (this.url = urlFromURLString(s))
}
setUpContentScript(e) {
return this.isBrowserFrame ? Promise.reject(new FrameIsBrowserFrameError(this)) : (e = !!e, this.#b.enqueueRequest(this, {
shouldEnableQRCodeScanning: e
}))
}
async enableQRCodeScanning(e) {
return this.hasSetUpContentScript ? this.#S("enableQRCodeScanner", {
isEnabled: e
}) : Promise.reject(new ContentScriptNotSetUpInFrame(this))
}
runHeuristics() {
return this.isBrowserFrame ? Promise.reject(new FrameIsBrowserFrameError(this)) : this.hasSetUpContentScript ? this.#C.enqueueRequest(this) : Promise.reject(new Error("Cannot run metadata heuristics before setting up content script"))
}
readyToReceiveMessages() {
return this.#b.reset(), this.setUpContentScript(!0)
}
#S(e, t) {
let s = {
subject: e
};
return t && (s = {
...s,
...t
}), chrome.tabs.sendMessage(this.tab.id, s, {
frameId: this.id
})
}
}
class Tab {
static delayForSettingUpFrameContentScript = 50;
static delayForCleaningUpFrames = 2e3;
static enableDeferredFrameCleanup = !0;
id;
state;
framesById = new Map;
url;
#T = null;
constructor(e) {
this.id = e
}
get allFrames() {
return chrome.webNavigation.getAllFrames({
tabId: this.id
})
}
async injectContentScripts(e = !0) {
if (!this.url) return;
const t = this.url.protocol;
if ("http:" !== t && "https:" !== t) return;
const s = chrome.runtime.getManifest().content_scripts[0],
a = this.id;
await chrome.scripting.executeScript({
target: {
tabId: a,
allFrames: e
},
files: s.js
});
for (const e of this.framesById.values()) try {
await e.setUpContentScript()
} catch (e) {
if (e instanceof FrameIsBrowserFrameError) return
}
}
prepareForRemoval() {
for (const e of this.framesById.values()) e.prepareForRemoval()
}
activated(e) {
this.#I(), chrome.contextMenus && chrome.contextMenus.removeAll()
}
update(e, t) {
this.#I(), this.state = t.status, e ? (this.state = e.status, "loading" === e.status && (this.url = urlFromURLString(e.url))) : (this.state = t.status, this.url = urlFromURLString(t.url))
}
addNewFrame(e, t, s = null) {
this.#I();
const a = t.frameId,
n = new Frame(a, this);
this.framesById.set(a, n), this.frameUpdated(e, a, s, t)
}
async frameUpdated(e, t, s, a) {
this.#I();
const n = this.ensureFrameExists(t);
if (n.updateWithDetails(s, a), n.hasCompletedLoad) try {
n.hasSetUpContentScript ? await n.runHeuristics() : await n.setUpContentScript(e.shouldEnableQRCodeScanning)
} catch (e) {
if (!(e instanceof FrameDoesNotExistError)) {
if (e instanceof FrameIsBrowserFrameError) return;
throw e
} {
const t = e.frameId;
if (!this.framesById.get(t)) return;
let s = await chrome.webNavigation.getFrame({
tabId: this.id,
frameId: t
});
s || (s.prepareForRemoval(), this.framesById.delete(t))
}
}
}
async frameCompleted(e, t, s) {
try {
await this.frameUpdated(e, t, "complete", s)
} catch (e) {}
}
frameIsReadyToReceiveMessages(e) {
return this.ensureFrameExists(e).readyToReceiveMessages()
}
ensureFrameExists(e) {
let t = this.framesById.get(e);
return t || (t = new Frame(e, this), this.framesById.set(e, t)), t
}
#I() {
Tab.enableDeferredFrameCleanup && (this.#T && (clearTimeout(this.#T), this.#T = null), this.#T = setTimeout((async () => {
let e = new Map;
const t = await this.allFrames,
s = new Set((t || []).map((e => e.frameId)));
if (!s.size && !this.framesById.size) return;
for (const [t, a] of this.framesById) s.has(t) && e.set(t, a);
this.framesById.size, e.size;
this.framesById = e, this.#T = null
}).bind(this), Tab.delayForCleaningUpFrames))
}
}
class TabMonitor {
tabsById = new Map;
#w;
#y;
constructor() {
this.#A(), this.#v()
}
get extensionIsPaired() {
return this.#w
}
set extensionIsPaired(e) {
this.#w = e, this.#F()
}
get nativeAppSupportsQRCodeScanning() {
return this.#y
}
set nativeAppSupportsQRCodeScanning(e) {
this.#y = e, this.#F()
}
get shouldEnableQRCodeScanning() {
return this.#w && this.#y
}
get #M() {
return [...this.tabsById.values()].flatMap((e => [...e.framesById.values()]))
}
#F() {
const e = this.shouldEnableQRCodeScanning;
return Promise.allSettled(this.#M.map((t => t.enableQRCodeScanning(e).catch((e => {})))))
}
async #A() {
const e = await chrome.tabs.query({});
for (const t of e) {
const e = t.id,
s = new Tab(e);
s.update(null, t), this.tabsById.set(e, s);
const a = await chrome.webNavigation.getAllFrames({
tabId: e
});
for (const e of a) {
if (void 0 === e.frameId) break;
s.addNewFrame(this, e, t.status)
}
}
}
#v() {
chrome.tabs.onCreated.addListener((e => {
const t = e.id;
this.tabsById.set(t, new Tab(t))
})), chrome.tabs.onUpdated.addListener(((e, t, s) => {
this.ensureTabExists(e).update(t, s)
})), chrome.tabs.onActivated.addListener((e => {
this.ensureTabExists(e.tabId).activated(e)
})), chrome.tabs.onRemoved.addListener(((e, t) => {
this.tabsById.delete(e)
})), chrome.webNavigation.onBeforeNavigate.addListener((e => {
const t = e.tabId;
this.ensureTabExists(t).addNewFrame(this, e)
})), chrome.webNavigation.onCompleted.addListener((async e => {
const t = e.tabId,
s = e.frameId,
a = this.ensureTabExists(t);
try {
await a.frameCompleted(this, s, e)
} catch (e) {}
})), chrome.webNavigation.onHistoryStateUpdated.addListener((async e => {
const t = e.tabId,
s = e.frameId,
a = this.ensureTabExists(t);
try {
await a.frameUpdated(this, s, "updated", e)
} catch (e) {}
})), chrome.webNavigation.onTabReplaced.addListener((e => {
const t = e.replacedTabId;
this.tabsById.get(t).prepareForRemoval(), this.tabsById.delete(t);
const s = e.tabId;
this.tabsById.set(s, new Tab(s))
}))
}
async performInitialSetup() {
for (const e of this.tabsById.values()) await e.injectContentScripts()
}
ensureTabExists(e) {
let t = this.tabsById.get(e);
return t || (t = new Tab(e), this.tabsById.set(e, t)), t
}
frameIsReadyToReceiveMessages(e, t) {
return this.ensureTabExists(e).frameIsReadyToReceiveMessages(t)
}
}
"function" == typeof importScripts && importScripts("/sjcl.js");
const CmdEndOp = 0,
CmdUnused1 = 1,
CmdChallengePIN = 2,
CmdSetIconNTitle = 3,
CmdGetLoginNames4URL = 4,
CmdGetPassword4LoginName = 5,
CmdSetPassword4LoginName_URL = 6,
CmdNewAccount4URL = 7,
CmdTabEvent = 8,
CmdPasswordsDisabled = 9,
CmdReloginNeeded = 10,
CmdLaunchiCP = 11,
CmdiCPStateChange = 12,
CmdLaunchPasswordsApp = 13,
CmdHello = 14,
CmdOneTimeCodeAvailable = 15,
CmdGetOneTimeCodes = 16,
CmdDidFillOneTimeCode = 17,
CmdSetUpTOTPGenerator = 18,
CmdOpenURLInSafari = 1984,
QueryStatus = {
Success: 0,
NoResults: 3
};
function cmd2string(e) {
switch (e) {
case 0:
return "CmdEndOp";
case 1:
return "CmdUnused1";
case 2:
return "CmdChallengePIN";
case 3:
return "CmdSetIconNTitle";
case 4:
return "CmdGetLoginNames4URL";
case 5:
return "CmdGetPassword4LoginName";
case 6:
return "CmdSetPassword4LoginName_URL";
case 7:
return "CmdNewAccount4URL";
case 8:
return "CmdTabEvent";
case 9:
return "CmdPasswordsDisabled";
case 10:
return "CmdReloginNeeded";
case 11:
return "CmdLaunchiCP";
case 12:
return "CmdiCPStateChange";
case 13:
return "CmdLaunchPasswordsApp";
case 14:
return "CmdHello";
case 15:
return "CmdOneTimeCodeAvailable";
case 16:
return "CmdGetOneTimeCodes";
case 17:
return "CmdDidFillOneTimeCode";
case 1984:
return "CmdOpenURLInSafari";
default:
return "Unknown Command"
}
}
var actUnknown = -1,
actDelete = 0,
actUpdate = 1,
actSearch = 2,
actAddNew = 3,
actMaybeAdd = 4,
actGhostSearch = 5;
const DefaultCapabilities = {
shouldUseBase64: !1,
secretSessionVersion: SecretSessionVersion.SRPWithOldVerification,
canFillOneTimeCodes: !1,
operatingSystem: {},
supportsSubURLs: !1,
scanForOTPURI: !1
},
AmountOfTimeToBlockRefreshForNativeAppDisconnection = 5e3;
let g_tabMonitor = new TabMonitor;
var g_lastToolbarIconImageName, g_timeStartedFetchingCredentials, g_nativeAppPort = null,
g_portToCompletionList = null,
g_portToPopup = null,
thePAKE = null,
g_theState = ContextState.NotInSession,
g_tabIdToURL = new Map,
g_Stage1Logins = new Map,
g_TabsToStateMap = new Map,
g_ErrorReturned = !1,
g_secretSession = null,
g_nativeAppCapabilities = null,
g_localizer = new Localizer,
g_extensionSettings = new ExtensionSettings,
g_urlToDownloadNativeSupport = "https://support.apple.com/kb/DL1455",
g_isDark = !1;
function setIsDark(e) {
g_isDark !== e && (g_isDark = e, chrome.storage.local.set({
isDark: e
}))
}
function imageDataForName(e) {
if (e) return {
16: "images/" + (g_lastToolbarIconImageName = e) + (g_isDark ? "-darkmode" : "") + "_icon16.png",
32: "images/" + g_lastToolbarIconImageName + (g_isDark ? "-darkmode" : "") + "_icon32.png"
}
}
function setUpEventListners() {
chrome.runtime.onInstalled && chrome.runtime.onInstalled.addListener((async e => {
await g_tabMonitor.performInitialSetup(), chrome.declarativeContent && chrome.declarativeContent.onPageChanged.removeRules(void 0, (function() {
chrome.declarativeContent.onPageChanged.addRules([{
conditions: [new chrome.declarativeContent.PageStateMatcher({
pageUrl: {
schemes: ["https", "http"]
}
})],
actions: [new chrome.declarativeContent.ShowPageAction]
}])
})), "install" === e.reason && g_extensionSettings.attemptToControlBrowserAutoFillSettings().then((e => {})).catch((e => {}))
})), chrome.runtime.onSuspend && chrome.runtime.onSuspend.addListener((function() {
g_tabIdToURL.clear(), g_Stage1Logins.clear(), g_TabsToStateMap.clear(), g_nativeAppPort.postMessage({
cmd: 0
})
})), chrome.runtime.onSuspendCanceled && chrome.runtime.onSuspendCanceled.addListener((function() {})), chrome.runtime.onUpdateAvailable && chrome.runtime.onUpdateAvailable.addListener((function() {}))
}
function secdSTATUS2string(e) {
switch (e) {
case 0:
return "secdSTATUSsuccess";
case 1:
return "genericError";
case 2:
return "invalidParam";
case 3:
return "itemNotFound";
case 4:
return "failedToDelete";
case 5:
return "failedToUpdate";
case 6:
return "invalidMessageFormat";
case 7:
return "duplicateItem";
case 8:
return "unknownAction";
case 9:
return "invalidSession"
}
}
function checkForValidOS() {
if ("MacIntel" === navigator.platform) return g_urlToDownloadNativeSupport = "https://www.apple.com/macos", !0;
const e = new RegExp("\\(Windows\\s*\\w*\\s*(\\d*)\\.(\\d*)", "i").exec(navigator.userAgent);
return null !== e && 3 === e.length && (e[1] >= 10 ? (g_urlToDownloadNativeSupport = "ms-windows-store://pdp/?productid=9PKTQ5699M62", !0) : !(e[1] < 6) && !(e[2] < 1))
}
function setGlobalState(e, t) {
g_theState = e, g_tabMonitor.extensionIsPaired = g_theState === ContextState.SessionKeySet, setToolbarIcon(g_theState === ContextState.SessionKeySet ? "PasswordsToolbar" : "PasswordsToolbarUnpaired"), t || sendMessageToPopup({
subject: "nativeConnectionStateChanged",
state: g_theState,
appStoreURL: g_urlToDownloadNativeSupport
})
}
function resetTheSession(e) {
setGlobalState(e), g_secretSession = new SecretSession(g_nativeAppCapabilities)
}
function STATUSErrorReturned(e) {
switch (secdSTATUS2string(e), g_theState) {
case ContextState.IncompatibleOS:
case ContextState.NativeSupportNotInstalled:
case ContextState.CheckEngine:
case ContextState.MSG1Set:
case ContextState.ChallengeSent:
break;
case ContextState.SessionKeySet:
g_ErrorReturned = !0, resetTheSession(ContextState.NotInSession);
case ContextState.NotInSession:
chrome.tabs.query({
active: !0,
currentWindow: !0
}, (function(e) {
setToolbarIcon("PasswordsToolbarUnpaired")
}))
}
}
function logMapElements(e, t, s) {}
function consultStage1Logins(e, t) {
return isStringEmpty(e) ? g_Stage1Logins.has(t) ? (LoginName = g_Stage1Logins.get(t), LoginName, g_Stage1Logins.delete(t), LoginName) : "" : e
}
function entriesFromLoginNames4URLData(e) {
let t = e.Entries;
return t || (t = [], Object.entries(e).sort().map((([e, s]) => {
e.includes("Entry_") && t.push(s)
})), t)
}
function setToolbarIcon(e) {
chrome.action && chrome.action.setIcon({
path: imageDataForName(e)
})
}
function sendMessageToPopupAndCompletionList(e) {
sendMessageToPopup(e), sendMessageToCompletionList(e)
}
function sendMessageToPopup(e) {
if (g_portToPopup) try {
g_portToPopup.postMessage(e)
} catch (e) {}
}
function sendMessageToCompletionList(e) {
if (g_portToCompletionList) try {
g_portToCompletionList.postMessage(e)
} catch (e) {}
}
function onSetUpTOTPContextMenuClicked(e, t) {
if (g_theState !== ContextState.SessionKeySet) window.alert(g_localizer.getMessage("enableAutoFillPasswordsMessage"));
else {
const t = new URL(e.pageUrl);
t.hostname, e.menuItemId, setUpTOTP(t.hostname, e.menuItemId)
}
}
function connectToBackgroundNativeAppAndSetUpListeners() {
setToolbarIcon("PasswordsToolbarUnpaired"), g_nativeAppCapabilities || (g_nativeAppCapabilities = DefaultCapabilities), g_localizer = new Localizer(g_nativeAppCapabilities), g_secretSession = new SecretSession(g_nativeAppCapabilities), chrome.runtime.onMessage.addListener(((e, t, s) => {
const a = t.tab.id,
n = t.frameId,
r = new URL(t.url);
if (r.hostname, t.tab.id, t.frameId, e.from, "content" === e.from) switch (e.subject, e.subject) {
case "CmdCheckEstablishSession":
CheckEstablishSession();
break;
case "SaveStage1LoginName":
g_tabIdToURL.has(a) && (strURL = g_tabIdToURL.get(a), g_Stage1Logins.delete(strURL), g_tabIdToURL.delete(a)), r.hostname, e.theLogin, g_tabIdToURL.set(a, r.hostname), g_Stage1Logins.set(r.hostname, e.theLogin);
break;
case "CmdGetPassword4LoginName":
const o = JSON.stringify({
ACT: actSearch,
URL: r.hostname,
USR: e.theLogin
}),
i = g_secretSession.createSMSG(o),
c = {
cmd: 5,
tabId: t.tab.id,
frameId: t.frameId,
url: e.theURL,
payload: JSON.stringify({
QID: e.subject,
SMSG: i
})
};
e.subject, e.subject, g_nativeAppPort.postMessage(c);
break;
case "CmdSetPassword4LoginName_URL":
case "CmdNewAccount4URL":
if (g_theState === ContextState.SessionKeySet) {
e.theNLogin, r.hostname;
let s = consultStage1Logins(e.theNLogin, r.hostname);
if (!isStringEmpty(s)) {
let a = JSON.stringify({
ACT: actMaybeAdd,
URL: "",
USR: "",
PWD: "",
NURL: e.theNURL,
NUSR: s,
NPWD: e.theNPassword
}),
n = g_secretSession.createSMSG(a),
r = {
cmd: 6,
tabId: t.tab.id,
frameId: t.frameId,
payload: JSON.stringify({
QID: e.subject,
SMSG: n
})
};
e.subject, g_nativeAppPort.postMessage(r)
}
}
break;
case "CmdSetIconNTitle": {
let s = e.hostPageType;
setIsDark(e.isDark);
let a = !1;
switch (s) {
case WBSAutoFillFormTypeUndetermined:
case WBSAutoFillFormTypeAutoFillableStandard:
case WBSAutoFillFormTypeNonAutoFillable:
a = !1;
break;
case WBSAutoFillFormTypeAutoFillableLogin:
case WBSAutoFillFormTypeNewAccount:
case WBSAutoFillFormTypeChangePassword:
a = !0
}
switch (g_TabsToStateMap.has(t.tab.id) && g_TabsToStateMap.get(t.tab.id) || g_TabsToStateMap.set(t.tab.id, a), r.hostname, t.tab.id, t.frameId, humanReadableFormType(e.hostPageType), e.hostPageType, e.hostPageType) {
case WBSAutoFillFormTypeUndetermined:
case WBSAutoFillFormTypeAutoFillableStandard:
case WBSAutoFillFormTypeNonAutoFillable:
break;
case WBSAutoFillFormTypeAutoFillableLogin:
case WBSAutoFillFormTypeNewAccount:
case WBSAutoFillFormTypeChangePassword:
let e = {
cmd: 3,
tabId: t.tab.id,
frameId: t.frameId,
payload: JSON.stringify({
TID: "CmdSetIconNTitle",
URL: r.hostname
})
};
JSON.stringify(e), g_nativeAppPort.postMessage(e)
}
}
break;
case "ThemeChanged":
chrome.action && (setIsDark(e.isDark), chrome.action.setIcon({
path: imageDataForName(g_lastToolbarIconImageName)
}));
break;
case "fillOneTimeCodeIntoForm":
chrome.webNavigation.getFrame({
tabId: t.tab.id,
frameId: t.frameId
}, (s => {
s.frameId = t.frameId, didFillOneTimeCode(e.oneTimeCode, {
id: t.tab.id
}, s)
}));
break;
case "typedUserNameChanged":
case "keydown":
sendMessageToCompletionList(e);
break;
case "CmdAddSetUpTOTPContextMenu":
const l = !1;
if (!chrome.contextMenus) break;
chrome.contextMenus.create({
title: l ? `${g_localizer.getMessage("divTOTPMenu")} (${e.totpSetupURL})` : g_localizer.getMessage("divTOTPMenu"),
id: e.totpSetupURL,
contexts: ["all"]
}), chrome.contextMenus.onClicked.addListener(onSetUpTOTPContextMenuClicked);
break;
case "CmdRemoveSetUpTOTPContextMenus":
chrome.contextMenus && chrome.contextMenus.removeAll();
break;
case "getCapabilities":
s(g_nativeAppCapabilities);
break;
case "readyToReceiveMessages":
g_tabMonitor.frameIsReadyToReceiveMessages(a, n)
}
}));
try {
(g_nativeAppPort = chrome.runtime.connectNative("com.apple.passwordmanager")).onMessage.addListener((async function(e) {
switch (JSON.stringify(e), chrome.storage.local.remove(["lastRetryTimestamp"]), cmd2string(e.cmd), e.cmd, e.cmd) {
case 9:
case 10:
resetTheSession(ContextState.CheckEngine), chrome.tabs.query({
active: !0,
currentWindow: !0
}, (function(e) {
setToolbarIcon("PasswordsToolbarUnpaired")
})), setGlobalState(ContextState.NotInSession, !0);
break;
case 2:
switch (e.payload.QID, e.payload.QID) {
case "m0":
thePAKE = e.payload.PAKE, setGlobalState(ContextState.MSG1Set);
break;
case "m2":
try {
g_secretSession.processMessage(e.payload.PAKE);
setGlobalState(ContextState.SessionKeySet), thePAKE = null
} catch (e) {
e.code, e.message, resetTheSession(ContextState.NotInSession)
}
}
break;
case 3:
var t = RememberIC.UnknownPage;
switch (e.payload, e.payload) {
case "DoNotRemember":
t = RememberIC.DoNotRemember;
break;
case "RememberLoginAndPassword":
t = RememberIC.RememberLoginAndPassword;
break;
case "UnknownPage":
t = RememberIC.UnknownPage;
break;
case "NoValueSet":
t = RememberIC.NoValueSet, STATUSErrorReturned(e.STATUS)
}
try {
await chrome.tabs.sendMessage(e.tabId, {
from: "background",
subject: "RememberICSelection",
tabId: e.tabId,
frameId: e.frameId,
theRememberICSelection: t,
capabilities: g_nativeAppCapabilities
}, {
frameId: e.frameId
})
} catch (t) {
e.tabId, e.frameId, t.message
}
break;
case 4:
t = RememberIC.UnknownPage;
var s = [],
a = [],
n = [],
r = e.payload,
o = e.tabId,
i = e.frameId,
c = g_secretSession.parseSMSG(r.SMSG);
switch ((d = JSON.parse(c)).STATUS) {
case QueryStatus.Success:
performance.now();
var l = entriesFromLoginNames4URLData(d);
l.sort(((e, t) => e.USR.localeCompare(t.USR, void 0, {
numeric: !0,
sensitivity: "base"
}))), l.forEach((e => {
if ("Passwordsย notย saved" === e.USR) t = RememberIC.DoNotRemember;
else if (s.push(e.USR), a.push(e.CDate || e.ModDate), n.push(e.sites[0]), "Not Included" === e.PWD) t = RememberIC.RememberLoginAndPassword;
else t = RememberIC.UnknownPage
})), sendMessageToPopupAndCompletionList({
from: "background",
subject: "users",
arrLoginNames: s,
arrDates: a,
arrHLDs: n,
tabId: o,
frameId: i,
theRememberICSelection: t
});
break;
case QueryStatus.NoResults:
sendMessageToPopupAndCompletionList({
from: "background",
subject: "users",
arrDates: [],
tabId: o,
frameId: i,
arrLoginNames: [],
arrHLDs: [],
theRememberICSelection: RememberIC.UnknownPage
});
break;
default:
STATUSErrorReturned(d.STATUS)
}
break;
case 5:
var d;
r = e.payload, c = g_secretSession.parseSMSG(r.SMSG);
switch ((d = JSON.parse(c)).STATUS) {
case QueryStatus.Success: {
const t = e.url,
s = entriesFromLoginNames4URLData(d).find((e => e.sites.includes(t)));
s && sendUsernameAndPasswordToFrameForFilling(e.tabId, e.frameId, t, s.USR, s.PWD);
break
}
case QueryStatus.NoResults:
break;
default:
STATUSErrorReturned(d.STATUS)
}
break;
case 16:
handleGetOneTimeCodesCommand(e);
break;
case 8:
case 7:
case 6:
break;
case 14:
g_nativeAppCapabilities = e.capabilities ? e.capabilities : DefaultCapabilities, g_localizer = new Localizer(g_nativeAppCapabilities), g_tabMonitor.nativeAppSupportsQRCodeScanning = g_nativeAppCapabilities.scanForOTPURI, sendMessageToPopupAndCompletionList({
subject: "hello",
capabilities: g_nativeAppCapabilities
}), resetTheSession(ContextState.NotInSession);
break;
case 15:
handleOneTimeCodeAvailableCommand(e);
break;
case 17:
handleDidFillOneTimeCodeCommand(e);
break;
case 18: {
let e = g_secretSession.parseSMSG(r.SMSG),
t = JSON.parse(e);
if (JSON.stringify(t), t.STATUS === QueryStatus.Success);
else STATUSErrorReturned(t.STATUS);
break
}
default:
cmd2string(e.cmd)
}
})), g_nativeAppPort.onDisconnect.addListener((e => {
const t = chrome.runtime.lastError;
t.message, setTimeout((() => {
if (t.message, "Native host has exited." === t.message) chrome.storage.local.get(["lastRetryTimestamp"], (e => {
const t = e.lastRetryTimestamp;
let s = !1;
if (t) {
s = Date.now() - t > 5e3
} else s = !0;
s ? (chrome.storage.local.set({
lastRetryTimestamp: Date.now()
}), connectToBackgroundNativeAppAndSetUpListeners()) : (chrome.storage.local.remove(["lastRetryTimestamp"]), resetTheSession(ContextState.NativeSupportNotInstalled))
}));
else t.message, resetTheSession(ContextState.NativeSupportNotInstalled)
}), 1e3)
})), g_nativeAppPort.postMessage({
cmd: 14
})
} catch (e) {
resetTheSession(ContextState.NativeSupportNotInstalled)
}
}
async function sendUsernameAndPasswordToFrameForFilling(t, s, a, n, r) {
try {
await chrome.tabs.sendMessage(t, {
from: "background",
subject: "fillPassword",
tabId: t,
frameId: s,
username: n,
password: r,
url: a
}, {
frameId: s
})
} catch (t) {
e.message
}
}
function handleOneTimeCodeAvailableCommand(e) {
getCurrentActiveTabAndFrame().then((e => getOneTimeCodes(e[0], e[1], null))).catch((e => {}))
}
function handleGetOneTimeCodesCommand(e) {
let t = null;
try {
t = JSON.parse(g_secretSession.parseSMSG(e.payload.SMSG))
} catch (e) {
return
}
let s = t.STATUS;
if (s !== QueryStatus.Success) return s !== QueryStatus.NoResults && STATUSErrorReturned(s), void sendMessageToPopupAndCompletionList({
from: "background",
subject: "oneTimeCodes",
oneTimeCodes: []
});
let a = t.Entries;
a && sendMessageToPopupAndCompletionList({
from: "background",
subject: "oneTimeCodes",
oneTimeCodes: a
})
}
async function handleDidFillOneTimeCodeCommand(e) {
let t = null;
try {
t = JSON.parse(g_secretSession.parseSMSG(e.payload.SMSG))
} catch (e) {
return
}
let s = t.STATUS;
if (s !== QueryStatus.Success) return void(s !== QueryStatus.NoResults && STATUSErrorReturned(s));
let a = t.Entries;
if (a && a.length) try {
await chrome.tabs.sendMessage(e.tabId, {
subject: "fillCurrentTOTPCodeIntoForm",
oneTimeCodes: a
}, {
frameId: e.frameId
})
} catch (e) {}
}
function CheckEstablishSession() {
if (g_theState === ContextState.NotInSession) ChallengePIN()
}
function startiCloudControlPanel() {
var e = {
cmd: 11
};
JSON.stringify(e), g_nativeAppPort.postMessage(e)
}
function startPasswordsApp() {
let e = {
cmd: 13
};
JSON.stringify(e), g_nativeAppPort.postMessage(e)
}
function setUpTOTP(e, t) {
if (!g_nativeAppCapabilities.scanForOTPURI) return;
const s = {
cmd: 13,
setUpTOTPPageURL: e,
setUpTOTPURI: t
};
JSON.stringify(s), g_nativeAppPort.postMessage(s)
}
async function getUsernamesForMainFrameOfActiveTab() {
if (g_theState !== ContextState.SessionKeySet) return;
const e = await chrome.tabs.query({
active: !0,
currentWindow: !0
});
if (!e.length) return;
const t = e[0].id;
GetLoginNames4URL(urlFromURLString((await chrome.webNavigation.getFrame({
tabId: t,
frameId: 0
})).url).hostname, t, 0)
}
function GetLoginNames4URL(e, t, s) {
let a = JSON.stringify({
ACT: actGhostSearch,
URL: e
}),
n = g_secretSession.createSMSG(a),
r = {
cmd: 4,
url: e,
tabId: t,
frameId: s,
payload: JSON.stringify({
QID: "CmdGetLoginNames4URL",
SMSG: n
})
};
g_timeStartedFetchingCredentials = performance.now(), g_nativeAppPort.postMessage(r)
}
function getOneTimeCodes(e, t, s) {
getAllParentFrameURLsOfFrame(e, t).then((a => {
let n = {
ACT: actGhostSearch,
TYPE: "oneTimeCodes",
frameURLs: a
};
s && (n.username = s);
let r = g_secretSession.createSMSG(n),
o = {
cmd: 16,
tabId: e.id,
frameId: t.frameId,
payload: JSON.stringify({
QID: "CmdGetOneTimeCodes",
SMSG: r
})
};
g_nativeAppPort.postMessage(o)
})).catch((e => {}))
}
function didFillOneTimeCode(e, t, s) {
if ("totp" === e.source) getAllParentFrameURLsOfFrame(t, s).then((a => {
let n = {
ACT: actSearch,
TYPE: "oneTimeCodes",
frameURLs: a
},
r = e.username;
r && (n.username = r);
let o = g_secretSession.createSMSG(n),
i = {
cmd: 17,
tabId: t.id,
frameId: s.frameId,
payload: JSON.stringify({
QID: "CmdDidFillOneTimeCode",
SMSG: o
})
};
g_nativeAppPort.postMessage(i)
})).catch((e => {}))
}
function openURLInSafari(e) {
g_nativeAppPort.postMessage({
cmd: 1984,
url: e
})
}
function getAllParentFrameURLsOfFrame(e, t) {
let s = e.id;
return new Promise((a => {
-1 !== t.parentFrameId ? chrome.webNavigation.getFrame({
tabId: s,
frameId: t.parentFrameId
}, (s => {
getAllParentFrameURLsOfFrame(e, s).then((e => {
a([t.url].concat(e))
})).catch((e => {}))
})) : a([t.url])
}))
}
function ChallengePIN() {
if (g_theState === ContextState.NotInSession) {
var e = {
QID: "m0",
PAKE: g_secretSession.initialMessage(),
HSTBRSR: g_localizer.getMessage("browserName")
},
t = {
cmd: 2,
msg: JSON.stringify(e)
};
setGlobalState(ContextState.ChallengeSent);
try {
g_nativeAppPort.postMessage(t)
} catch (e) {
e.message, resetTheSession(ContextState.NativeSupportNotInstalled)
}
}
}
function PINSet(e) {
g_secretSession.setPin(e);
try {
let e = {
QID: "m2",
PAKE: g_secretSession.processMessage(thePAKE)
},
t = {
cmd: 2,
msg: JSON.stringify(e)
};
g_nativeAppPort.postMessage(t)
} catch (e) {
e.code, e.message, resetTheSession(ContextState.NotInSession)
}
}
function getCurrentActiveTabAndFrame() {
return new Promise((e => {
chrome.tabs.query({
active: !0,
currentWindow: !0
}, (function(t) {
chrome.webNavigation.getAllFrames({
tabId: t[0].id
}, (function(s) {
e([t[0], s[0]])
}))
}))
}))
}
function getCurrentActiveTabAndItsFrames() {
return new Promise((e => {
chrome.tabs.query({
active: !0,
currentWindow: !0
}, (function(t) {
chrome.webNavigation.getAllFrames({
tabId: t[0].id
}, (function(s) {
e([t[0], s])
}))
}))
}))
}
function canFillOneTimeCodes() {
return (g_nativeAppCapabilities || DefaultCapabilities).canFillOneTimeCodes
}
function setUpPortToCompetionList(e) {
g_portToCompletionList = e, e.onMessage.addListener((async function(t) {
switch (JSON.stringify(t), t.subject) {
case "getContextAndMetadataFromContent":
getCurrentActiveTabAndItsFrames().then((function(t) {
const s = t[0].id;
for (const a of t[1]) {
const t = a.frameId;
chrome.tabs.sendMessage(s, {
from: "background",
subject: "getContextAndMetadataForActiveTextField"
}, {
frameId: t
}, (function(a) {
a && e.postMessage({
subject: "replyForGetContextAndMetadataFromContent",
state: g_theState,
tabId: s,
frameId: t,
url: a.url,
textFieldMetadata: a.textFieldMetadata,
formMetadata: a.formMetadata,
presetUserName: a.presetUserName,
hostname: a.hostname,
canFillOneTimeCodes: canFillOneTimeCodes()
})
}))
}
})).catch((e => {}));
break;
case "GetLoginNames4URL":
GetLoginNames4URL(t.hostname, t.tabId, t.frameId);
break;
case "getOneTimeCodes":
const s = t.tabId,
a = t.frameId;
chrome.webNavigation.getFrame({
tabId: s,
frameId: a
}, (e => {
e.frameId = a, getOneTimeCodes({
id: t.tabId
}, e, t.username)
}));
break;
case "openPasswordManagerAndDismissCompletionList":
startPasswordsApp();
try {
await chrome.tabs.sendMessage(t.tabId, {
subject: "dismissCompletionList"
}, {
frameId: t.frameId
})
} catch (e) {}
break;
case "openURLInSafari":
openURLInSafari(t.url);
break;
case "resizeCompletionList":
case "fillLoginIntoForm":
case "fillOneTimeCodeIntoForm":
case "dismissCompletionList":
try {
await chrome.tabs.sendMessage(t.tabId, t, {
frameId: t.frameId
})
} catch (e) {}
}
})), e.onDisconnect.addListener((e => {
e === g_portToCompletionList && (g_portToCompletionList = null)
})), sendMessageToCompletionList({
subject: "hello",
capabilities: g_nativeAppCapabilities
})
}
function setUpPortToPopup(e) {
g_portToPopup = e, e.onMessage.addListener((function(t) {
switch (JSON.stringify(t), t.subject) {
case "getInitialPopupState":
e.postMessage({
subject: "nativeConnectionStateChanged",
state: g_theState,
appStoreURL: g_urlToDownloadNativeSupport
});
break;
case "tryToEstablishNativeConnectionInResponseToUserActivatingPopup":
chrome.storage.local.set({
lastRetryTimestamp: Date.now()
}), connectToBackgroundNativeAppAndSetUpListeners();
break;
case "challengePIN":
ChallengePIN();
break;
case "userEnteredPIN":
PINSet(t.pin);
break;
case "GetLoginNames4URL":
GetLoginNames4URL(t.hostname, t.tabId, t.frameId);
break;
case "openPasswordManager":
startPasswordsApp();
break;
case "startiCloudControlPanel":
startiCloudControlPanel();
break;
case "SetUpTOTP":
setUpTOTP(t.theURL, t.theTOTPURI);
break;
case "openURLInSafari":
openURLInSafari(t.url)
}
})), e.onDisconnect.addListener((function() {
g_theState === ContextState.MSG1Set && PINSet(""), g_portToPopup = null
})), sendMessageToPopup({
subject: "hello",
capabilities: g_nativeAppCapabilities
})
}
chrome.storage.local.get("isDark", (function(e) {
void 0 !== e.isDark && (g_isDark = e.isDark), g_lastToolbarIconImageName && setToolbarIcon(g_lastToolbarIconImageName)
})), setUpEventListners(), checkForValidOS() ? connectToBackgroundNativeAppAndSetUpListeners() : (chrome.storage.local.get("hideUnsupportedOSPrompt", (function(e) {
e.hideUnsupportedOSPrompt || (chrome.storage.local.set({
hideUnsupportedOSPrompt: 1
}), window.alert(g_localizer.getMessage("unsupportedOS")))
})), setGlobalState(ContextState.IncompatibleOS)), chrome.windows.onFocusChanged.addListener((async e => {
if (!g_nativeAppPort || e === chrome.windows.WINDOW_ID_NONE) return;
let t = await chrome.tabs.query({
active: !0,
currentWindow: !0
});
if (t.length < 1) return;
const s = t[0].id;
if (!s) return;
const a = {
cmd: 8,
tabId: s,
event: 1
};
JSON.stringify(a), g_nativeAppPort.postMessage(a)
})), chrome.tabs.onActivated.addListener((e => {
if (JSON.stringify(e), !g_nativeAppPort) return;
let t = {
cmd: 8,
tabId: e.tabId,
event: 1
};
JSON.stringify(t), g_nativeAppPort.postMessage(t)
})), chrome.tabs.onRemoved.addListener(((e, t) => {
if (JSON.stringify(t), !g_nativeAppPort) return;
let s = {
cmd: 8,
tabId: e,
event: 0
};
JSON.stringify(s), g_nativeAppPort.postMessage(s), g_TabsToStateMap.delete(e)
})), chrome.runtime.onConnect.addListener((function(e) {
e.name, "completionList" === e.name ? setUpPortToCompetionList(e) : "popup" === e.name ? setUpPortToPopup(e) : e.name
}));
function lookUpSpecifier(e, r) {
return r ? (mapEntry = e[r], mapEntry ? mapEntry.valueSpecifier : null) : null
}
function specifierForAutocompleteToken(e) {
return e ? lookUpSpecifier(autocompleteTokenMap, e) : null
}
function specifierForFieldLabel(e) {
return e ? lookUpSpecifier(fieldLabelMap, e) : null
}
function findValueSpecifierForKey(e) {
let r = specifierForAutocompleteToken(e);
return r || specifierForFieldLabel(e)
}
var PatternMatcherClass = function(e) {
this._words = e
};
PatternMatcherClass.prototype = {
_resultFromMatch: function(e) {
if (!e) return null;
if (specifier = findValueSpecifierForKey(e), !specifier) return [e, "", "", ""];
return [e, specifier.property || "", specifier.category || "", specifier.parentCategory || ""]
},
longestMatch: function(e) {
let r = null,
t = 0;
for (let n of this._words) {
let a = n.length;
a < t || (regex = RegExp("\\b" + n + "\\b", "i"), regex.test(e) && (r = n, t = a))
}
return r ? this._resultFromMatch(r) : null
},
searchReverse: function(e) {
let r = null;
for (let t = this._words.length - 1; t >= 0; --t) {
let n = this._words[t];
if (regex = RegExp("\\b" + n + "\\b", "i"), regex.test(e)) {
r = n;
break
}
}
return r ? this._resultFromMatch(r) : null
}
};
var ValueSpecifier = function(e, r, t, n, a) {
this.property = e, this.component = r, this.label = t, this.category = n, this.parentProperty = a
},
MapEntry = function(e, r, t) {
this.keyLength = e, this.key = r, this.valueSpecifier = t
},
Map = function(e) {
this.mapEntries = e, this.entryCount = e.length
},
valueSpecifiers = [new ValueSpecifier("FullNameComposite", null, null, "FullNameComposite", null), new ValueSpecifier("First", null, null, "First", "FullNameComposite"), new ValueSpecifier("Middle", null, null, "Middle", "FullNameComposite"), new ValueSpecifier("Last", null, null, "Last", "FullNameComposite"), new ValueSpecifier("Birthday", null, null, "Birthday", null), new ValueSpecifier("JobTitle", null, null, "JobTitle", null), new ValueSpecifier("Email", null, null, "Email", null), new ValueSpecifier("Address", "Street", null, "AddressStreet", null), new ValueSpecifier("Address", "City", null, "AddressCity", null), new ValueSpecifier("Address", "State", null, "AddressState", null), new ValueSpecifier("Address", "ZIP", null, "AddressZIP", null), new ValueSpecifier("Address", "Country", null, "AddressCountry", null), new ValueSpecifier("Phone", null, null, "Phone", null), new ValueSpecifier("Organization", null, null, "Organization", null), new ValueSpecifier("Phone", null, "_$!<Home>!$_", "Phone_$!<Home>!$_", null), new ValueSpecifier("Phone", null, "_$!<Work>!$_", "Phone_$!<Work>!$_", null), new ValueSpecifier("Phone", null, "_$!<Mobile>!$_", "Phone_$!<Mobile>!$_", null), new ValueSpecifier("Phone", null, "_$!<Pager>!$_", "Phone_$!<Pager>!$_", null), new ValueSpecifier("<Invalid>", null, null, "<Invalid>", null), new ValueSpecifier("InstantMessage", "AIMInstant", null, "InstantMessageAIMInstant", null), new ValueSpecifier("InstantMessage", "ICQInstant", null, "InstantMessageICQInstant", null), new ValueSpecifier("InstantMessage", "JabberInstant", null, "InstantMessageJabberInstant", null), new ValueSpecifier("InstantMessage", "MSNInstant", null, "InstantMessageMSNInstant", null), new ValueSpecifier("InstantMessage", "QQInstant", null, "InstantMessageQQInstant", null), new ValueSpecifier("InstantMessage", "SkypeInstant", null, "InstantMessageSkypeInstant", null), new ValueSpecifier("URLs", null, "_$!<HomePage>!$_", "URLs_$!<HomePage>!$_", null)],
autocompleteTokenMap = {
"additional-name": new MapEntry(15, "additional-name", valueSpecifiers[2]),
"additional-name-initial": new MapEntry(23, "additional-name-initial", valueSpecifiers[2]),
"address-line1": new MapEntry(13, "address-line1", valueSpecifiers[7]),
"address-line2": new MapEntry(13, "address-line2", valueSpecifiers[7]),
"address-line3": new MapEntry(13, "address-line3", valueSpecifiers[7]),
"administrative-area": new MapEntry(19, "administrative-area", valueSpecifiers[9]),
bday: new MapEntry(4, "bday", valueSpecifiers[4]),
"bday-day": new MapEntry(8, "bday-day", valueSpecifiers[4]),
"bday-month": new MapEntry(10, "bday-month", valueSpecifiers[4]),
"bday-year": new MapEntry(9, "bday-year", valueSpecifiers[4]),
birthday: new MapEntry(8, "birthday", valueSpecifiers[4]),
"birthday-day": new MapEntry(12, "birthday-day", valueSpecifiers[4]),
"birthday-month": new MapEntry(14, "birthday-month", valueSpecifiers[4]),
"birthday-year": new MapEntry(13, "birthday-year", valueSpecifiers[4]),
city: new MapEntry(4, "city", valueSpecifiers[8]),
country: new MapEntry(7, "country", valueSpecifiers[11]),
"country-name": new MapEntry(12, "country-name", valueSpecifiers[11]),
email: new MapEntry(5, "email", valueSpecifiers[6]),
"family-name": new MapEntry(11, "family-name", valueSpecifiers[3]),
"given-name": new MapEntry(10, "given-name", valueSpecifiers[1]),
locality: new MapEntry(8, "locality", valueSpecifiers[8]),
"middle-initial": new MapEntry(14, "middle-initial", valueSpecifiers[2]),
"middle-name": new MapEntry(11, "middle-name", valueSpecifiers[2]),
name: new MapEntry(4, "name", valueSpecifiers[0]),
"name-full": new MapEntry(9, "name-full", valueSpecifiers[0]),
org: new MapEntry(3, "org", valueSpecifiers[13]),
organization: new MapEntry(12, "organization", valueSpecifiers[13]),
"organization-title": new MapEntry(18, "organization-title", valueSpecifiers[5]),
"phone-area-code": new MapEntry(15, "phone-area-code", valueSpecifiers[12]),
"phone-country-code": new MapEntry(18, "phone-country-code", valueSpecifiers[12]),
"phone-extension": new MapEntry(15, "phone-extension", valueSpecifiers[12]),
"phone-full": new MapEntry(10, "phone-full", valueSpecifiers[12]),
"phone-local": new MapEntry(11, "phone-local", valueSpecifiers[12]),
"phone-local-prefix": new MapEntry(18, "phone-local-prefix", valueSpecifiers[12]),
"phone-local-suffix": new MapEntry(18, "phone-local-suffix", valueSpecifiers[12]),
"phone-national": new MapEntry(14, "phone-national", valueSpecifiers[12]),
"postal-code": new MapEntry(11, "postal-code", valueSpecifiers[10]),
province: new MapEntry(8, "province", valueSpecifiers[9]),
region: new MapEntry(6, "region", valueSpecifiers[9]),
state: new MapEntry(5, "state", valueSpecifiers[9]),
"street-address": new MapEntry(14, "street-address", valueSpecifiers[7]),
surname: new MapEntry(7, "surname", valueSpecifiers[3]),
tel: new MapEntry(3, "tel", valueSpecifiers[12]),
"tel-area-code": new MapEntry(13, "tel-area-code", valueSpecifiers[12]),
"tel-country-code": new MapEntry(16, "tel-country-code", valueSpecifiers[12]),
"tel-extension": new MapEntry(13, "tel-extension", valueSpecifiers[12]),
"tel-local": new MapEntry(9, "tel-local", valueSpecifiers[12]),
"tel-local-prefix": new MapEntry(16, "tel-local-prefix", valueSpecifiers[12]),
"tel-local-suffix": new MapEntry(16, "tel-local-suffix", valueSpecifiers[12]),
"tel-national": new MapEntry(12, "tel-national", valueSpecifiers[12])
},
fieldLabelMap = {
"1รจre adresse": new MapEntry(12, "1รจre adresse", valueSpecifiers[7]),
"2ยบ nome": new MapEntry(7, "2ยบ nome", valueSpecifiers[2]),
Beruf: new MapEntry(5, "Beruf", valueSpecifiers[5]),
Berufsbezeichnung: new MapEntry(17, "Berufsbezeichnung", valueSpecifiers[5]),
Bundesland: new MapEntry(10, "Bundesland", valueSpecifiers[9]),
Bundesstaat: new MapEntry(11, "Bundesstaat", valueSpecifiers[9]),
CAP: new MapEntry(3, "CAP", valueSpecifiers[10]),
"E-Mail Adresse": new MapEntry(14, "E-Mail Adresse", valueSpecifiers[6]),
"E-Mail-Adresse": new MapEntry(14, "E-Mail-Adresse", valueSpecifiers[6]),
Efternavn: new MapEntry(9, "Efternavn", valueSpecifiers[3]),
"Email ใ‚ขใƒ‰ใƒฌใ‚น": new MapEntry(10, "Email ใ‚ขใƒ‰ใƒฌใ‚น", valueSpecifiers[6]),
"Emailใ‚ขใƒ‰ใƒฌใ‚น": new MapEntry(9, "Emailใ‚ขใƒ‰ใƒฌใ‚น", valueSpecifiers[6]),
"Eใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น": new MapEntry(8, "Eใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น", valueSpecifiers[6]),
"FAX็•ชๅท": new MapEntry(5, "FAX็•ชๅท", valueSpecifiers[12]),
Familienname: new MapEntry(12, "Familienname", valueSpecifiers[3]),
Fon: new MapEntry(3, "Fon", valueSpecifiers[12]),
GSM: new MapEntry(3, "GSM", valueSpecifiers[16]),
Geburtsdatum: new MapEntry(12, "Geburtsdatum", valueSpecifiers[4]),
Geburtstag: new MapEntry(10, "Geburtstag", valueSpecifiers[4]),
Handy: new MapEntry(5, "Handy", valueSpecifiers[16]),
Initialen: new MapEntry(9, "Initialen", valueSpecifiers[2]),
Mittelname: new MapEntry(10, "Mittelname", valueSpecifiers[2]),
"Mobilfunk-Vorwahl": new MapEntry(17, "Mobilfunk-Vorwahl", valueSpecifiers[16]),
"Mobiltelefon-Vorwahl": new MapEntry(20, "Mobiltelefon-Vorwahl", valueSpecifiers[16]),
NDT: new MapEntry(3, "NDT", valueSpecifiers[17]),
NPA: new MapEntry(3, "NPA", valueSpecifiers[10]),
Nachname: new MapEntry(8, "Nachname", valueSpecifiers[3]),
"Netzbetreiber-Vorwahl": new MapEntry(21, "Netzbetreiber-Vorwahl", valueSpecifiers[16]),
PLZ: new MapEntry(3, "PLZ", valueSpecifiers[10]),
"PSฤŒ": new MapEntry(3, "PSฤŒ", valueSpecifiers[10]),
"Pager-Vorwahl": new MapEntry(13, "Pager-Vorwahl", valueSpecifiers[17]),
Postleitzahl: new MapEntry(12, "Postleitzahl", valueSpecifiers[10]),
"Rufnummer (geschรคftlich)": new MapEntry(24, "Rufnummer (geschรคftlich)", valueSpecifiers[15]),
"Rufnummer (privat)": new MapEntry(18, "Rufnummer (privat)", valueSpecifiers[14]),
"Rufnummer abends": new MapEntry(16, "Rufnummer abends", valueSpecifiers[14]),
"Rufnummer dienstlich": new MapEntry(20, "Rufnummer dienstlich", valueSpecifiers[15]),
"Rufnummer geschรคftlich": new MapEntry(22, "Rufnummer geschรคftlich", valueSpecifiers[15]),
"Rufnummer privat": new MapEntry(16, "Rufnummer privat", valueSpecifiers[14]),
"Rufnummer tagsรผber": new MapEntry(18, "Rufnummer tagsรผber", valueSpecifiers[15]),
Stadt: new MapEntry(5, "Stadt", valueSpecifiers[8]),
"Str.": new MapEntry(4, "Str.", valueSpecifiers[7]),
Strasse: new MapEntry(7, "Strasse", valueSpecifiers[7]),
"StraรŸe": new MapEntry(6, "StraรŸe", valueSpecifiers[7]),
Telefax: new MapEntry(7, "Telefax", valueSpecifiers[12]),
"Telefon (geschรคftlich)": new MapEntry(22, "Telefon (geschรคftlich)", valueSpecifiers[15]),
"Telefon (privat)": new MapEntry(16, "Telefon (privat)", valueSpecifiers[14]),
"Telefon abends": new MapEntry(14, "Telefon abends", valueSpecifiers[14]),
"Telefon dienstlich": new MapEntry(18, "Telefon dienstlich", valueSpecifiers[15]),
"Telefon geschรคftlich": new MapEntry(20, "Telefon geschรคftlich", valueSpecifiers[15]),
"Telefon privat": new MapEntry(14, "Telefon privat", valueSpecifiers[14]),
"Telefon tagsรผber": new MapEntry(16, "Telefon tagsรผber", valueSpecifiers[15]),
"Tรคtigkeit": new MapEntry(9, "Tรคtigkeit", valueSpecifiers[5]),
"Voller Name": new MapEntry(11, "Voller Name", valueSpecifiers[0]),
"Vollstรคndiger Name": new MapEntry(18, "Vollstรคndiger Name", valueSpecifiers[0]),
Vorname: new MapEntry(7, "Vorname", valueSpecifiers[1]),
Vorwahl: new MapEntry(7, "Vorwahl", valueSpecifiers[12]),
"Vorwahl (Mobil)": new MapEntry(15, "Vorwahl (Mobil)", valueSpecifiers[16]),
"Vorwahl (Mobilfunk)": new MapEntry(19, "Vorwahl (Mobilfunk)", valueSpecifiers[16]),
"Vorwahl (Mobiltelefon)": new MapEntry(22, "Vorwahl (Mobiltelefon)", valueSpecifiers[16]),
"Vorwahl (Netzbetreiber)": new MapEntry(23, "Vorwahl (Netzbetreiber)", valueSpecifiers[16]),
"Vorwahl (Pager)": new MapEntry(15, "Vorwahl (Pager)", valueSpecifiers[17]),
"Vorwahl Mobil": new MapEntry(13, "Vorwahl Mobil", valueSpecifiers[16]),
"Vorwahl Mobilfunk": new MapEntry(17, "Vorwahl Mobilfunk", valueSpecifiers[16]),
"Vorwahl Mobiltelefon": new MapEntry(20, "Vorwahl Mobiltelefon", valueSpecifiers[16]),
"Vorwahl Netzbetreiber": new MapEntry(21, "Vorwahl Netzbetreiber", valueSpecifiers[16]),
"Vorwahl Pager": new MapEntry(13, "Vorwahl Pager", valueSpecifiers[17]),
Vorwahlnummer: new MapEntry(13, "Vorwahlnummer", valueSpecifiers[12]),
achternaam: new MapEntry(10, "achternaam", valueSpecifiers[3]),
"activitรฉ": new MapEntry(8, "activitรฉ", valueSpecifiers[5]),
ad: new MapEntry(2, "ad", valueSpecifiers[1]),
address: new MapEntry(7, "address", valueSpecifiers[7]),
"address 1": new MapEntry(9, "address 1", valueSpecifiers[7]),
address1: new MapEntry(8, "address1", valueSpecifiers[7]),
addresse: new MapEntry(8, "addresse", valueSpecifiers[7]),
addrstreet: new MapEntry(10, "addrstreet", valueSpecifiers[7]),
adel: new MapEntry(4, "adel", valueSpecifiers[6]),
"adr.": new MapEntry(4, "adr.", valueSpecifiers[7]),
adres: new MapEntry(5, "adres", valueSpecifiers[7]),
"adres 1": new MapEntry(7, "adres 1", valueSpecifiers[7]),
adres1: new MapEntry(6, "adres1", valueSpecifiers[7]),
adresa: new MapEntry(6, "adresa", valueSpecifiers[7]),
"adresa 1": new MapEntry(8, "adresa 1", valueSpecifiers[7]),
"adresa e-poลกte": new MapEntry(14, "adresa e-poลกte", valueSpecifiers[6]),
"adresa ul.": new MapEntry(10, "adresa ul.", valueSpecifiers[7]),
"adresa ulice": new MapEntry(12, "adresa ulice", valueSpecifiers[7]),
adresa1: new MapEntry(7, "adresa1", valueSpecifiers[7]),
adresi: new MapEntry(6, "adresi", valueSpecifiers[7]),
adress: new MapEntry(6, "adress", valueSpecifiers[7]),
"adress 1": new MapEntry(8, "adress 1", valueSpecifiers[7]),
adress1: new MapEntry(7, "adress1", valueSpecifiers[7]),
adresse: new MapEntry(7, "adresse", valueSpecifiers[7]),
"adresse 1": new MapEntry(9, "adresse 1", valueSpecifiers[7]),
"adresse Internet": new MapEntry(16, "adresse Internet", valueSpecifiers[6]),
"adresse civique": new MapEntry(15, "adresse civique", valueSpecifiers[7]),
"adresse courriel": new MapEntry(16, "adresse courriel", valueSpecifiers[6]),
"adresse de courriel": new MapEntry(19, "adresse de courriel", valueSpecifiers[6]),
"adresse de courrier รฉlectronique": new MapEntry(32, "adresse de courrier รฉlectronique", valueSpecifiers[6]),
"adresse de messagerie": new MapEntry(21, "adresse de messagerie", valueSpecifiers[6]),
"adresse e-mail": new MapEntry(14, "adresse e-mail", valueSpecifiers[6]),
"adresse gรฉographique": new MapEntry(20, "adresse gรฉographique", valueSpecifiers[7]),
"adresse municipale": new MapEntry(18, "adresse municipale", valueSpecifiers[7]),
"adresse postale": new MapEntry(15, "adresse postale", valueSpecifiers[7]),
"adresse postale 1": new MapEntry(17, "adresse postale 1", valueSpecifiers[7]),
"adresse รฉlectronique": new MapEntry(20, "adresse รฉlectronique", valueSpecifiers[6]),
adresse1: new MapEntry(8, "adresse1", valueSpecifiers[7]),
"adresฤƒ": new MapEntry(6, "adresฤƒ", valueSpecifiers[7]),
"adresฤƒ 1": new MapEntry(8, "adresฤƒ 1", valueSpecifiers[7]),
"adresฤƒ stradalฤƒ": new MapEntry(15, "adresฤƒ stradalฤƒ", valueSpecifiers[7]),
"adresฤƒ1": new MapEntry(7, "adresฤƒ1", valueSpecifiers[7]),
"adresฤƒemail": new MapEntry(11, "adresฤƒemail", valueSpecifiers[6]),
"adreรงa": new MapEntry(6, "adreรงa", valueSpecifiers[7]),
"adreรงa 1": new MapEntry(8, "adreรงa 1", valueSpecifiers[7]),
"adreรงa1": new MapEntry(7, "adreรงa1", valueSpecifiers[7]),
"adrรฉlec": new MapEntry(7, "adrรฉlec", valueSpecifiers[6]),
"adฤฑ": new MapEntry(3, "adฤฑ", valueSpecifiers[0]),
aim: new MapEntry(3, "aim", valueSpecifiers[19]),
"akลŸam alan kodu": new MapEntry(15, "akลŸam alan kodu", valueSpecifiers[14]),
"akลŸam telefonu": new MapEntry(14, "akลŸam telefonu", valueSpecifiers[14]),
"alan kodu": new MapEntry(9, "alan kodu", valueSpecifiers[12]),
"alt prenume": new MapEntry(11, "alt prenume", valueSpecifiers[2]),
ammatti: new MapEntry(7, "ammatti", valueSpecifiers[5]),
ammattinimike: new MapEntry(13, "ammattinimike", valueSpecifiers[5]),
andranamn: new MapEntry(9, "andranamn", valueSpecifiers[2]),
angiAdresseAdresselinje: new MapEntry(23, "angiAdresseAdresselinje", valueSpecifiers[7]),
angivAdresseAdresselinje: new MapEntry(24, "angivAdresseAdresselinje", valueSpecifiers[7]),
aniversari: new MapEntry(10, "aniversari", valueSpecifiers[4]),
"aniversรกrio": new MapEntry(11, "aniversรกrio", valueSpecifiers[4]),
anniversaire: new MapEntry(12, "anniversaire", valueSpecifiers[4]),
apelido: new MapEntry(7, "apelido", valueSpecifiers[3]),
apellido: new MapEntry(8, "apellido", valueSpecifiers[3]),
apellidos: new MapEntry(9, "apellidos", valueSpecifiers[3]),
arbeidstelefon: new MapEntry(14, "arbeidstelefon", valueSpecifiers[15]),
arbejdsnummer: new MapEntry(13, "arbejdsnummer", valueSpecifiers[15]),
arbejdstelefon: new MapEntry(14, "arbejdstelefon", valueSpecifiers[15]),
arbetstelefon: new MapEntry(13, "arbetstelefon", valueSpecifiers[15]),
"area code": new MapEntry(9, "area code", valueSpecifiers[12]),
areacode: new MapEntry(8, "areacode", valueSpecifiers[12]),
"autre prรฉnom": new MapEntry(12, "autre prรฉnom", valueSpecifiers[2]),
azienda: new MapEntry(7, "azienda", valueSpecifiers[13]),
bedrijf: new MapEntry(7, "bedrijf", valueSpecifiers[13]),
befattning: new MapEntry(10, "befattning", valueSpecifiers[5]),
bellboy: new MapEntry(7, "bellboy", valueSpecifiers[17]),
bipeur: new MapEntry(6, "bipeur", valueSpecifiers[17]),
"birinci ad": new MapEntry(10, "birinci ad", valueSpecifiers[1]),
"birinci adฤฑ": new MapEntry(11, "birinci adฤฑ", valueSpecifiers[1]),
"birth date": new MapEntry(10, "birth date", valueSpecifiers[4]),
"birth day": new MapEntry(9, "birth day", valueSpecifiers[4]),
"birth month": new MapEntry(11, "birth month", valueSpecifiers[4]),
"birth year": new MapEntry(10, "birth year", valueSpecifiers[4]),
birthday: new MapEntry(8, "birthday", valueSpecifiers[4]),
bolag: new MapEntry(5, "bolag", valueSpecifiers[13]),
born: new MapEntry(4, "born", valueSpecifiers[4]),
bostadsort: new MapEntry(10, "bostadsort", valueSpecifiers[8]),
"broj telefona": new MapEntry(13, "broj telefona", valueSpecifiers[12]),
bursdag: new MapEntry(7, "bursdag", valueSpecifiers[4]),
busca: new MapEntry(5, "busca", valueSpecifiers[17]),
buscapersonas: new MapEntry(13, "buscapersonas", valueSpecifiers[17]),
business: new MapEntry(8, "business", valueSpecifiers[13]),
"business area code": new MapEntry(18, "business area code", valueSpecifiers[15]),
"business areacode": new MapEntry(17, "business areacode", valueSpecifiers[15]),
"business phone": new MapEntry(14, "business phone", valueSpecifiers[15]),
businessareacode: new MapEntry(16, "businessareacode", valueSpecifiers[15]),
businessphone: new MapEntry(13, "businessphone", valueSpecifiers[15]),
"c. รฉlec.": new MapEntry(8, "c. รฉlec.", valueSpecifiers[6]),
"cad.": new MapEntry(4, "cad.", valueSpecifiers[7]),
cadde: new MapEntry(5, "cadde", valueSpecifiers[7]),
"cadde adresi": new MapEntry(12, "cadde adresi", valueSpecifiers[7]),
calle: new MapEntry(5, "calle", valueSpecifiers[7]),
cargo: new MapEntry(5, "cargo", valueSpecifiers[5]),
"cargo profissional": new MapEntry(18, "cargo profissional", valueSpecifiers[5]),
cargoprofissional: new MapEntry(17, "cargoprofissional", valueSpecifiers[5]),
carrer: new MapEntry(6, "carrer", valueSpecifiers[7]),
"cell area code": new MapEntry(14, "cell area code", valueSpecifiers[16]),
"cell areacode": new MapEntry(13, "cell areacode", valueSpecifiers[16]),
"cell phone": new MapEntry(10, "cell phone", valueSpecifiers[16]),
"cell.": new MapEntry(5, "cell.", valueSpecifiers[16]),
cellareacode: new MapEntry(12, "cellareacode", valueSpecifiers[16]),
cellphone: new MapEntry(9, "cellphone", valueSpecifiers[16]),
cellulaire: new MapEntry(10, "cellulaire", valueSpecifiers[16]),
cellulare: new MapEntry(9, "cellulare", valueSpecifiers[16]),
celular: new MapEntry(7, "celular", valueSpecifiers[16]),
"celรฉ meno": new MapEntry(9, "celรฉ meno", valueSpecifiers[0]),
cep: new MapEntry(3, "cep", valueSpecifiers[16]),
"cep numarasฤฑ": new MapEntry(12, "cep numarasฤฑ", valueSpecifiers[16]),
"cep telefonu": new MapEntry(12, "cep telefonu", valueSpecifiers[16]),
"cercapers.": new MapEntry(10, "cercapers.", valueSpecifiers[17]),
cercapersone: new MapEntry(12, "cercapersone", valueSpecifiers[17]),
cercapersones: new MapEntry(13, "cercapersones", valueSpecifiers[17]),
cidade: new MapEntry(6, "cidade", valueSpecifiers[8]),
"cittร ": new MapEntry(5, "cittร ", valueSpecifiers[8]),
city: new MapEntry(4, "city", valueSpecifiers[8]),
ciudad: new MapEntry(6, "ciudad", valueSpecifiers[8]),
ciutat: new MapEntry(6, "ciutat", valueSpecifiers[8]),
"cod poศ™tal": new MapEntry(10, "cod poศ™tal", valueSpecifiers[10]),
"code ZIP": new MapEntry(8, "code ZIP", valueSpecifiers[10]),
"code postal": new MapEntry(11, "code postal", valueSpecifiers[10]),
"code postal amรฉricain": new MapEntry(21, "code postal amรฉricain", valueSpecifiers[10]),
"code rรฉgional": new MapEntry(13, "code rรฉgional", valueSpecifiers[12]),
"codi postal": new MapEntry(11, "codi postal", valueSpecifiers[10]),
"codice avviamento postale": new MapEntry(25, "codice avviamento postale", valueSpecifiers[10]),
"codice di avviamento postale": new MapEntry(28, "codice di avviamento postale", valueSpecifiers[10]),
"codice postale": new MapEntry(14, "codice postale", valueSpecifiers[10]),
"codpoศ™tal": new MapEntry(9, "codpoศ™tal", valueSpecifiers[10]),
cognom: new MapEntry(6, "cognom", valueSpecifiers[3]),
cognome: new MapEntry(7, "cognome", valueSpecifiers[3]),
cognoms: new MapEntry(7, "cognoms", valueSpecifiers[3]),
compagnie: new MapEntry(9, "compagnie", valueSpecifiers[13]),
companie: new MapEntry(8, "companie", valueSpecifiers[13]),
company: new MapEntry(7, "company", valueSpecifiers[13]),
"company area code": new MapEntry(17, "company area code", valueSpecifiers[15]),
"company areacode": new MapEntry(16, "company areacode", valueSpecifiers[15]),
"company phone": new MapEntry(13, "company phone", valueSpecifiers[15]),
"company title": new MapEntry(13, "company title", valueSpecifiers[5]),
companyareacode: new MapEntry(15, "companyareacode", valueSpecifiers[15]),
companyia: new MapEntry(9, "companyia", valueSpecifiers[13]),
companyphone: new MapEntry(12, "companyphone", valueSpecifiers[15]),
compleanno: new MapEntry(10, "compleanno", valueSpecifiers[4]),
corporation: new MapEntry(11, "corporation", valueSpecifiers[13]),
"correo electrรณnico": new MapEntry(18, "correo electrรณnico", valueSpecifiers[6]),
"correu electrรฒnic": new MapEntry(17, "correu electrรฒnic", valueSpecifiers[6]),
country: new MapEntry(7, "country", valueSpecifiers[11]),
courriel: new MapEntry(8, "courriel", valueSpecifiers[6]),
"courrier รฉlectronique": new MapEntry(21, "courrier รฉlectronique", valueSpecifiers[6]),
cp: new MapEntry(2, "cp", valueSpecifiers[10]),
"cumpleaรฑos": new MapEntry(10, "cumpleaรฑos", valueSpecifiers[4]),
"cร rrec": new MapEntry(6, "cร rrec", valueSpecifiers[5]),
"cรฉ": new MapEntry(2, "cรฉ", valueSpecifiers[6]),
"cรณdigo de รกrea": new MapEntry(14, "cรณdigo de รกrea", valueSpecifiers[12]),
"cรณdigo de รกrea (celular)": new MapEntry(24, "cรณdigo de รกrea (celular)", valueSpecifiers[16]),
"cรณdigo de รกrea (diurno)": new MapEntry(23, "cรณdigo de รกrea (diurno)", valueSpecifiers[15]),
"cรณdigo de รกrea (empresa)": new MapEntry(24, "cรณdigo de รกrea (empresa)", valueSpecifiers[15]),
"cรณdigo de รกrea (local)": new MapEntry(22, "cรณdigo de รกrea (local)", valueSpecifiers[14]),
"cรณdigo de รกrea (noturno)": new MapEntry(24, "cรณdigo de รกrea (noturno)", valueSpecifiers[14]),
"cรณdigo de รกrea (pager)": new MapEntry(22, "cรณdigo de รกrea (pager)", valueSpecifiers[17]),
"cรณdigo de รกrea (trabalho)": new MapEntry(25, "cรณdigo de รกrea (trabalho)", valueSpecifiers[15]),
"cรณdigo de รกrea comercial": new MapEntry(24, "cรณdigo de รกrea comercial", valueSpecifiers[15]),
"cรณdigo de รกrea da empresa": new MapEntry(25, "cรณdigo de รกrea da empresa", valueSpecifiers[15]),
"cรณdigo de รกrea de casa": new MapEntry(22, "cรณdigo de รกrea de casa", valueSpecifiers[14]),
"cรณdigo de รกrea de dia": new MapEntry(21, "cรณdigo de รกrea de dia", valueSpecifiers[15]),
"cรณdigo de รกrea do celular": new MapEntry(25, "cรณdigo de รกrea do celular", valueSpecifiers[16]),
"cรณdigo de รกrea do pager": new MapEntry(23, "cรณdigo de รกrea do pager", valueSpecifiers[17]),
"cรณdigo de รกrea do telemรณvel": new MapEntry(27, "cรณdigo de รกrea do telemรณvel", valueSpecifiers[16]),
"cรณdigo de รกrea do trabalho": new MapEntry(26, "cรณdigo de รกrea do trabalho", valueSpecifiers[15]),
"cรณdigo de รกrea noite": new MapEntry(20, "cรณdigo de รกrea noite", valueSpecifiers[14]),
"cรณdigo postal": new MapEntry(13, "cรณdigo postal", valueSpecifiers[10]),
"cรณdigodeรกrea": new MapEntry(12, "cรณdigodeรกrea", valueSpecifiers[12]),
"cรณdigodeรกrea comercial": new MapEntry(22, "cรณdigodeรกrea comercial", valueSpecifiers[15]),
"cรณdigodeรกrea da empresa": new MapEntry(23, "cรณdigodeรกrea da empresa", valueSpecifiers[15]),
"cรณdigodeรกrea de casa": new MapEntry(20, "cรณdigodeรกrea de casa", valueSpecifiers[14]),
"cรณdigodeรกrea de dia": new MapEntry(19, "cรณdigodeรกrea de dia", valueSpecifiers[15]),
"cรณdigodeรกrea do celular": new MapEntry(23, "cรณdigodeรกrea do celular", valueSpecifiers[16]),
"cรณdigodeรกrea do pager": new MapEntry(21, "cรณdigodeรกrea do pager", valueSpecifiers[17]),
"cรณdigodeรกrea do telemรณvel": new MapEntry(25, "cรณdigodeรกrea do telemรณvel", valueSpecifiers[16]),
"cรณdigodeรกrea do trabalho": new MapEntry(24, "cรณdigodeรกrea do trabalho", valueSpecifiers[15]),
"cรณdigodeรกrea noite": new MapEntry(18, "cรณdigodeรกrea noite", valueSpecifiers[14]),
"cรณdigodeรกreacomercial": new MapEntry(21, "cรณdigodeรกreacomercial", valueSpecifiers[15]),
"cรณdigodeรกreadaempresa": new MapEntry(21, "cรณdigodeรกreadaempresa", valueSpecifiers[15]),
"cรณdigodeรกreadecasa": new MapEntry(18, "cรณdigodeรกreadecasa", valueSpecifiers[14]),
"cรณdigodeรกreadedia": new MapEntry(17, "cรณdigodeรกreadedia", valueSpecifiers[15]),
"cรณdigodeรกreadocelular": new MapEntry(21, "cรณdigodeรกreadocelular", valueSpecifiers[16]),
"cรณdigodeรกreadopager": new MapEntry(19, "cรณdigodeรกreadopager", valueSpecifiers[17]),
"cรณdigodeรกreadotelemรณvel": new MapEntry(23, "cรณdigodeรกreadotelemรณvel", valueSpecifiers[16]),
"cรณdigodeรกreadotrabalho": new MapEntry(22, "cรณdigodeรกreadotrabalho", valueSpecifiers[15]),
"cรณdigodeรกreanoite": new MapEntry(17, "cรณdigodeรกreanoite", valueSpecifiers[14]),
"cรณdigopostal": new MapEntry(12, "cรณdigopostal", valueSpecifiers[10]),
dagretningsnummer: new MapEntry(17, "dagretningsnummer", valueSpecifiers[15]),
dagstelefon: new MapEntry(11, "dagstelefon", valueSpecifiers[15]),
dagtelefon: new MapEntry(10, "dagtelefon", valueSpecifiers[15]),
"data de naixenรงa": new MapEntry(16, "data de naixenรงa", valueSpecifiers[4]),
"data de nascimento": new MapEntry(18, "data de nascimento", valueSpecifiers[4]),
"data di nascita": new MapEntry(15, "data di nascita", valueSpecifiers[4]),
"data naศ™terii": new MapEntry(13, "data naศ™terii", valueSpecifiers[4]),
"data urodzenia": new MapEntry(14, "data urodzenia", valueSpecifiers[4]),
"date de naissance": new MapEntry(17, "date de naissance", valueSpecifiers[4]),
"date of birth": new MapEntry(13, "date of birth", valueSpecifiers[4]),
"datum roฤ‘enja": new MapEntry(13, "datum roฤ‘enja", valueSpecifiers[4]),
"day area code": new MapEntry(13, "day area code", valueSpecifiers[15]),
"day areacode": new MapEntry(12, "day areacode", valueSpecifiers[15]),
"day phone": new MapEntry(9, "day phone", valueSpecifiers[15]),
dayareacode: new MapEntry(11, "dayareacode", valueSpecifiers[15]),
dayphone: new MapEntry(8, "dayphone", valueSpecifiers[15]),
"daytime phone": new MapEntry(13, "daytime phone", valueSpecifiers[15]),
"daytime telephone": new MapEntry(17, "daytime telephone", valueSpecifiers[15]),
delstat: new MapEntry(7, "delstat", valueSpecifiers[9]),
"dennรก predvoฤพba": new MapEntry(15, "dennรก predvoฤพba", valueSpecifiers[15]),
"dennรฉ ฤรญslo": new MapEntry(11, "dennรฉ ฤรญslo", valueSpecifiers[15]),
"dennรฝ telefรณn": new MapEntry(13, "dennรฝ telefรณn", valueSpecifiers[15]),
"deuxiรจme prรฉnom": new MapEntry(15, "deuxiรจme prรฉnom", valueSpecifiers[2]),
"direcciรณn": new MapEntry(9, "direcciรณn", valueSpecifiers[7]),
"direcciรณn 1": new MapEntry(11, "direcciรณn 1", valueSpecifiers[7]),
"direcciรณn1": new MapEntry(10, "direcciรณn1", valueSpecifiers[7]),
"dnevni telefon": new MapEntry(14, "dnevni telefon", valueSpecifiers[15]),
dojavnik: new MapEntry(8, "dojavnik", valueSpecifiers[17]),
"domรกca predvoฤพba": new MapEntry(16, "domรกca predvoฤพba", valueSpecifiers[14]),
"domรกci telefรณn": new MapEntry(14, "domรกci telefรณn", valueSpecifiers[14]),
dopnamn: new MapEntry(7, "dopnamn", valueSpecifiers[1]),
"doฤŸum": new MapEntry(5, "doฤŸum", valueSpecifiers[4]),
"doฤŸum gรผnรผ": new MapEntry(10, "doฤŸum gรผnรผ", valueSpecifiers[4]),
"doฤŸum tarihi": new MapEntry(12, "doฤŸum tarihi", valueSpecifiers[4]),
"doฤŸumgรผnรผ": new MapEntry(9, "doฤŸumgรผnรผ", valueSpecifiers[4]),
drugie: new MapEntry(6, "drugie", valueSpecifiers[2]),
"drugie imiฤ™": new MapEntry(11, "drugie imiฤ™", valueSpecifiers[2]),
"drugo ime": new MapEntry(9, "drugo ime", valueSpecifiers[2]),
"drลพava": new MapEntry(6, "drลพava", valueSpecifiers[9]),
"dรกtum narodenia": new MapEntry(15, "dรกtum narodenia", valueSpecifiers[4]),
"dรธbenavn": new MapEntry(8, "dรธbenavn", valueSpecifiers[1]),
"dรธpenavn": new MapEntry(8, "dรธpenavn", valueSpecifiers[1]),
"e-mail": new MapEntry(6, "e-mail", valueSpecifiers[6]),
"e-mail adresa": new MapEntry(13, "e-mail adresa", valueSpecifiers[6]),
"e-mail ์ฃผ์†Œ": new MapEntry(9, "e-mail ์ฃผ์†Œ", valueSpecifiers[6]),
"e-mail์ฃผ์†Œ": new MapEntry(8, "e-mail์ฃผ์†Œ", valueSpecifiers[6]),
"e-navn": new MapEntry(6, "e-navn", valueSpecifiers[3]),
"e-post": new MapEntry(6, "e-post", valueSpecifiers[6]),
"e-posta": new MapEntry(7, "e-posta", valueSpecifiers[6]),
"e-posta adresi": new MapEntry(14, "e-posta adresi", valueSpecifiers[6]),
"e-postadr": new MapEntry(9, "e-postadr", valueSpecifiers[6]),
"e-postadress": new MapEntry(12, "e-postadress", valueSpecifiers[6]),
"e-postadresse": new MapEntry(13, "e-postadresse", valueSpecifiers[6]),
"e-poลกta": new MapEntry(7, "e-poลกta", valueSpecifiers[6]),
efter: new MapEntry(5, "efter", valueSpecifiers[3]),
"eftern.": new MapEntry(7, "eftern.", valueSpecifiers[3]),
efternamn: new MapEntry(9, "efternamn", valueSpecifiers[3]),
email: new MapEntry(5, "email", valueSpecifiers[6]),
"email ์ฃผ์†Œ": new MapEntry(8, "email ์ฃผ์†Œ", valueSpecifiers[6]),
emailAddr: new MapEntry(9, "emailAddr", valueSpecifiers[6]),
emailAddress: new MapEntry(12, "emailAddress", valueSpecifiers[6]),
emailAdr: new MapEntry(8, "emailAdr", valueSpecifiers[6]),
emailAdresa: new MapEntry(11, "emailAdresa", valueSpecifiers[6]),
"email์ฃผ์†Œ": new MapEntry(7, "email์ฃผ์†Œ", valueSpecifiers[6]),
emejl: new MapEntry(5, "emejl", valueSpecifiers[6]),
empresa: new MapEntry(7, "empresa", valueSpecifiers[13]),
enamn: new MapEntry(5, "enamn", valueSpecifiers[3]),
enavn: new MapEntry(5, "enavn", valueSpecifiers[3]),
"endereรงo": new MapEntry(8, "endereรงo", valueSpecifiers[7]),
"endereรงo 1": new MapEntry(10, "endereรงo 1", valueSpecifiers[7]),
"endereรงo da rua": new MapEntry(15, "endereรงo da rua", valueSpecifiers[7]),
"endereรงo1": new MapEntry(9, "endereรงo1", valueSpecifiers[7]),
enterAddressAddressLine: new MapEntry(23, "enterAddressAddressLine", valueSpecifiers[7]),
entreprise: new MapEntry(10, "entreprise", valueSpecifiers[13]),
epost: new MapEntry(5, "epost", valueSpecifiers[6]),
eposta: new MapEntry(6, "eposta", valueSpecifiers[6]),
"eposta adresi": new MapEntry(13, "eposta adresi", valueSpecifiers[6]),
epostadress: new MapEntry(11, "epostadress", valueSpecifiers[6]),
estado: new MapEntry(6, "estado", valueSpecifiers[9]),
estat: new MapEntry(5, "estat", valueSpecifiers[9]),
"etter-": new MapEntry(6, "etter-", valueSpecifiers[3]),
etternavn: new MapEntry(9, "etternavn", valueSpecifiers[3]),
etu: new MapEntry(3, "etu", valueSpecifiers[1]),
"etun.": new MapEntry(5, "etun.", valueSpecifiers[1]),
etunimi: new MapEntry(7, "etunimi", valueSpecifiers[1]),
"ev alan kodu": new MapEntry(12, "ev alan kodu", valueSpecifiers[14]),
"ev telefonu": new MapEntry(11, "ev telefonu", valueSpecifiers[14]),
"evening area code": new MapEntry(17, "evening area code", valueSpecifiers[14]),
"evening areacode": new MapEntry(16, "evening areacode", valueSpecifiers[14]),
"evening phone": new MapEntry(13, "evening phone", valueSpecifiers[14]),
eveningareacode: new MapEntry(15, "eveningareacode", valueSpecifiers[14]),
eveningphone: new MapEntry(12, "eveningphone", valueSpecifiers[14]),
exchange: new MapEntry(8, "exchange", valueSpecifiers[12]),
eyalet: new MapEntry(6, "eyalet", valueSpecifiers[9]),
"f name": new MapEntry(6, "f name", valueSpecifiers[1]),
"f-navn": new MapEntry(6, "f-navn", valueSpecifiers[1]),
faks: new MapEntry(4, "faks", valueSpecifiers[12]),
"faks numarasฤฑ": new MapEntry(13, "faks numarasฤฑ", valueSpecifiers[12]),
faksi: new MapEntry(5, "faksi", valueSpecifiers[12]),
familie: new MapEntry(7, "familie", valueSpecifiers[3]),
familienavn: new MapEntry(11, "familienavn", valueSpecifiers[3]),
familjenamn: new MapEntry(11, "familjenamn", valueSpecifiers[3]),
fax: new MapEntry(3, "fax", valueSpecifiers[12]),
"fecha de nacimiento": new MapEntry(19, "fecha de nacimiento", valueSpecifiers[4]),
feina: new MapEntry(5, "feina", valueSpecifiers[5]),
"firemnรฉ ฤรญslo": new MapEntry(13, "firemnรฉ ฤรญslo", valueSpecifiers[15]),
"firemnรฝ telefรณn": new MapEntry(15, "firemnรฝ telefรณn", valueSpecifiers[15]),
firma: new MapEntry(5, "firma", valueSpecifiers[13]),
firmaretningsnummer: new MapEntry(19, "firmaretningsnummer", valueSpecifiers[15]),
firmatelfon: new MapEntry(11, "firmatelfon", valueSpecifiers[15]),
firmenname: new MapEntry(10, "firmenname", valueSpecifiers[13]),
first: new MapEntry(5, "first", valueSpecifiers[1]),
"first and last": new MapEntry(14, "first and last", valueSpecifiers[0]),
"first and last name": new MapEntry(19, "first and last name", valueSpecifiers[0]),
"first name": new MapEntry(10, "first name", valueSpecifiers[1]),
firstname: new MapEntry(9, "firstname", valueSpecifiers[1]),
fname: new MapEntry(5, "fname", valueSpecifiers[1]),
fnamn: new MapEntry(5, "fnamn", valueSpecifiers[1]),
fnavn: new MapEntry(5, "fnavn", valueSpecifiers[1]),
"for-": new MapEntry(4, "for-", valueSpecifiers[1]),
"forbogstav, mellemnavn": new MapEntry(22, "forbogstav, mellemnavn", valueSpecifiers[2]),
"forbokstav, mellomnavn": new MapEntry(22, "forbokstav, mellomnavn", valueSpecifiers[2]),
forename: new MapEntry(8, "forename", valueSpecifiers[1]),
fornavn: new MapEntry(7, "fornavn", valueSpecifiers[1]),
"fulde navn": new MapEntry(10, "fulde navn", valueSpecifiers[0]),
"fuldt navn": new MapEntry(10, "fuldt navn", valueSpecifiers[0]),
"full name": new MapEntry(9, "full name", valueSpecifiers[0]),
fullname: new MapEntry(8, "fullname", valueSpecifiers[0]),
"fullstรคndigt namn": new MapEntry(17, "fullstรคndigt namn", valueSpecifiers[0]),
"fullt navn": new MapEntry(10, "fullt navn", valueSpecifiers[0]),
fulltnavn: new MapEntry(9, "fulltnavn", valueSpecifiers[0]),
functie: new MapEntry(7, "functie", valueSpecifiers[5]),
"funcศ›ie": new MapEntry(7, "funcศ›ie", valueSpecifiers[5]),
"fรถdd": new MapEntry(4, "fรถdd", valueSpecifiers[4]),
"fรถdelsedag": new MapEntry(10, "fรถdelsedag", valueSpecifiers[4]),
"fรถdelsedatum": new MapEntry(12, "fรถdelsedatum", valueSpecifiers[4]),
"fรถretag": new MapEntry(7, "fรถretag", valueSpecifiers[13]),
"fรถretagstelefon": new MapEntry(15, "fรถretagstelefon", valueSpecifiers[15]),
"fรถrn.": new MapEntry(5, "fรถrn.", valueSpecifiers[1]),
"fรถrnamn": new MapEntry(7, "fรถrnamn", valueSpecifiers[1]),
"fรธdselsdag": new MapEntry(10, "fรธdselsdag", valueSpecifiers[4]),
"fรธdselsdato": new MapEntry(11, "fรธdselsdato", valueSpecifiers[4]),
"fรธdt": new MapEntry(4, "fรธdt", valueSpecifiers[4]),
gade: new MapEntry(4, "gade", valueSpecifiers[7]),
gadeadresse: new MapEntry(11, "gadeadresse", valueSpecifiers[7]),
gata: new MapEntry(4, "gata", valueSpecifiers[7]),
gate: new MapEntry(4, "gate", valueSpecifiers[7]),
gateadresse: new MapEntry(11, "gateadresse", valueSpecifiers[7]),
"gatuadr.": new MapEntry(8, "gatuadr.", valueSpecifiers[7]),
gatuadress: new MapEntry(10, "gatuadress", valueSpecifiers[7]),
geboortedatum: new MapEntry(13, "geboortedatum", valueSpecifiers[4]),
geboren: new MapEntry(7, "geboren", valueSpecifiers[4]),
"given name": new MapEntry(10, "given name", valueSpecifiers[1]),
grad: new MapEntry(4, "grad", valueSpecifiers[8]),
"gรถbek adฤฑ": new MapEntry(9, "gรถbek adฤฑ", valueSpecifiers[2]),
"gรผndรผz alan kodu": new MapEntry(16, "gรผndรผz alan kodu", valueSpecifiers[15]),
"gรผndรผz telefonu": new MapEntry(15, "gรผndรผz telefonu", valueSpecifiers[15]),
hakulaite: new MapEntry(9, "hakulaite", valueSpecifiers[17]),
hakulaitenro: new MapEntry(12, "hakulaitenro", valueSpecifiers[17]),
"hakulaitteen numero": new MapEntry(19, "hakulaitteen numero", valueSpecifiers[17]),
"hela namnet": new MapEntry(11, "hela namnet", valueSpecifiers[0]),
hemstad: new MapEntry(7, "hemstad", valueSpecifiers[8]),
hemtelefon: new MapEntry(10, "hemtelefon", valueSpecifiers[14]),
hjemmetelefon: new MapEntry(13, "hjemmetelefon", valueSpecifiers[14]),
hjemnummer: new MapEntry(10, "hjemnummer", valueSpecifiers[14]),
"home area code": new MapEntry(14, "home area code", valueSpecifiers[14]),
"home areacode": new MapEntry(13, "home areacode", valueSpecifiers[14]),
"home phone": new MapEntry(10, "home phone", valueSpecifiers[14]),
homeareacode: new MapEntry(12, "homeareacode", valueSpecifiers[14]),
homepage: new MapEntry(8, "homepage", valueSpecifiers[25]),
homephone: new MapEntry(9, "homephone", valueSpecifiers[14]),
"house name": new MapEntry(10, "house name", valueSpecifiers[7]),
icq: new MapEntry(3, "icq", valueSpecifiers[20]),
"ikinci ad": new MapEntry(9, "ikinci ad", valueSpecifiers[2]),
"ikinci adฤฑ": new MapEntry(10, "ikinci adฤฑ", valueSpecifiers[2]),
"ikinci isim": new MapEntry(11, "ikinci isim", valueSpecifiers[2]),
il: new MapEntry(2, "il", valueSpecifiers[8]),
iltaisin: new MapEntry(8, "iltaisin", valueSpecifiers[14]),
ime: new MapEntry(3, "ime", valueSpecifiers[0]),
"imiฤ™": new MapEntry(4, "imiฤ™", valueSpecifiers[1]),
"imiฤ™ i nazwisko": new MapEntry(15, "imiฤ™ i nazwisko", valueSpecifiers[0]),
"ind. e-mail": new MapEntry(11, "ind. e-mail", valueSpecifiers[6]),
"ind. posta elettronica": new MapEntry(22, "ind. posta elettronica", valueSpecifiers[6]),
"ind. rรฉg.": new MapEntry(9, "ind. rรฉg.", valueSpecifiers[12]),
indicatif: new MapEntry(9, "indicatif", valueSpecifiers[12]),
"indicatif de zone": new MapEntry(17, "indicatif de zone", valueSpecifiers[12]),
"indicatif rรฉgional": new MapEntry(18, "indicatif rรฉgional", valueSpecifiers[12]),
"indicatif tรฉlรฉphonique": new MapEntry(22, "indicatif tรฉlรฉphonique", valueSpecifiers[12]),
indirizzo: new MapEntry(9, "indirizzo", valueSpecifiers[7]),
"indirizzo 1": new MapEntry(11, "indirizzo 1", valueSpecifiers[7]),
"indirizzo di posta elettronica": new MapEntry(30, "indirizzo di posta elettronica", valueSpecifiers[6]),
"indirizzo e-mail": new MapEntry(16, "indirizzo e-mail", valueSpecifiers[6]),
"indirizzo postale": new MapEntry(17, "indirizzo postale", valueSpecifiers[7]),
indirizzo1: new MapEntry(10, "indirizzo1", valueSpecifiers[7]),
"inicial do 2ยบ nome": new MapEntry(18, "inicial do 2ยบ nome", valueSpecifiers[2]),
"inicial do meio": new MapEntry(15, "inicial do meio", valueSpecifiers[2]),
inicialdomeio: new MapEntry(13, "inicialdomeio", valueSpecifiers[2]),
"iniciรกla strednรฉho": new MapEntry(18, "iniciรกla strednรฉho", valueSpecifiers[2]),
"iniciรกla strednรฉho mena": new MapEntry(23, "iniciรกla strednรฉho mena", valueSpecifiers[2]),
"inicjaล‚ drugiego imienia": new MapEntry(24, "inicjaล‚ drugiego imienia", valueSpecifiers[2]),
"initiaal tweede naam": new MapEntry(20, "initiaal tweede naam", valueSpecifiers[2]),
"initial, mellemnavn": new MapEntry(19, "initial, mellemnavn", valueSpecifiers[2]),
"initial, mellomnavn": new MapEntry(19, "initial, mellomnavn", valueSpecifiers[2]),
"initiale autre prรฉnom": new MapEntry(21, "initiale autre prรฉnom", valueSpecifiers[2]),
"initiale deuxiรจme prรฉnom": new MapEntry(24, "initiale deuxiรจme prรฉnom", valueSpecifiers[2]),
"initiale second prรฉnom": new MapEntry(22, "initiale second prรฉnom", valueSpecifiers[2]),
iniziale: new MapEntry(8, "iniziale", valueSpecifiers[2]),
"iniziale secondo nome": new MapEntry(21, "iniziale secondo nome", valueSpecifiers[2]),
ir: new MapEntry(2, "ir", valueSpecifiers[12]),
isim: new MapEntry(4, "isim", valueSpecifiers[0]),
"iลŸ alan kodu": new MapEntry(12, "iลŸ alan kodu", valueSpecifiers[15]),
"iลŸ telefonu": new MapEntry(11, "iลŸ telefonu", valueSpecifiers[15]),
"iลŸ รผnvanฤฑ": new MapEntry(9, "iลŸ รผnvanฤฑ", valueSpecifiers[5]),
jabber: new MapEntry(6, "jabber", valueSpecifiers[21]),
"job title": new MapEntry(9, "job title", valueSpecifiers[5]),
jobbretningsnummer: new MapEntry(18, "jobbretningsnummer", valueSpecifiers[15]),
jobbtelefon: new MapEntry(11, "jobbtelefon", valueSpecifiers[15]),
jobbtitel: new MapEntry(9, "jobbtitel", valueSpecifiers[5]),
jobtitle: new MapEntry(8, "jobtitle", valueSpecifiers[5]),
"judeศ›": new MapEntry(5, "judeศ›", valueSpecifiers[9]),
"k.": new MapEntry(2, "k.", valueSpecifiers[7]),
katu: new MapEntry(4, "katu", valueSpecifiers[7]),
katuosoite: new MapEntry(10, "katuosoite", valueSpecifiers[7]),
kaupunki: new MapEntry(8, "kaupunki", valueSpecifiers[8]),
"kodin suuntanumero": new MapEntry(18, "kodin suuntanumero", valueSpecifiers[14]),
"koko nimi": new MapEntry(9, "koko nimi", valueSpecifiers[0]),
kommun: new MapEntry(6, "kommun", valueSpecifiers[8]),
kontor: new MapEntry(6, "kontor", valueSpecifiers[13]),
kontorstelefon: new MapEntry(14, "kontorstelefon", valueSpecifiers[15]),
koti: new MapEntry(4, "koti", valueSpecifiers[14]),
kotinro: new MapEntry(7, "kotinro", valueSpecifiers[14]),
kotinumero: new MapEntry(10, "kotinumero", valueSpecifiers[14]),
"kotipuh.": new MapEntry(8, "kotipuh.", valueSpecifiers[14]),
kotipuhelin: new MapEntry(11, "kotipuhelin", valueSpecifiers[14]),
krajina: new MapEntry(7, "krajina", valueSpecifiers[11]),
"krst meno": new MapEntry(9, "krst meno", valueSpecifiers[1]),
"krst. meno": new MapEntry(10, "krst. meno", valueSpecifiers[1]),
"krstnรฉ": new MapEntry(6, "krstnรฉ", valueSpecifiers[1]),
"krstnรฉ meno": new MapEntry(11, "krstnรฉ meno", valueSpecifiers[1]),
"kuruluลŸ": new MapEntry(7, "kuruluลŸ", valueSpecifiers[13]),
kurum: new MapEntry(5, "kurum", valueSpecifiers[13]),
kutsumanimi: new MapEntry(11, "kutsumanimi", valueSpecifiers[1]),
"kuฤ‡na adresa": new MapEntry(12, "kuฤ‡na adresa", valueSpecifiers[7]),
"kuฤ‡ni telefon": new MapEntry(13, "kuฤ‡ni telefon", valueSpecifiers[14]),
kveldsretningsnummer: new MapEntry(20, "kveldsretningsnummer", valueSpecifiers[14]),
kveldstelefon: new MapEntry(13, "kveldstelefon", valueSpecifiers[14]),
"kvรคllsnummer": new MapEntry(12, "kvรคllsnummer", valueSpecifiers[14]),
"l name": new MapEntry(6, "l name", valueSpecifiers[3]),
land: new MapEntry(4, "land", valueSpecifiers[11]),
last: new MapEntry(4, "last", valueSpecifiers[3]),
"last name": new MapEntry(9, "last name", valueSpecifiers[3]),
lastname: new MapEntry(8, "lastname", valueSpecifiers[3]),
"linea indirizzo": new MapEntry(15, "linea indirizzo", valueSpecifiers[7]),
"lloc de treball": new MapEntry(15, "lloc de treball", valueSpecifiers[5]),
lname: new MapEntry(5, "lname", valueSpecifiers[3]),
"lรคn": new MapEntry(3, "lรคn", valueSpecifiers[9]),
"lรครคni": new MapEntry(5, "lรครคni", valueSpecifiers[9]),
"m-navn": new MapEntry(6, "m-navn", valueSpecifiers[2]),
maa: new MapEntry(3, "maa", valueSpecifiers[11]),
mail: new MapEntry(4, "mail", valueSpecifiers[6]),
"matkap.": new MapEntry(7, "matkap.", valueSpecifiers[16]),
"matkapuhelimen operaattoritunnus": new MapEntry(32, "matkapuhelimen operaattoritunnus", valueSpecifiers[16]),
matkapuhelin: new MapEntry(12, "matkapuhelin", valueSpecifiers[16]),
matronyme: new MapEntry(9, "matronyme", valueSpecifiers[2]),
meio: new MapEntry(4, "meio", valueSpecifiers[2]),
mejl: new MapEntry(4, "mejl", valueSpecifiers[6]),
mejladress: new MapEntry(10, "mejladress", valueSpecifiers[6]),
mellan: new MapEntry(6, "mellan", valueSpecifiers[2]),
"mellan initial": new MapEntry(14, "mellan initial", valueSpecifiers[2]),
mellaninitial: new MapEntry(13, "mellaninitial", valueSpecifiers[2]),
mellannamn: new MapEntry(10, "mellannamn", valueSpecifiers[2]),
mellem: new MapEntry(6, "mellem", valueSpecifiers[2]),
"mellem navn": new MapEntry(11, "mellem navn", valueSpecifiers[2]),
"mellom-": new MapEntry(7, "mellom-", valueSpecifiers[2]),
mellomnavn: new MapEntry(10, "mellomnavn", valueSpecifiers[2]),
meno: new MapEntry(4, "meno", valueSpecifiers[0]),
meslek: new MapEntry(6, "meslek", valueSpecifiers[5]),
"mesleฤŸi": new MapEntry(7, "mesleฤŸi", valueSpecifiers[5]),
"messagerie รฉlectronique": new MapEntry(23, "messagerie รฉlectronique", valueSpecifiers[6]),
messageur: new MapEntry(9, "messageur", valueSpecifiers[17]),
mesto: new MapEntry(5, "mesto", valueSpecifiers[8]),
middle: new MapEntry(6, "middle", valueSpecifiers[2]),
"middle initial": new MapEntry(14, "middle initial", valueSpecifiers[2]),
"middle name": new MapEntry(11, "middle name", valueSpecifiers[2]),
middleinitial: new MapEntry(13, "middleinitial", valueSpecifiers[2]),
middlename: new MapEntry(10, "middlename", valueSpecifiers[2]),
mobiel: new MapEntry(6, "mobiel", valueSpecifiers[16]),
"mobiele telefoon": new MapEntry(16, "mobiele telefoon", valueSpecifiers[16]),
mobiili: new MapEntry(7, "mobiili", valueSpecifiers[16]),
mobil: new MapEntry(5, "mobil", valueSpecifiers[16]),
"mobil telefon": new MapEntry(13, "mobil telefon", valueSpecifiers[16]),
"mobile area code": new MapEntry(16, "mobile area code", valueSpecifiers[16]),
"mobile areacode": new MapEntry(15, "mobile areacode", valueSpecifiers[16]),
"mobile phone": new MapEntry(12, "mobile phone", valueSpecifiers[16]),
mobileareacode: new MapEntry(14, "mobileareacode", valueSpecifiers[16]),
mobilephone: new MapEntry(11, "mobilephone", valueSpecifiers[16]),
"mobilni telefon": new MapEntry(15, "mobilni telefon", valueSpecifiers[16]),
"mobilnรก predvoฤพba": new MapEntry(17, "mobilnรก predvoฤพba", valueSpecifiers[16]),
"mobilnรฝ telefรณn": new MapEntry(15, "mobilnรฝ telefรณn", valueSpecifiers[16]),
mobilretningsnummer: new MapEntry(19, "mobilretningsnummer", valueSpecifiers[16]),
mobiltel: new MapEntry(8, "mobiltel", valueSpecifiers[16]),
mobiltelefon: new MapEntry(12, "mobiltelefon", valueSpecifiers[16]),
mobitel: new MapEntry(7, "mobitel", valueSpecifiers[16]),
msn: new MapEntry(3, "msn", valueSpecifiers[22]),
"mรฉl.": new MapEntry(4, "mรฉl.", valueSpecifiers[6]),
"mรฒbil": new MapEntry(5, "mรฒbil", valueSpecifiers[16]),
"mรณvil": new MapEntry(5, "mรณvil", valueSpecifiers[16]),
naam: new MapEntry(4, "naam", valueSpecifiers[0]),
nacimiento: new MapEntry(10, "nacimiento", valueSpecifiers[4]),
naissance: new MapEntry(9, "naissance", valueSpecifiers[4]),
"naixenรงa": new MapEntry(8, "naixenรงa", valueSpecifiers[4]),
name: new MapEntry(4, "name", valueSpecifiers[0]),
namef: new MapEntry(5, "namef", valueSpecifiers[1]),
namel: new MapEntry(5, "namel", valueSpecifiers[3]),
namn: new MapEntry(4, "namn", valueSpecifiers[0]),
narodeniny: new MapEntry(10, "narodeniny", valueSpecifiers[4]),
"narodenรฝ/รก": new MapEntry(10, "narodenรฝ/รก", valueSpecifiers[4]),
nascido: new MapEntry(7, "nascido", valueSpecifiers[4]),
"nascido(a)": new MapEntry(10, "nascido(a)", valueSpecifiers[4]),
nascut: new MapEntry(6, "nascut", valueSpecifiers[4]),
"nato/a": new MapEntry(6, "nato/a", valueSpecifiers[4]),
navn: new MapEntry(4, "navn", valueSpecifiers[0]),
nazwisko: new MapEntry(8, "nazwisko", valueSpecifiers[3]),
netnummer: new MapEntry(9, "netnummer", valueSpecifiers[12]),
"netnummer 's avonds": new MapEntry(19, "netnummer 's avonds", valueSpecifiers[14]),
"netnummer GSM": new MapEntry(13, "netnummer GSM", valueSpecifiers[16]),
"netnummer bedrijf": new MapEntry(17, "netnummer bedrijf", valueSpecifiers[15]),
"netnummer mobiel": new MapEntry(16, "netnummer mobiel", valueSpecifiers[16]),
"netnummer mobiele telefoon": new MapEntry(26, "netnummer mobiele telefoon", valueSpecifiers[16]),
"netnummer overdag": new MapEntry(17, "netnummer overdag", valueSpecifiers[15]),
"netnummer privรฉ": new MapEntry(15, "netnummer privรฉ", valueSpecifiers[14]),
"netnummer semafoon": new MapEntry(18, "netnummer semafoon", valueSpecifiers[17]),
"netnummer thuis": new MapEntry(15, "netnummer thuis", valueSpecifiers[14]),
"netnummer werk": new MapEntry(14, "netnummer werk", valueSpecifiers[15]),
"netnummer zakelijk": new MapEntry(18, "netnummer zakelijk", valueSpecifiers[15]),
nick: new MapEntry(4, "nick", valueSpecifiers[18]),
nimi: new MapEntry(4, "nimi", valueSpecifiers[0]),
nom: new MapEntry(3, "nom", valueSpecifiers[3]),
"nom complet": new MapEntry(11, "nom complet", valueSpecifiers[0]),
"nom de baptรชme": new MapEntry(14, "nom de baptรชme", valueSpecifiers[1]),
"nom de famille": new MapEntry(14, "nom de famille", valueSpecifiers[3]),
"nom entier": new MapEntry(10, "nom entier", valueSpecifiers[0]),
"nom matronymique": new MapEntry(16, "nom matronymique", valueSpecifiers[2]),
"nom patronyme": new MapEntry(13, "nom patronyme", valueSpecifiers[3]),
"nom patronymique": new MapEntry(16, "nom patronymique", valueSpecifiers[3]),
nombre: new MapEntry(6, "nombre", valueSpecifiers[1]),
"nombre completo": new MapEntry(15, "nombre completo", valueSpecifiers[0]),
nome: new MapEntry(4, "nome", valueSpecifiers[1]),
"nome completo": new MapEntry(13, "nome completo", valueSpecifiers[0]),
"nome de baptismo": new MapEntry(16, "nome de baptismo", valueSpecifiers[1]),
"nome do meio": new MapEntry(12, "nome do meio", valueSpecifiers[2]),
"nome e cognome": new MapEntry(14, "nome e cognome", valueSpecifiers[0]),
nomedomeio: new MapEntry(10, "nomedomeio", valueSpecifiers[2]),
nume: new MapEntry(4, "nume", valueSpecifiers[0]),
"nume botez": new MapEntry(10, "nume botez", valueSpecifiers[1]),
"nume complet": new MapEntry(12, "nume complet", valueSpecifiers[0]),
"nume familie": new MapEntry(12, "nume familie", valueSpecifiers[3]),
"nume รฎntreg": new MapEntry(11, "nume รฎntreg", valueSpecifiers[0]),
"numero di tel. ufficio": new MapEntry(22, "numero di tel. ufficio", valueSpecifiers[15]),
"numero di telefono": new MapEntry(18, "numero di telefono", valueSpecifiers[12]),
"numero di telefono casa": new MapEntry(23, "numero di telefono casa", valueSpecifiers[14]),
"numero di telefono lavoro": new MapEntry(25, "numero di telefono lavoro", valueSpecifiers[15]),
"numero telefono": new MapEntry(15, "numero telefono", valueSpecifiers[12]),
nummer: new MapEntry(6, "nummer", valueSpecifiers[12]),
"numรฉro de mobile": new MapEntry(16, "numรฉro de mobile", valueSpecifiers[16]),
"numรฉro de tรฉl.": new MapEntry(14, "numรฉro de tรฉl.", valueSpecifiers[12]),
"numรฉro de tรฉlรฉavertisseur": new MapEntry(25, "numรฉro de tรฉlรฉavertisseur", valueSpecifiers[17]),
"numรฉro de tรฉlรฉphone": new MapEntry(19, "numรฉro de tรฉlรฉphone", valueSpecifiers[12]),
"numรฉro de tรฉlรฉphone domicile": new MapEntry(28, "numรฉro de tรฉlรฉphone domicile", valueSpecifiers[14]),
"numรฉro postal": new MapEntry(13, "numรฉro postal", valueSpecifiers[10]),
"numรฉro postal d'acheminement": new MapEntry(28, "numรฉro postal d'acheminement", valueSpecifiers[10]),
"numฤƒr de telefon": new MapEntry(16, "numฤƒr de telefon", valueSpecifiers[12]),
"numฤƒr pager": new MapEntry(11, "numฤƒr pager", valueSpecifiers[17]),
"numฤƒr telefon": new MapEntry(13, "numฤƒr telefon", valueSpecifiers[12]),
"nรฉ(e) le": new MapEntry(8, "nรฉ(e) le", valueSpecifiers[4]),
"nรบmero de telefone": new MapEntry(18, "nรบmero de telefone", valueSpecifiers[12]),
"nรบmero de telรจfon": new MapEntry(17, "nรบmero de telรจfon", valueSpecifiers[12]),
"nรบmero de telรฉfono": new MapEntry(18, "nรบmero de telรฉfono", valueSpecifiers[12]),
"omdrรฅdenr.": new MapEntry(10, "omdrรฅdenr.", valueSpecifiers[12]),
"omrรฅdenummer": new MapEntry(12, "omrรฅdenummer", valueSpecifiers[12]),
"omrรฅdenummer om dagen": new MapEntry(21, "omrรฅdenummer om dagen", valueSpecifiers[15]),
"omrรฅdenummer til personsรธger": new MapEntry(28, "omrรฅdenummer til personsรธger", valueSpecifiers[17]),
"omrรฅdenummer, aften": new MapEntry(19, "omrรฅdenummer, aften", valueSpecifiers[14]),
"omrรฅdenummer, arbejde": new MapEntry(21, "omrรฅdenummer, arbejde", valueSpecifiers[15]),
"omrรฅdenummer, dag": new MapEntry(17, "omrรฅdenummer, dag", valueSpecifiers[15]),
"omrรฅdenummer, firma": new MapEntry(19, "omrรฅdenummer, firma", valueSpecifiers[15]),
"omrรฅdenummer, mobil": new MapEntry(19, "omrรฅdenummer, mobil", valueSpecifiers[16]),
"omrรฅdenummer, personsรธger": new MapEntry(25, "omrรฅdenummer, personsรธger", valueSpecifiers[17]),
"omrรฅdenummer, privat": new MapEntry(20, "omrรฅdenummer, privat", valueSpecifiers[14]),
"omrรฅdenummer, selskab": new MapEntry(21, "omrรฅdenummer, selskab", valueSpecifiers[15]),
operaattoritunnus: new MapEntry(17, "operaattoritunnus", valueSpecifiers[16]),
"oraศ™": new MapEntry(4, "oraศ™", valueSpecifiers[8]),
organisaatio: new MapEntry(12, "organisaatio", valueSpecifiers[13]),
organisasjon: new MapEntry(12, "organisasjon", valueSpecifiers[13]),
organisatie: new MapEntry(11, "organisatie", valueSpecifiers[13]),
organisation: new MapEntry(12, "organisation", valueSpecifiers[13]),
organisme: new MapEntry(9, "organisme", valueSpecifiers[13]),
"organitzaciรณ": new MapEntry(12, "organitzaciรณ", valueSpecifiers[13]),
organizacija: new MapEntry(12, "organizacija", valueSpecifiers[13]),
"organizaciรณn": new MapEntry(12, "organizaciรณn", valueSpecifiers[13]),
organizasyon: new MapEntry(12, "organizasyon", valueSpecifiers[13]),
organization: new MapEntry(12, "organization", valueSpecifiers[13]),
"organizaรงรฃo": new MapEntry(11, "organizaรงรฃo", valueSpecifiers[13]),
"organizaศ›ie": new MapEntry(11, "organizaศ›ie", valueSpecifiers[13]),
organizzazione: new MapEntry(14, "organizzazione", valueSpecifiers[13]),
"organizรกcia": new MapEntry(11, "organizรกcia", valueSpecifiers[13]),
ort: new MapEntry(3, "ort", valueSpecifiers[8]),
osavaltio: new MapEntry(9, "osavaltio", valueSpecifiers[9]),
osoite: new MapEntry(6, "osoite", valueSpecifiers[7]),
"osoite 1": new MapEntry(8, "osoite 1", valueSpecifiers[7]),
paese: new MapEntry(5, "paese", valueSpecifiers[11]),
pager: new MapEntry(5, "pager", valueSpecifiers[17]),
"pager area code": new MapEntry(15, "pager area code", valueSpecifiers[17]),
"pager areacode": new MapEntry(14, "pager areacode", valueSpecifiers[17]),
"pager phone": new MapEntry(11, "pager phone", valueSpecifiers[17]),
pagerareacode: new MapEntry(13, "pagerareacode", valueSpecifiers[17]),
pagerphone: new MapEntry(10, "pagerphone", valueSpecifiers[17]),
pagette: new MapEntry(7, "pagette", valueSpecifiers[17]),
pageur: new MapEntry(6, "pageur", valueSpecifiers[17]),
paikkakunta: new MapEntry(11, "paikkakunta", valueSpecifiers[8]),
patronyme: new MapEntry(9, "patronyme", valueSpecifiers[3]),
pays: new MapEntry(4, "pays", valueSpecifiers[11]),
"paรญs": new MapEntry(4, "paรญs", valueSpecifiers[11]),
"personsรถk": new MapEntry(9, "personsรถk", valueSpecifiers[17]),
"personsรถkare": new MapEntry(12, "personsรถkare", valueSpecifiers[17]),
"personsรธger": new MapEntry(11, "personsรธger", valueSpecifiers[17]),
"personsรธger nr.": new MapEntry(15, "personsรธger nr.", valueSpecifiers[17]),
"personsรธkernr.": new MapEntry(14, "personsรธkernr.", valueSpecifiers[17]),
"personsรธkernummer": new MapEntry(17, "personsรธkernummer", valueSpecifiers[17]),
"petit nom": new MapEntry(9, "petit nom", valueSpecifiers[1]),
phone: new MapEntry(5, "phone", valueSpecifiers[12]),
"phone number": new MapEntry(12, "phone number", valueSpecifiers[12]),
phonenumber: new MapEntry(11, "phonenumber", valueSpecifiers[12]),
"pierwsze imiฤ™": new MapEntry(13, "pierwsze imiฤ™", valueSpecifiers[1]),
plaats: new MapEntry(6, "plaats", valueSpecifiers[8]),
pnome: new MapEntry(5, "pnome", valueSpecifiers[1]),
pnume: new MapEntry(5, "pnume", valueSpecifiers[1]),
posao: new MapEntry(5, "posao", valueSpecifiers[5]),
"poslovni telefon": new MapEntry(16, "poslovni telefon", valueSpecifiers[15]),
"post code": new MapEntry(9, "post code", valueSpecifiers[10]),
"posta elettronica": new MapEntry(17, "posta elettronica", valueSpecifiers[6]),
"posta kodu": new MapEntry(10, "posta kodu", valueSpecifiers[10]),
postal: new MapEntry(6, "postal", valueSpecifiers[10]),
"postal code": new MapEntry(11, "postal code", valueSpecifiers[10]),
postalcode: new MapEntry(10, "postalcode", valueSpecifiers[10]),
postcode: new MapEntry(8, "postcode", valueSpecifiers[10]),
poste: new MapEntry(5, "poste", valueSpecifiers[5]),
postinro: new MapEntry(8, "postinro", valueSpecifiers[10]),
postinumero: new MapEntry(11, "postinumero", valueSpecifiers[10]),
postitoimipaikka: new MapEntry(16, "postitoimipaikka", valueSpecifiers[8]),
"postnr.": new MapEntry(7, "postnr.", valueSpecifiers[10]),
postnummer: new MapEntry(10, "postnummer", valueSpecifiers[10]),
poststed: new MapEntry(8, "poststed", valueSpecifiers[8]),
"pozivni broj": new MapEntry(12, "pozivni broj", valueSpecifiers[12]),
"pozรญcia": new MapEntry(7, "pozรญcia", valueSpecifiers[5]),
"poลกtanski br.": new MapEntry(13, "poลกtanski br.", valueSpecifiers[10]),
"poลกtanski broj": new MapEntry(14, "poลกtanski broj", valueSpecifiers[10]),
"poลกtovรฉ smerovacie ฤรญslo": new MapEntry(24, "poลกtovรฉ smerovacie ฤรญslo", valueSpecifiers[10]),
"pracovnรก pozรญcia": new MapEntry(16, "pracovnรก pozรญcia", valueSpecifiers[5]),
"pracovnรก predvoฤพba": new MapEntry(18, "pracovnรก predvoฤพba", valueSpecifiers[15]),
"pracovnรฝ telefรณn": new MapEntry(16, "pracovnรฝ telefรณn", valueSpecifiers[15]),
"pre nume": new MapEntry(8, "pre nume", valueSpecifiers[1]),
"predvoฤพba": new MapEntry(9, "predvoฤพba", valueSpecifiers[12]),
"predvoฤพba do prรกce": new MapEntry(18, "predvoฤพba do prรกce", valueSpecifiers[15]),
"predvoฤพba domov": new MapEntry(15, "predvoฤพba domov", valueSpecifiers[14]),
"predvoฤพba firmy": new MapEntry(15, "predvoฤพba firmy", valueSpecifiers[15]),
"predvoฤพba mobilnรฉho telefรณnu": new MapEntry(28, "predvoฤพba mobilnรฉho telefรณnu", valueSpecifiers[16]),
"predvoฤพba pagera": new MapEntry(16, "predvoฤพba pagera", valueSpecifiers[17]),
"predvoฤพba spoloฤnosti": new MapEntry(21, "predvoฤพba spoloฤnosti", valueSpecifiers[15]),
"pref. cercapersone": new MapEntry(18, "pref. cercapersone", valueSpecifiers[17]),
prefijo: new MapEntry(7, "prefijo", valueSpecifiers[12]),
prefisso: new MapEntry(8, "prefisso", valueSpecifiers[12]),
"prefisso cell.": new MapEntry(14, "prefisso cell.", valueSpecifiers[16]),
"prefisso cellulare": new MapEntry(18, "prefisso cellulare", valueSpecifiers[16]),
"prefisso cercapers.": new MapEntry(19, "prefisso cercapers.", valueSpecifiers[17]),
"prefisso cercapersone": new MapEntry(21, "prefisso cercapersone", valueSpecifiers[17]),
"prefisso lavoro": new MapEntry(15, "prefisso lavoro", valueSpecifiers[15]),
"prefisso locale": new MapEntry(15, "prefisso locale", valueSpecifiers[12]),
"prefisso numero lavoro": new MapEntry(22, "prefisso numero lavoro", valueSpecifiers[15]),
"prefisso ore serali": new MapEntry(19, "prefisso ore serali", valueSpecifiers[14]),
"prefisso tel. privato": new MapEntry(21, "prefisso tel. privato", valueSpecifiers[14]),
"prefisso telefono abitazione": new MapEntry(28, "prefisso telefono abitazione", valueSpecifiers[14]),
"prefisso telefono azienda": new MapEntry(25, "prefisso telefono azienda", valueSpecifiers[15]),
"prefisso telefono casa": new MapEntry(22, "prefisso telefono casa", valueSpecifiers[14]),
"prefisso telefono cellulare": new MapEntry(27, "prefisso telefono cellulare", valueSpecifiers[16]),
"prefisso telefono di casa": new MapEntry(25, "prefisso telefono di casa", valueSpecifiers[14]),
"prefisso telefono lavoro": new MapEntry(24, "prefisso telefono lavoro", valueSpecifiers[15]),
"prefisso telefono ufficio": new MapEntry(25, "prefisso telefono ufficio", valueSpecifiers[15]),
"prefisso ufficio": new MapEntry(16, "prefisso ufficio", valueSpecifiers[15]),
prefix: new MapEntry(6, "prefix", valueSpecifiers[12]),
"prefix mobil": new MapEntry(12, "prefix mobil", valueSpecifiers[16]),
"prefix pager": new MapEntry(12, "prefix pager", valueSpecifiers[17]),
"prefix telefon acasฤƒ": new MapEntry(20, "prefix telefon acasฤƒ", valueSpecifiers[14]),
"prefix telefon birou": new MapEntry(20, "prefix telefon birou", valueSpecifiers[15]),
"prefix telefon companie": new MapEntry(23, "prefix telefon companie", valueSpecifiers[15]),
"prefix telefon domiciliu": new MapEntry(24, "prefix telefon domiciliu", valueSpecifiers[14]),
"prefix telefon lucru": new MapEntry(20, "prefix telefon lucru", valueSpecifiers[15]),
"prefix telefon searฤƒ": new MapEntry(20, "prefix telefon searฤƒ", valueSpecifiers[14]),
"prefix telefon serviciu": new MapEntry(23, "prefix telefon serviciu", valueSpecifiers[15]),
"prefix telefon zi": new MapEntry(17, "prefix telefon zi", valueSpecifiers[15]),
"prefix zonal": new MapEntry(12, "prefix zonal", valueSpecifiers[12]),
prenume: new MapEntry(7, "prenume", valueSpecifiers[1]),
"prenume secundar": new MapEntry(16, "prenume secundar", valueSpecifiers[2]),
prezime: new MapEntry(7, "prezime", valueSpecifiers[3]),
primeiro: new MapEntry(8, "primeiro", valueSpecifiers[1]),
"primeiro nome": new MapEntry(13, "primeiro nome", valueSpecifiers[1]),
primeironome: new MapEntry(12, "primeironome", valueSpecifiers[1]),
privat: new MapEntry(6, "privat", valueSpecifiers[14]),
profesija: new MapEntry(9, "profesija", valueSpecifiers[5]),
profession: new MapEntry(10, "profession", valueSpecifiers[5]),
province: new MapEntry(8, "province", valueSpecifiers[9]),
provincia: new MapEntry(9, "provincia", valueSpecifiers[9]),
provins: new MapEntry(7, "provins", valueSpecifiers[9]),
"provรญncia": new MapEntry(9, "provรญncia", valueSpecifiers[9]),
"prรฉnom": new MapEntry(6, "prรฉnom", valueSpecifiers[1]),
"prรฉnom usuel": new MapEntry(12, "prรฉnom usuel", valueSpecifiers[1]),
"puesto de trabajo": new MapEntry(17, "puesto de trabajo", valueSpecifiers[5]),
"puh.num.": new MapEntry(8, "puh.num.", valueSpecifiers[12]),
puhelin: new MapEntry(7, "puhelin", valueSpecifiers[12]),
"puhelin pรคivรคsaikaan": new MapEntry(20, "puhelin pรคivรคsaikaan", valueSpecifiers[15]),
puhelinnro: new MapEntry(10, "puhelinnro", valueSpecifiers[12]),
puhelinnumero: new MapEntry(13, "puhelinnumero", valueSpecifiers[12]),
"puno ime": new MapEntry(8, "puno ime", valueSpecifiers[0]),
"pรคivisin": new MapEntry(8, "pรคivisin", valueSpecifiers[15]),
qq: new MapEntry(2, "qq", valueSpecifiers[23]),
qualifica: new MapEntry(9, "qualifica", valueSpecifiers[5]),
radiomessageur: new MapEntry(14, "radiomessageur", valueSpecifiers[17]),
"regiรฃo": new MapEntry(6, "regiรฃo", valueSpecifiers[9]),
"retningsnr.": new MapEntry(11, "retningsnr.", valueSpecifiers[12]),
"retningsnr., personsรธker": new MapEntry(24, "retningsnr., personsรธker", valueSpecifiers[17]),
retningsnummer: new MapEntry(14, "retningsnummer", valueSpecifiers[12]),
"retningsnummer, arbeid": new MapEntry(22, "retningsnummer, arbeid", valueSpecifiers[15]),
"retningsnummer, bedrift": new MapEntry(23, "retningsnummer, bedrift", valueSpecifiers[15]),
"retningsnummer, dag": new MapEntry(19, "retningsnummer, dag", valueSpecifiers[15]),
"retningsnummer, dagtid": new MapEntry(22, "retningsnummer, dagtid", valueSpecifiers[15]),
"retningsnummer, firma": new MapEntry(21, "retningsnummer, firma", valueSpecifiers[15]),
"retningsnummer, hjem": new MapEntry(20, "retningsnummer, hjem", valueSpecifiers[14]),
"retningsnummer, jobb": new MapEntry(20, "retningsnummer, jobb", valueSpecifiers[15]),
"retningsnummer, kveld": new MapEntry(21, "retningsnummer, kveld", valueSpecifiers[14]),
"retningsnummer, kveldstid": new MapEntry(25, "retningsnummer, kveldstid", valueSpecifiers[14]),
"retningsnummer, mobil": new MapEntry(21, "retningsnummer, mobil", valueSpecifiers[16]),
"retningsnummer, mobiltelefon": new MapEntry(28, "retningsnummer, mobiltelefon", valueSpecifiers[16]),
"retningsnummer, personsรธker": new MapEntry(27, "retningsnummer, personsรธker", valueSpecifiers[17]),
"retningsnummer, selskap": new MapEntry(23, "retningsnummer, selskap", valueSpecifiers[15]),
riktnr: new MapEntry(6, "riktnr", valueSpecifiers[12]),
riktnummer: new MapEntry(10, "riktnummer", valueSpecifiers[12]),
"riktnummer arbetet": new MapEntry(18, "riktnummer arbetet", valueSpecifiers[15]),
"riktnummer dagtid": new MapEntry(17, "riktnummer dagtid", valueSpecifiers[15]),
"riktnummer fรถretaget": new MapEntry(20, "riktnummer fรถretaget", valueSpecifiers[15]),
"riktnummer hem": new MapEntry(14, "riktnummer hem", valueSpecifiers[14]),
"riktnummer kontoret": new MapEntry(19, "riktnummer kontoret", valueSpecifiers[15]),
"riktnummer kvรคllstid": new MapEntry(20, "riktnummer kvรคllstid", valueSpecifiers[14]),
"riktnummer mobil": new MapEntry(16, "riktnummer mobil", valueSpecifiers[16]),
"riktnummer mobiltelefon": new MapEntry(23, "riktnummer mobiltelefon", valueSpecifiers[16]),
"riktnummer personsรถk": new MapEntry(20, "riktnummer personsรถk", valueSpecifiers[17]),
"riktnummer personsรถkare": new MapEntry(23, "riktnummer personsรถkare", valueSpecifiers[17]),
"roฤ‘endan": new MapEntry(8, "roฤ‘endan", valueSpecifiers[4]),
rua: new MapEntry(3, "rua", valueSpecifiers[7]),
rue: new MapEntry(3, "rue", valueSpecifiers[7]),
"ruolo professionale": new MapEntry(19, "ruolo professionale", valueSpecifiers[5]),
"rรฉcepteur de radiomessagerie": new MapEntry(28, "rรฉcepteur de radiomessagerie", valueSpecifiers[17]),
"rรฉgion": new MapEntry(6, "rรฉgion", valueSpecifiers[9]),
"s-posti": new MapEntry(7, "s-posti", valueSpecifiers[6]),
"second prรฉnom": new MapEntry(13, "second prรฉnom", valueSpecifiers[2]),
"secondo nome": new MapEntry(12, "secondo nome", valueSpecifiers[2]),
secundar: new MapEntry(8, "secundar", valueSpecifiers[2]),
"segon nom": new MapEntry(9, "segon nom", valueSpecifiers[2]),
"segundo nombre": new MapEntry(14, "segundo nombre", valueSpecifiers[2]),
selskak: new MapEntry(7, "selskak", valueSpecifiers[13]),
selskap: new MapEntry(7, "selskap", valueSpecifiers[13]),
semafoon: new MapEntry(8, "semafoon", valueSpecifiers[17]),
skype: new MapEntry(5, "skype", valueSpecifiers[24]),
"sluลพbeni telefon": new MapEntry(16, "sluลพbeni telefon", valueSpecifiers[15]),
"smerovacie ฤรญslo": new MapEntry(16, "smerovacie ฤรญslo", valueSpecifiers[10]),
sobrenome: new MapEntry(9, "sobrenome", valueSpecifiers[3]),
"societร ": new MapEntry(7, "societร ", valueSpecifiers[13]),
"sociรฉtรฉ": new MapEntry(7, "sociรฉtรฉ", valueSpecifiers[13]),
soyad: new MapEntry(5, "soyad", valueSpecifiers[3]),
"soyadฤฑ": new MapEntry(6, "soyadฤฑ", valueSpecifiers[3]),
soyisim: new MapEntry(7, "soyisim", valueSpecifiers[3]),
soyismi: new MapEntry(7, "soyismi", valueSpecifiers[3]),
"spoloฤnosลฅ": new MapEntry(10, "spoloฤnosลฅ", valueSpecifiers[13]),
staat: new MapEntry(5, "staat", valueSpecifiers[9]),
stad: new MapEntry(4, "stad", valueSpecifiers[8]),
stanowisko: new MapEntry(10, "stanowisko", valueSpecifiers[5]),
stat: new MapEntry(4, "stat", valueSpecifiers[9]),
state: new MapEntry(5, "state", valueSpecifiers[9]),
stato: new MapEntry(5, "stato", valueSpecifiers[9]),
sted: new MapEntry(4, "sted", valueSpecifiers[8]),
stilling: new MapEntry(8, "stilling", valueSpecifiers[5]),
straat: new MapEntry(6, "straat", valueSpecifiers[7]),
strada: new MapEntry(6, "strada", valueSpecifiers[7]),
"strednรฉ": new MapEntry(7, "strednรฉ", valueSpecifiers[2]),
"strednรฉ meno": new MapEntry(12, "strednรฉ meno", valueSpecifiers[2]),
street: new MapEntry(6, "street", valueSpecifiers[7]),
"street address": new MapEntry(14, "street address", valueSpecifiers[7]),
streetaddress: new MapEntry(13, "streetaddress", valueSpecifiers[7]),
suku: new MapEntry(4, "suku", valueSpecifiers[3]),
"sukun.": new MapEntry(6, "sukun.", valueSpecifiers[3]),
sukunimi: new MapEntry(8, "sukunimi", valueSpecifiers[3]),
surname: new MapEntry(7, "surname", valueSpecifiers[3]),
suuntanro: new MapEntry(9, "suuntanro", valueSpecifiers[12]),
suuntanumero: new MapEntry(12, "suuntanumero", valueSpecifiers[12]),
"suuntanumero iltaisin": new MapEntry(21, "suuntanumero iltaisin", valueSpecifiers[14]),
"suuntanumero koti": new MapEntry(17, "suuntanumero koti", valueSpecifiers[14]),
"suuntanumero tyรถ": new MapEntry(16, "suuntanumero tyรถ", valueSpecifiers[15]),
"suuntanumero yritys": new MapEntry(19, "suuntanumero yritys", valueSpecifiers[15]),
"syntymรคpรคivรค": new MapEntry(12, "syntymรคpรคivรค", valueSpecifiers[4]),
syntynyt: new MapEntry(8, "syntynyt", valueSpecifiers[4]),
"sรคhkรถposti": new MapEntry(10, "sรคhkรถposti", valueSpecifiers[6]),
"sรคhkรถpostiosoite": new MapEntry(16, "sรคhkรถpostiosoite", valueSpecifiers[6]),
"sรฉmaphone": new MapEntry(9, "sรฉmaphone", valueSpecifiers[17]),
"tam ad": new MapEntry(6, "tam ad", valueSpecifiers[0]),
"tam adฤฑ": new MapEntry(7, "tam adฤฑ", valueSpecifiers[0]),
"tam isim": new MapEntry(8, "tam isim", valueSpecifiers[0]),
tel: new MapEntry(3, "tel", valueSpecifiers[12]),
"tel.": new MapEntry(4, "tel.", valueSpecifiers[12]),
"tel. lavoro": new MapEntry(11, "tel. lavoro", valueSpecifiers[15]),
"tel. ufficio": new MapEntry(12, "tel. ufficio", valueSpecifiers[15]),
"tel. ฤรญslo": new MapEntry(10, "tel. ฤรญslo", valueSpecifiers[12]),
telefon: new MapEntry(7, "telefon", valueSpecifiers[12]),
"telefon (cep)": new MapEntry(13, "telefon (cep)", valueSpecifiers[16]),
"telefon (ev)": new MapEntry(12, "telefon (ev)", valueSpecifiers[14]),
"telefon (iลŸ)": new MapEntry(12, "telefon (iลŸ)", valueSpecifiers[15]),
"telefon acasฤƒ": new MapEntry(13, "telefon acasฤƒ", valueSpecifiers[14]),
"telefon arbetet": new MapEntry(15, "telefon arbetet", valueSpecifiers[15]),
"telefon birou": new MapEntry(13, "telefon birou", valueSpecifiers[15]),
"telefon celular": new MapEntry(15, "telefon celular", valueSpecifiers[16]),
"telefon companie": new MapEntry(16, "telefon companie", valueSpecifiers[15]),
"telefon dagtid": new MapEntry(14, "telefon dagtid", valueSpecifiers[15]),
"telefon domiciliu": new MapEntry(17, "telefon domiciliu", valueSpecifiers[14]),
"telefon fรถretaget": new MapEntry(17, "telefon fรถretaget", valueSpecifiers[15]),
"telefon hem": new MapEntry(11, "telefon hem", valueSpecifiers[14]),
"telefon kontoret": new MapEntry(16, "telefon kontoret", valueSpecifiers[15]),
"telefon kvรคllstid": new MapEntry(17, "telefon kvรคllstid", valueSpecifiers[14]),
"telefon lucru": new MapEntry(13, "telefon lucru", valueSpecifiers[15]),
"telefon mobil": new MapEntry(13, "telefon mobil", valueSpecifiers[16]),
"telefon no": new MapEntry(10, "telefon no", valueSpecifiers[12]),
"telefon numarasฤฑ": new MapEntry(16, "telefon numarasฤฑ", valueSpecifiers[12]),
"telefon pager": new MapEntry(13, "telefon pager", valueSpecifiers[17]),
"telefon searฤƒ": new MapEntry(13, "telefon searฤƒ", valueSpecifiers[14]),
"telefon serviciu": new MapEntry(16, "telefon serviciu", valueSpecifiers[15]),
"telefon tvrtke": new MapEntry(14, "telefon tvrtke", valueSpecifiers[15]),
"telefon zi": new MapEntry(10, "telefon zi", valueSpecifiers[15]),
"telefon, aften": new MapEntry(14, "telefon, aften", valueSpecifiers[14]),
"telefon, arbeid": new MapEntry(15, "telefon, arbeid", valueSpecifiers[15]),
"telefon, arbejde": new MapEntry(16, "telefon, arbejde", valueSpecifiers[15]),
"telefon, dag": new MapEntry(12, "telefon, dag", valueSpecifiers[15]),
"telefon, dagtid": new MapEntry(15, "telefon, dagtid", valueSpecifiers[15]),
"telefon, firma": new MapEntry(14, "telefon, firma", valueSpecifiers[15]),
"telefon, hjem": new MapEntry(13, "telefon, hjem", valueSpecifiers[14]),
"telefon, jobb": new MapEntry(13, "telefon, jobb", valueSpecifiers[15]),
"telefon, kveldstid": new MapEntry(18, "telefon, kveldstid", valueSpecifiers[14]),
"telefon, mobil": new MapEntry(14, "telefon, mobil", valueSpecifiers[16]),
telefone: new MapEntry(8, "telefone", valueSpecifiers[12]),
"telefone (casa)": new MapEntry(15, "telefone (casa)", valueSpecifiers[14]),
"telefone (celular)": new MapEntry(18, "telefone (celular)", valueSpecifiers[16]),
"telefone (diurno)": new MapEntry(17, "telefone (diurno)", valueSpecifiers[15]),
"telefone (empresa)": new MapEntry(18, "telefone (empresa)", valueSpecifiers[15]),
"telefone (noturno)": new MapEntry(18, "telefone (noturno)", valueSpecifiers[14]),
"telefone (pager)": new MapEntry(16, "telefone (pager)", valueSpecifiers[17]),
"telefone (trabalho)": new MapEntry(19, "telefone (trabalho)", valueSpecifiers[15]),
"telefone celular": new MapEntry(16, "telefone celular", valueSpecifiers[16]),
"telefone comercial": new MapEntry(18, "telefone comercial", valueSpecifiers[15]),
"telefone da empresa": new MapEntry(19, "telefone da empresa", valueSpecifiers[15]),
"telefone de casa": new MapEntry(16, "telefone de casa", valueSpecifiers[14]),
"telefone de dia": new MapEntry(15, "telefone de dia", valueSpecifiers[15]),
"telefone do trabalho": new MapEntry(20, "telefone do trabalho", valueSpecifiers[15]),
"telefone durante o dia": new MapEntry(22, "telefone durante o dia", valueSpecifiers[15]),
"telefone pager": new MapEntry(14, "telefone pager", valueSpecifiers[17]),
"telefone ร  noite": new MapEntry(16, "telefone ร  noite", valueSpecifiers[14]),
telefonecelular: new MapEntry(15, "telefonecelular", valueSpecifiers[16]),
telefonecomercial: new MapEntry(17, "telefonecomercial", valueSpecifiers[15]),
telefonedecasa: new MapEntry(14, "telefonedecasa", valueSpecifiers[14]),
telefonedia: new MapEntry(11, "telefonedia", valueSpecifiers[15]),
telefoneempresa: new MapEntry(15, "telefoneempresa", valueSpecifiers[15]),
telefonenoite: new MapEntry(13, "telefonenoite", valueSpecifiers[14]),
telefonepager: new MapEntry(13, "telefonepager", valueSpecifiers[17]),
telefonetrabalho: new MapEntry(16, "telefonetrabalho", valueSpecifiers[15]),
"telefonnr.": new MapEntry(10, "telefonnr.", valueSpecifiers[12]),
telefonnummer: new MapEntry(13, "telefonnummer", valueSpecifiers[12]),
telefono: new MapEntry(8, "telefono", valueSpecifiers[12]),
"telefono abitazione": new MapEntry(19, "telefono abitazione", valueSpecifiers[14]),
"telefono azienda": new MapEntry(16, "telefono azienda", valueSpecifiers[15]),
"telefono casa": new MapEntry(13, "telefono casa", valueSpecifiers[14]),
"telefono cell.": new MapEntry(14, "telefono cell.", valueSpecifiers[16]),
"telefono cellulare": new MapEntry(18, "telefono cellulare", valueSpecifiers[16]),
"telefono lavoro": new MapEntry(15, "telefono lavoro", valueSpecifiers[15]),
"telefono ore serali": new MapEntry(19, "telefono ore serali", valueSpecifiers[14]),
"telefono ore ufficio": new MapEntry(20, "telefono ore ufficio", valueSpecifiers[15]),
"telefono privato": new MapEntry(16, "telefono privato", valueSpecifiers[14]),
"telefono ufficio": new MapEntry(16, "telefono ufficio", valueSpecifiers[15]),
"telefonski broj": new MapEntry(15, "telefonski broj", valueSpecifiers[12]),
"telefoon 's avonds": new MapEntry(18, "telefoon 's avonds", valueSpecifiers[14]),
"telefoon bedrijf": new MapEntry(16, "telefoon bedrijf", valueSpecifiers[15]),
"telefoon overdag": new MapEntry(16, "telefoon overdag", valueSpecifiers[15]),
"telefoon privรฉ": new MapEntry(14, "telefoon privรฉ", valueSpecifiers[14]),
"telefoon thuis": new MapEntry(14, "telefoon thuis", valueSpecifiers[14]),
"telefoon werk": new MapEntry(13, "telefoon werk", valueSpecifiers[15]),
"telefoon zakelijk": new MapEntry(17, "telefoon zakelijk", valueSpecifiers[15]),
"telefoonnnummer thuis": new MapEntry(21, "telefoonnnummer thuis", valueSpecifiers[14]),
"telefoonnummer bedrijf": new MapEntry(22, "telefoonnummer bedrijf", valueSpecifiers[15]),
"telefoonnummer overdag": new MapEntry(22, "telefoonnummer overdag", valueSpecifiers[15]),
"telefoonnummer privรฉ": new MapEntry(20, "telefoonnummer privรฉ", valueSpecifiers[14]),
"telefoonnummer werk": new MapEntry(19, "telefoonnummer werk", valueSpecifiers[15]),
"telefoonnummer zakelijk": new MapEntry(23, "telefoonnummer zakelijk", valueSpecifiers[15]),
"telefรณn": new MapEntry(7, "telefรณn", valueSpecifiers[12]),
"telefรณn do prรกce": new MapEntry(16, "telefรณn do prรกce", valueSpecifiers[15]),
"telefรณn domov": new MapEntry(13, "telefรณn domov", valueSpecifiers[14]),
"telefรณnna predvoฤพba": new MapEntry(19, "telefรณnna predvoฤพba", valueSpecifiers[12]),
"telefรณnna predvoฤพba domov": new MapEntry(25, "telefรณnna predvoฤพba domov", valueSpecifiers[14]),
"telefรณnne ฤรญslo": new MapEntry(15, "telefรณnne ฤรญslo", valueSpecifiers[12]),
"telemรณvel": new MapEntry(9, "telemรณvel", valueSpecifiers[16]),
telephone: new MapEntry(9, "telephone", valueSpecifiers[12]),
"telรจfon": new MapEntry(7, "telรจfon", valueSpecifiers[12]),
"telรจfon de casa": new MapEntry(15, "telรจfon de casa", valueSpecifiers[14]),
"telรจfon de la feina": new MapEntry(19, "telรจfon de la feina", valueSpecifiers[15]),
"telรจfon dia": new MapEntry(11, "telรจfon dia", valueSpecifiers[15]),
"telรจfon feina": new MapEntry(13, "telรจfon feina", valueSpecifiers[15]),
"telรจfon mรฒbil": new MapEntry(13, "telรจfon mรฒbil", valueSpecifiers[16]),
"telรจfono casa": new MapEntry(13, "telรจfono casa", valueSpecifiers[14]),
"telรจfono nit": new MapEntry(12, "telรจfono nit", valueSpecifiers[14]),
"telรฉfono": new MapEntry(8, "telรฉfono", valueSpecifiers[12]),
"telรฉfono casa": new MapEntry(13, "telรฉfono casa", valueSpecifiers[14]),
"telรฉfono de casa": new MapEntry(16, "telรฉfono de casa", valueSpecifiers[14]),
"telรฉfono del trabajo": new MapEntry(20, "telรฉfono del trabajo", valueSpecifiers[15]),
"telรฉfono dรญa": new MapEntry(12, "telรฉfono dรญa", valueSpecifiers[15]),
"telรฉfono mรณvil": new MapEntry(14, "telรฉfono mรณvil", valueSpecifiers[16]),
"telรฉfono noche": new MapEntry(14, "telรฉfono noche", valueSpecifiers[14]),
"telรฉfono trabajo": new MapEntry(16, "telรฉfono trabajo", valueSpecifiers[15]),
titel: new MapEntry(5, "titel", valueSpecifiers[5]),
titula: new MapEntry(6, "titula", valueSpecifiers[5]),
"tlf.": new MapEntry(4, "tlf.", valueSpecifiers[12]),
"toinen etunimi": new MapEntry(14, "toinen etunimi", valueSpecifiers[2]),
"toinen nimi": new MapEntry(11, "toinen nimi", valueSpecifiers[2]),
trabajo: new MapEntry(7, "trabajo", valueSpecifiers[5]),
tvrtka: new MapEntry(6, "tvrtka", valueSpecifiers[13]),
"tyรถnumero": new MapEntry(9, "tyรถnumero", valueSpecifiers[15]),
"tyรถnumeron suuntanumero": new MapEntry(23, "tyรถnumeron suuntanumero", valueSpecifiers[15]),
"tyรถpuhelimen suuntanumero": new MapEntry(25, "tyรถpuhelimen suuntanumero", valueSpecifiers[15]),
"tyรถpuhelin": new MapEntry(10, "tyรถpuhelin", valueSpecifiers[15]),
"tรคydellinen nimi": new MapEntry(16, "tรคydellinen nimi", valueSpecifiers[0]),
"tรฉl.": new MapEntry(4, "tรฉl.", valueSpecifiers[12]),
"tรฉl. cell.": new MapEntry(10, "tรฉl. cell.", valueSpecifiers[16]),
"tรฉlรฉav.": new MapEntry(7, "tรฉlรฉav.", valueSpecifiers[17]),
"tรฉlรฉavertisseur": new MapEntry(15, "tรฉlรฉavertisseur", valueSpecifiers[17]),
"tรฉlรฉc.": new MapEntry(6, "tรฉlรฉc.", valueSpecifiers[12]),
"tรฉlรฉcopie": new MapEntry(9, "tรฉlรฉcopie", valueSpecifiers[12]),
"tรฉlรฉcopieur": new MapEntry(11, "tรฉlรฉcopieur", valueSpecifiers[12]),
"tรฉlรฉphone": new MapEntry(9, "tรฉlรฉphone", valueSpecifiers[12]),
"tรฉlรฉphone (entreprise)": new MapEntry(22, "tรฉlรฉphone (entreprise)", valueSpecifiers[15]),
"tรฉlรฉphone (jour)": new MapEntry(16, "tรฉlรฉphone (jour)", valueSpecifiers[15]),
"tรฉlรฉphone (journรฉe)": new MapEntry(19, "tรฉlรฉphone (journรฉe)", valueSpecifiers[15]),
"tรฉlรฉphone (le soir)": new MapEntry(19, "tรฉlรฉphone (le soir)", valueSpecifiers[14]),
"tรฉlรฉphone (sociรฉtรฉ)": new MapEntry(19, "tรฉlรฉphone (sociรฉtรฉ)", valueSpecifiers[15]),
"tรฉlรฉphone (soirรฉe)": new MapEntry(18, "tรฉlรฉphone (soirรฉe)", valueSpecifiers[14]),
"tรฉlรฉphone bureau": new MapEntry(16, "tรฉlรฉphone bureau", valueSpecifiers[15]),
"tรฉlรฉphone cellulaire": new MapEntry(20, "tรฉlรฉphone cellulaire", valueSpecifiers[16]),
"tรฉlรฉphone cellulaire portable": new MapEntry(29, "tรฉlรฉphone cellulaire portable", valueSpecifiers[16]),
"tรฉlรฉphone cellulaire portatif": new MapEntry(29, "tรฉlรฉphone cellulaire portatif", valueSpecifiers[16]),
"tรฉlรฉphone de domicile": new MapEntry(21, "tรฉlรฉphone de domicile", valueSpecifiers[14]),
"tรฉlรฉphone de rรฉsidence": new MapEntry(22, "tรฉlรฉphone de rรฉsidence", valueSpecifiers[14]),
"tรฉlรฉphone de travail": new MapEntry(20, "tรฉlรฉphone de travail", valueSpecifiers[15]),
"tรฉlรฉphone domicile": new MapEntry(18, "tรฉlรฉphone domicile", valueSpecifiers[14]),
"tรฉlรฉphone maison": new MapEntry(16, "tรฉlรฉphone maison", valueSpecifiers[14]),
"tรฉlรฉphone mobile": new MapEntry(16, "tรฉlรฉphone mobile", valueSpecifiers[16]),
"tรฉlรฉphone portable": new MapEntry(18, "tรฉlรฉphone portable", valueSpecifiers[16]),
"tรฉlรฉphone privรฉ": new MapEntry(15, "tรฉlรฉphone privรฉ", valueSpecifiers[14]),
"tรฉlรฉphone professionnel": new MapEntry(23, "tรฉlรฉphone professionnel", valueSpecifiers[15]),
"tรฉlรฉphone rรฉsidentiel": new MapEntry(21, "tรฉlรฉphone rรฉsidentiel", valueSpecifiers[14]),
ulica: new MapEntry(5, "ulica", valueSpecifiers[7]),
urodziny: new MapEntry(8, "urodziny", valueSpecifiers[4]),
urodzona: new MapEntry(8, "urodzona", valueSpecifiers[4]),
urodzony: new MapEntry(8, "urodzony", valueSpecifiers[4]),
vei: new MapEntry(3, "vei", valueSpecifiers[7]),
veiadresse: new MapEntry(10, "veiadresse", valueSpecifiers[7]),
vej: new MapEntry(3, "vej", valueSpecifiers[7]),
vejadresse: new MapEntry(10, "vejadresse", valueSpecifiers[7]),
"verification code": new MapEntry(17, "verification code", valueSpecifiers[18]),
verjaardag: new MapEntry(10, "verjaardag", valueSpecifiers[4]),
"veฤernji telefon": new MapEntry(16, "veฤernji telefon", valueSpecifiers[14]),
"veฤernรฝ telefรณn": new MapEntry(15, "veฤernรฝ telefรณn", valueSpecifiers[14]),
via: new MapEntry(3, "via", valueSpecifiers[7]),
ville: new MapEntry(5, "ville", valueSpecifiers[8]),
voornaam: new MapEntry(8, "voornaam", valueSpecifiers[1]),
"vรคg": new MapEntry(3, "vรคg", valueSpecifiers[7]),
werk: new MapEntry(4, "werk", valueSpecifiers[5]),
"work area code": new MapEntry(14, "work area code", valueSpecifiers[15]),
"work areacode": new MapEntry(13, "work areacode", valueSpecifiers[15]),
"work phone": new MapEntry(10, "work phone", valueSpecifiers[15]),
workareacode: new MapEntry(12, "workareacode", valueSpecifiers[15]),
workphone: new MapEntry(9, "workphone", valueSpecifiers[15]),
"yrityksen numero": new MapEntry(16, "yrityksen numero", valueSpecifiers[15]),
yritys: new MapEntry(6, "yritys", valueSpecifiers[13]),
yritysnumero: new MapEntry(12, "yritysnumero", valueSpecifiers[15]),
yrke: new MapEntry(4, "yrke", valueSpecifiers[5]),
zemlja: new MapEntry(6, "zemlja", valueSpecifiers[11]),
"zi de naศ™tere": new MapEntry(13, "zi de naศ™tere", valueSpecifiers[4]),
"zi naศ™tere": new MapEntry(10, "zi naศ™tere", valueSpecifiers[4]),
zip: new MapEntry(3, "zip", valueSpecifiers[10]),
"zip code": new MapEntry(8, "zip code", valueSpecifiers[10]),
"zip kod": new MapEntry(7, "zip kod", valueSpecifiers[10]),
"zip kodu": new MapEntry(8, "zip kodu", valueSpecifiers[10]),
zipcode: new MapEntry(7, "zipcode", valueSpecifiers[10]),
zipkod: new MapEntry(6, "zipkod", valueSpecifiers[10]),
"รงaฤŸrฤฑ cihazฤฑ": new MapEntry(12, "รงaฤŸrฤฑ cihazฤฑ", valueSpecifiers[17]),
"รงaฤŸrฤฑ cihazฤฑ numarasฤฑ": new MapEntry(21, "รงaฤŸrฤฑ cihazฤฑ numarasฤฑ", valueSpecifiers[17]),
"รฉtat": new MapEntry(4, "รฉtat", valueSpecifiers[9]),
"รบltimo": new MapEntry(6, "รบltimo", valueSpecifiers[3]),
"รบltimo nome": new MapEntry(11, "รบltimo nome", valueSpecifiers[3]),
"รบltimonome": new MapEntry(10, "รบltimonome", valueSpecifiers[3]),
"รบnome": new MapEntry(5, "รบnome", valueSpecifiers[3]),
"รผlke": new MapEntry(4, "รผlke", valueSpecifiers[11]),
"รผnvan": new MapEntry(5, "รผnvan", valueSpecifiers[5]),
"รผnvanฤฑ": new MapEntry(6, "รผnvanฤฑ", valueSpecifiers[5]),
"ฤรญslo do prรกce": new MapEntry(14, "ฤรญslo do prรกce", valueSpecifiers[15]),
"ฤรญslo domov": new MapEntry(11, "ฤรญslo domov", valueSpecifiers[14]),
"ลŸehir": new MapEntry(5, "ลŸehir", valueSpecifiers[8]),
"ลŸirket": new MapEntry(6, "ลŸirket", valueSpecifiers[13]),
"ลŸirket telefonu": new MapEntry(15, "ลŸirket telefonu", valueSpecifiers[15]),
"ลกtรกt": new MapEntry(4, "ลกtรกt", valueSpecifiers[9]),
"ศ›arฤƒ": new MapEntry(4, "ศ›arฤƒ", valueSpecifiers[11]),
"ฮค.ฮš.": new MapEntry(4, "ฮค.ฮš.", valueSpecifiers[10]),
"ฮฑฯฮนฮธฮผฯŒฯ‚ ฯ„ฮทฮปฮตฯ†ฯŽฮฝฮฟฯ…": new MapEntry(17, "ฮฑฯฮนฮธฮผฯŒฯ‚ ฯ„ฮทฮปฮตฯ†ฯŽฮฝฮฟฯ…", valueSpecifiers[12]),
"ฮฒฮฟฮผฮฒฮทฯ„ฮฎฯ‚": new MapEntry(8, "ฮฒฮฟฮผฮฒฮทฯ„ฮฎฯ‚", valueSpecifiers[17]),
"ฮณฮญฮฝฮฝฮทฯƒฮท": new MapEntry(7, "ฮณฮญฮฝฮฝฮทฯƒฮท", valueSpecifiers[4]),
"ฮณฮตฮฝฮญฮธฮปฮนฮฑ": new MapEntry(8, "ฮณฮตฮฝฮญฮธฮปฮนฮฑ", valueSpecifiers[4]),
"ฮดฮนฮตฯฮธฯ…ฮฝฯƒฮท": new MapEntry(9, "ฮดฮนฮตฯฮธฯ…ฮฝฯƒฮท", valueSpecifiers[7]),
"ฮดฮนฮตฯฮธฯ…ฮฝฯƒฮท (ฮณฯฮฑฮผฮผฮฎ 1)": new MapEntry(20, "ฮดฮนฮตฯฮธฯ…ฮฝฯƒฮท (ฮณฯฮฑฮผฮผฮฎ 1)", valueSpecifiers[7]),
"ฮตฯ€ฯŽฮฝฯ…ฮผฮฟ": new MapEntry(7, "ฮตฯ€ฯŽฮฝฯ…ฮผฮฟ", valueSpecifiers[3]),
"ฮตฯฮณฮฑฯƒฮฏฮฑ": new MapEntry(7, "ฮตฯฮณฮฑฯƒฮฏฮฑ", valueSpecifiers[5]),
"ฮตฯ„ฮฑฮนฯฮตฮฏฮฑ": new MapEntry(8, "ฮตฯ„ฮฑฮนฯฮตฮฏฮฑ", valueSpecifiers[13]),
"ฮทฮผฮตฯฮฟฮผฮทฮฝฮฏฮฑ ฮณฮญฮฝฮฝฮทฯƒฮทฯ‚": new MapEntry(19, "ฮทฮผฮตฯฮฟฮผฮทฮฝฮฏฮฑ ฮณฮญฮฝฮฝฮทฯƒฮทฯ‚", valueSpecifiers[4]),
"ฮธฮญฯƒฮท ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚": new MapEntry(13, "ฮธฮญฯƒฮท ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚", valueSpecifiers[5]),
"ฮบฮนฮฝฮทฯ„ฯŒ": new MapEntry(6, "ฮบฮนฮฝฮทฯ„ฯŒ", valueSpecifiers[16]),
"ฮบฮนฮฝฮทฯ„ฯŒ ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ": new MapEntry(15, "ฮบฮนฮฝฮทฯ„ฯŒ ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ", valueSpecifiers[16]),
"ฮบฯ‰ฮดฮนฮบฯŒฯ‚ ฯ€ฮตฯฮนฮฟฯ‡ฮฎฯ‚": new MapEntry(16, "ฮบฯ‰ฮดฮนฮบฯŒฯ‚ ฯ€ฮตฯฮนฮฟฯ‡ฮฎฯ‚", valueSpecifiers[12]),
"ฮผฮตฯƒฮฑฮฏฮฟ ฯŒฮฝฮฟฮผฮฑ": new MapEntry(12, "ฮผฮตฯƒฮฑฮฏฮฟ ฯŒฮฝฮฟฮผฮฑ", valueSpecifiers[2]),
"ฮฝฮฟฮผฯŒฯ‚": new MapEntry(5, "ฮฝฮฟฮผฯŒฯ‚", valueSpecifiers[9]),
"ฮฟฮดฯŒฯ‚": new MapEntry(4, "ฮฟฮดฯŒฯ‚", valueSpecifiers[7]),
"ฮฟฮฝฮฟฮผฮฑฯ„ฮตฯ€ฯŽฮฝฯ…ฮผฮฟ": new MapEntry(13, "ฮฟฮฝฮฟฮผฮฑฯ„ฮตฯ€ฯŽฮฝฯ…ฮผฮฟ", valueSpecifiers[0]),
"ฮฟฯฮณฮฑฮฝฮนฯƒฮผฯŒฯ‚": new MapEntry(10, "ฮฟฯฮณฮฑฮฝฮนฯƒฮผฯŒฯ‚", valueSpecifiers[13]),
"ฯ€ฮฟฮปฮนฯ„ฮตฮฏฮฑ": new MapEntry(8, "ฯ€ฮฟฮปฮนฯ„ฮตฮฏฮฑ", valueSpecifiers[9]),
"ฯ€ฯŒฮปฮท": new MapEntry(4, "ฯ€ฯŒฮปฮท", valueSpecifiers[8]),
"ฯ„ฮฑฯ‡ฯ…ฮดฯฮฟฮผฮนฮบฯŒฯ‚ ฮบฯ‰ฮดฮนฮบฯŒฯ‚": new MapEntry(20, "ฯ„ฮฑฯ‡ฯ…ฮดฯฮฟฮผฮนฮบฯŒฯ‚ ฮบฯ‰ฮดฮนฮบฯŒฯ‚", valueSpecifiers[10]),
"ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ": new MapEntry(8, "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ", valueSpecifiers[12]),
"ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮตฮบฯ„ฯŒฯ‚ ฯ‰ฯฯŽฮฝ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚": new MapEntry(28, "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮตฮบฯ„ฯŒฯ‚ ฯ‰ฯฯŽฮฝ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚", valueSpecifiers[14]),
"ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚": new MapEntry(17, "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚", valueSpecifiers[15]),
"ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮบฮฑฯ„ฮฌ ฯ„ฮนฯ‚ ฯ€ฯฯ‰ฯŠฮฝฮญฯ‚ ฯŽฯฮตฯ‚": new MapEntry(30, "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮบฮฑฯ„ฮฌ ฯ„ฮนฯ‚ ฯ€ฯฯ‰ฯŠฮฝฮญฯ‚ ฯŽฯฮตฯ‚", valueSpecifiers[15]),
"ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮบฮฑฯ„ฮฌ ฯ„ฮนฯ‚ ฯŽฯฮตฯ‚ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚": new MapEntry(31, "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮบฮฑฯ„ฮฌ ฯ„ฮนฯ‚ ฯŽฯฮตฯ‚ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚", valueSpecifiers[15]),
"ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮฟฮนฮบฮฏฮฑฯ‚": new MapEntry(15, "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮฟฮนฮบฮฏฮฑฯ‚", valueSpecifiers[14]),
"ฯ†ฮฑฮพ": new MapEntry(3, "ฯ†ฮฑฮพ", valueSpecifiers[12]),
"ฯ‡ฯŽฯฮฑ": new MapEntry(4, "ฯ‡ฯŽฯฮฑ", valueSpecifiers[11]),
"ฯŒฮฝฮฟฮผฮฑ": new MapEntry(5, "ฯŒฮฝฮฟฮผฮฑ", valueSpecifiers[1]),
"ะะดั€ะตั": new MapEntry(5, "ะะดั€ะตั", valueSpecifiers[7]),
"ะะดั€ะตั e-mail": new MapEntry(12, "ะะดั€ะตั e-mail", valueSpecifiers[6]),
"ะะดั€ะตั email": new MapEntry(11, "ะะดั€ะตั email", valueSpecifiers[6]),
"ะะดั€ะตั ัะปะตะบั‚ั€ะพะฝะฝะพะน ะฟะพั‡ั‚ั‹": new MapEntry(23, "ะะดั€ะตั ัะปะตะบั‚ั€ะพะฝะฝะพะน ะฟะพั‡ั‚ั‹", valueSpecifiers[6]),
"ะ’ ะฒะตั‡ะตั€ะฝะธะต ั‡ะฐัั‹": new MapEntry(15, "ะ’ ะฒะตั‡ะตั€ะฝะธะต ั‡ะฐัั‹", valueSpecifiers[14]),
"ะ’ ะดะฝะตะฒะฝั‹ะต ั‡ะฐัั‹": new MapEntry(14, "ะ’ ะดะฝะตะฒะฝั‹ะต ั‡ะฐัั‹", valueSpecifiers[15]),
"ะ’ะตั‡ะตั€ะพะผ": new MapEntry(7, "ะ’ะตั‡ะตั€ะพะผ", valueSpecifiers[14]),
"ะ’ะธะด ะดะตัั‚ะตะปัŒะฝะพัั‚ะธ": new MapEntry(16, "ะ’ะธะด ะดะตัั‚ะตะปัŒะฝะพัั‚ะธ", valueSpecifiers[5]),
"ะ“ะพั€ะพะด": new MapEntry(5, "ะ“ะพั€ะพะด", valueSpecifiers[8]),
"ะ”ะฝะตะผ": new MapEntry(4, "ะ”ะฝะตะผ", valueSpecifiers[15]),
"ะ”ะพะปะถะฝะพัั‚ัŒ": new MapEntry(9, "ะ”ะพะปะถะฝะพัั‚ัŒ", valueSpecifiers[5]),
"ะ”ะพะผะฐัˆะฝะธะน": new MapEntry(8, "ะ”ะพะผะฐัˆะฝะธะน", valueSpecifiers[14]),
"ะ”ะพะผะฐัˆะฝะธะน ะฝะพะผะตั€": new MapEntry(14, "ะ”ะพะผะฐัˆะฝะธะน ะฝะพะผะตั€", valueSpecifiers[14]),
"ะ”ะพะผะฐัˆะฝะธะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ": new MapEntry(23, "ะ”ะพะผะฐัˆะฝะธะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ", valueSpecifiers[14]),
"ะ”ะพะผะฐัˆะฝะธะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€": new MapEntry(25, "ะ”ะพะผะฐัˆะฝะธะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€", valueSpecifiers[14]),
"ะ˜ะผั": new MapEntry(3, "ะ˜ะผั", valueSpecifiers[1]),
"ะ˜ะฝะดะตะบั": new MapEntry(6, "ะ˜ะฝะดะตะบั", valueSpecifiers[10]),
"ะšะพะด ะณะพั€ะพะดะฐ": new MapEntry(10, "ะšะพะด ะณะพั€ะพะดะฐ", valueSpecifiers[12]),
"ะšะพะด ะดะพะผะฐัˆะฝะตะณะพ ั‚ะตะปะตั„ะพะฝะฝะพะณะพ ะฝะพะผะตั€ะฐ": new MapEntry(32, "ะšะพะด ะดะพะผะฐัˆะฝะตะณะพ ั‚ะตะปะตั„ะพะฝะฝะพะณะพ ะฝะพะผะตั€ะฐ", valueSpecifiers[14]),
"ะšะพะด ะบั€ะฐั": new MapEntry(8, "ะšะพะด ะบั€ะฐั", valueSpecifiers[12]),
"ะšะพะด ะฝะฐัะตะปะตะฝะฝะพะณะพ ะฟัƒะฝะบั‚ะฐ": new MapEntry(22, "ะšะพะด ะฝะฐัะตะปะตะฝะฝะพะณะพ ะฟัƒะฝะบั‚ะฐ", valueSpecifiers[12]),
"ะšะพะด ะพะฑะปะฐัั‚ะธ": new MapEntry(11, "ะšะพะด ะพะฑะปะฐัั‚ะธ", valueSpecifiers[12]),
"ะšะพะด ะพะฟะตั€ะฐั‚ะพั€ะฐ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ": new MapEntry(29, "ะšะพะด ะพะฟะตั€ะฐั‚ะพั€ะฐ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ", valueSpecifiers[16]),
"ะšะพะด ะพะฟะตั€ะฐั‚ะพั€ะฐ ัะพั‚ะพะฒะพะน ัะฒัะทะธ": new MapEntry(27, "ะšะพะด ะพะฟะตั€ะฐั‚ะพั€ะฐ ัะพั‚ะพะฒะพะน ัะฒัะทะธ", valueSpecifiers[16]),
"ะšะพะด ั€ะฐะฑะพั‡ะตะณะพ ั‚ะตะปะตั„ะพะฝะฝะพะณะพ ะฝะพะผะตั€ะฐ": new MapEntry(31, "ะšะพะด ั€ะฐะฑะพั‡ะตะณะพ ั‚ะตะปะตั„ะพะฝะฝะพะณะพ ะฝะพะผะตั€ะฐ", valueSpecifiers[15]),
"ะšะพะด ั€ะตัะฟัƒะฑะปะธะบะธ": new MapEntry(14, "ะšะพะด ั€ะตัะฟัƒะฑะปะธะบะธ", valueSpecifiers[12]),
"ะšะพะผะฟะฐะฝะธั": new MapEntry(8, "ะšะพะผะฟะฐะฝะธั", valueSpecifiers[13]),
"ะšั€ะฐะน": new MapEntry(4, "ะšั€ะฐะน", valueSpecifiers[9]),
"ะœะพะฑะธะปัŒะฝั‹ะน": new MapEntry(9, "ะœะพะฑะธะปัŒะฝั‹ะน", valueSpecifiers[16]),
"ะœะพะฑะธะปัŒะฝั‹ะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ": new MapEntry(24, "ะœะพะฑะธะปัŒะฝั‹ะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ", valueSpecifiers[16]),
"ะœะพะฑะธะปัŒะฝั‹ะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€": new MapEntry(26, "ะœะพะฑะธะปัŒะฝั‹ะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€", valueSpecifiers[16]),
"ะะฐัะตะปะตะฝะฝั‹ะน ะฟัƒะฝะบั‚": new MapEntry(16, "ะะฐัะตะปะตะฝะฝั‹ะน ะฟัƒะฝะบั‚", valueSpecifiers[8]),
"ะะพะผะตั€ ะพะฟะตั€ะฐั‚ะพั€ะฐ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ": new MapEntry(31, "ะะพะผะตั€ ะพะฟะตั€ะฐั‚ะพั€ะฐ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ", valueSpecifiers[16]),
"ะะพะผะตั€ ะพะฟะตั€ะฐั‚ะพั€ะฐ ัะพั‚ะพะฒะพะน ัะฒัะทะธ": new MapEntry(29, "ะะพะผะตั€ ะพะฟะตั€ะฐั‚ะพั€ะฐ ัะพั‚ะพะฒะพะน ัะฒัะทะธ", valueSpecifiers[16]),
"ะะพะผะตั€ ะฟะตะนะดะถะตั€ะฐ": new MapEntry(14, "ะะพะผะตั€ ะฟะตะนะดะถะตั€ะฐ", valueSpecifiers[17]),
"ะะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ": new MapEntry(14, "ะะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ", valueSpecifiers[12]),
"ะะพะผะตั€ ั„ะฐะบัะฐ": new MapEntry(11, "ะะพะผะตั€ ั„ะฐะบัะฐ", valueSpecifiers[12]),
"ะžั€ะณะฐะฝะธะทะฐั†ะธั": new MapEntry(11, "ะžั€ะณะฐะฝะธะทะฐั†ะธั", valueSpecifiers[13]),
"ะžั‚ั‡ะตัั‚ะฒะพ": new MapEntry(8, "ะžั‚ั‡ะตัั‚ะฒะพ", valueSpecifiers[2]),
"ะŸะพั‡ั‚ะพะฒั‹ะน ะธะฝะดะตะบั": new MapEntry(15, "ะŸะพั‡ั‚ะพะฒั‹ะน ะธะฝะดะตะบั", valueSpecifiers[10]),
"ะŸั€ะตะดะฟั€ะธัั‚ะธะต": new MapEntry(11, "ะŸั€ะตะดะฟั€ะธัั‚ะธะต", valueSpecifiers[13]),
"ะŸั€ะพั„ะตััะธั": new MapEntry(9, "ะŸั€ะพั„ะตััะธั", valueSpecifiers[5]),
"ะ ะฐะฑ.": new MapEntry(4, "ะ ะฐะฑ.", valueSpecifiers[15]),
"ะ ะฐะฑ. ั‚ะตะปะตั„ะพะฝ": new MapEntry(12, "ะ ะฐะฑ. ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[15]),
"ะ ะฐะฑะพั‡ะธะน": new MapEntry(7, "ะ ะฐะฑะพั‡ะธะน", valueSpecifiers[15]),
"ะ ะฐะฑะพั‡ะธะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ": new MapEntry(22, "ะ ะฐะฑะพั‡ะธะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ", valueSpecifiers[15]),
"ะ ะฐะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€": new MapEntry(24, "ะ ะฐะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€", valueSpecifiers[15]),
"ะ ะตะณะธะพะฝ": new MapEntry(6, "ะ ะตะณะธะพะฝ", valueSpecifiers[9]),
"ะ ะตัะฟัƒะฑะปะธะบะฐ": new MapEntry(10, "ะ ะตัะฟัƒะฑะปะธะบะฐ", valueSpecifiers[9]),
"ะ ะพะด ะดะตัั‚ะตะปัŒะฝะพัั‚ะธ": new MapEntry(16, "ะ ะพะด ะดะตัั‚ะตะปัŒะฝะพัั‚ะธ", valueSpecifiers[5]),
"ะกะปัƒะถะตะฑะฝั‹ะน": new MapEntry(9, "ะกะปัƒะถะตะฑะฝั‹ะน", valueSpecifiers[15]),
"ะกะปัƒะถะตะฑะฝั‹ะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(17, "ะกะปัƒะถะตะฑะฝั‹ะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[15]),
"ะกะพั‚ะพะฒั‹ะน": new MapEntry(7, "ะกะพั‚ะพะฒั‹ะน", valueSpecifiers[16]),
"ะกะพั‚ะพะฒั‹ะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(15, "ะกะพั‚ะพะฒั‹ะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[16]),
"ะกั‚ั€ะฐะฝะฐ": new MapEntry(6, "ะกั‚ั€ะฐะฝะฐ", valueSpecifiers[11]),
"ะขะตะปะตั„ะฐะบั": new MapEntry(8, "ะขะตะปะตั„ะฐะบั", valueSpecifiers[12]),
"ะขะตะปะตั„ะพะฝ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ": new MapEntry(23, "ะขะตะปะตั„ะพะฝ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ", valueSpecifiers[16]),
"ะขะตะปะตั„ะพะฝ ัะพั‚ะพะฒะพะน ัะฒัะทะธ": new MapEntry(21, "ะขะตะปะตั„ะพะฝ ัะพั‚ะพะฒะพะน ัะฒัะทะธ", valueSpecifiers[16]),
"ะขะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€": new MapEntry(16, "ะขะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€", valueSpecifiers[12]),
"ะฃะป.": new MapEntry(3, "ะฃะป.", valueSpecifiers[7]),
"ะฃะปะธั†ะฐ": new MapEntry(5, "ะฃะปะธั†ะฐ", valueSpecifiers[7]),
"ะค.ะ˜.ะž.": new MapEntry(6, "ะค.ะ˜.ะž.", valueSpecifiers[0]),
"ะคะ˜ะž": new MapEntry(3, "ะคะ˜ะž", valueSpecifiers[0]),
"ะคะฐะผะธะปะธั": new MapEntry(7, "ะคะฐะผะธะปะธั", valueSpecifiers[3]),
"ะคะธั€ะผะฐ": new MapEntry(5, "ะคะธั€ะผะฐ", valueSpecifiers[13]),
"ะญะปะตะบั‚ั€ะพะฝะฝั‹ะน ะฐะดั€ะตั": new MapEntry(17, "ะญะปะตะบั‚ั€ะพะฝะฝั‹ะน ะฐะดั€ะตั", valueSpecifiers[6]),
"ะฐะดั€ะตัะฐ": new MapEntry(6, "ะฐะดั€ะตัะฐ", valueSpecifiers[7]),
"ะฐะดั€ะตัะฐ 1": new MapEntry(8, "ะฐะดั€ะตัะฐ 1", valueSpecifiers[7]),
"ะฐะดั€ะตัะฐ1": new MapEntry(7, "ะฐะดั€ะตัะฐ1", valueSpecifiers[7]),
"ะฒะตั‡ั–ั€ะฝั–ะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(16, "ะฒะตั‡ั–ั€ะฝั–ะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[14]),
"ะฒะธะดะดะตัั‚ะตะปัŒะฝะพัั‚ะธ": new MapEntry(15, "ะฒะธะดะดะตัั‚ะตะปัŒะฝะพัั‚ะธ", valueSpecifiers[5]),
"ะฒัƒะป.": new MapEntry(4, "ะฒัƒะป.", valueSpecifiers[7]),
"ะฒัƒะปะธั†ั": new MapEntry(6, "ะฒัƒะปะธั†ั", valueSpecifiers[7]),
"ะณ.": new MapEntry(2, "ะณ.", valueSpecifiers[8]),
"ะดะฐั‚ะฐ ะฝะฐั€ะพะดะถะตะฝะฝั": new MapEntry(15, "ะดะฐั‚ะฐ ะฝะฐั€ะพะดะถะตะฝะฝั", valueSpecifiers[4]),
"ะดะฐั‚ะฐ ั€ะพะถะดะตะฝะธั": new MapEntry(13, "ะดะฐั‚ะฐ ั€ะพะถะดะตะฝะธั", valueSpecifiers[4]),
"ะดะฐั‚ะฐั€ะพะถะดะตะฝะธั": new MapEntry(12, "ะดะฐั‚ะฐั€ะพะถะดะตะฝะธั", valueSpecifiers[4]),
"ะดะตะฝะฝะธะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(14, "ะดะตะฝะฝะธะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[15]),
"ะดะตะฝัŒ ะฝะฐั€ะพะดะถะตะฝะฝั": new MapEntry(15, "ะดะตะฝัŒ ะฝะฐั€ะพะดะถะตะฝะฝั", valueSpecifiers[4]),
"ะดะตะฝัŒ ั€ะพะถะดะตะฝะธั": new MapEntry(13, "ะดะตะฝัŒ ั€ะพะถะดะตะฝะธั", valueSpecifiers[4]),
"ะดะตะฝัŒั€ะพะถะดะตะฝะธั": new MapEntry(12, "ะดะตะฝัŒั€ะพะถะดะตะฝะธั", valueSpecifiers[4]),
"ะดะพะผ.": new MapEntry(4, "ะดะพะผ.", valueSpecifiers[14]),
"ะดะพะผ. ั‚ะตะป.": new MapEntry(9, "ะดะพะผ. ั‚ะตะป.", valueSpecifiers[14]),
"ะดะพะผ. ั‚ะตะปะตั„ะพะฝ": new MapEntry(12, "ะดะพะผ. ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[14]),
"ะดะพะผ.ั‚ะตะป.": new MapEntry(8, "ะดะพะผ.ั‚ะตะป.", valueSpecifiers[14]),
"ะดะพะผ.ั‚ะตะปะตั„ะพะฝ": new MapEntry(11, "ะดะพะผ.ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[14]),
"ะดะพะผะฐัˆะฝะธะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(16, "ะดะพะผะฐัˆะฝะธะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[14]),
"ะดะพะผะฐัˆะฝั–ะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(16, "ะดะพะผะฐัˆะฝั–ะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[14]),
"ะตะป. ะฐะดั€ะตัะฐ": new MapEntry(10, "ะตะป. ะฐะดั€ะตัะฐ", valueSpecifiers[6]),
"ะตะป. ะฟะพัˆั‚ะฐ": new MapEntry(9, "ะตะป. ะฟะพัˆั‚ะฐ", valueSpecifiers[6]),
"ะตะป.ะฐะดั€ะตัะฐ": new MapEntry(9, "ะตะป.ะฐะดั€ะตัะฐ", valueSpecifiers[6]),
"ะตะป.ะฟะพัˆั‚ะฐ": new MapEntry(8, "ะตะป.ะฟะพัˆั‚ะฐ", valueSpecifiers[6]),
"ะตะปะตะบั‚ั€ะพะฝะฝะฐ ะฐะดั€ะตัะฐ": new MapEntry(17, "ะตะปะตะบั‚ั€ะพะฝะฝะฐ ะฐะดั€ะตัะฐ", valueSpecifiers[6]),
"ะตะปะตะบั‚ั€ะพะฝะฝะฐ ะฟะพัˆั‚ะฐ": new MapEntry(16, "ะตะปะตะบั‚ั€ะพะฝะฝะฐ ะฟะพัˆั‚ะฐ", valueSpecifiers[6]),
"ะตะปะตะบั‚ั€ะพะฝะฝะฐะฐะดั€ะตัะฐ": new MapEntry(16, "ะตะปะตะบั‚ั€ะพะฝะฝะฐะฐะดั€ะตัะฐ", valueSpecifiers[6]),
"ะตะปะตะบั‚ั€ะพะฝะฝะฐะฟะพัˆั‚ะฐ": new MapEntry(15, "ะตะปะตะบั‚ั€ะพะฝะฝะฐะฟะพัˆั‚ะฐ", valueSpecifiers[6]),
"ะบะพะด ะฒะตั‡ั–ั€ะฝัŒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(23, "ะบะพะด ะฒะตั‡ั–ั€ะฝัŒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[14]),
"ะบะพะด ะดะตะฝะฝะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(20, "ะบะพะด ะดะตะฝะฝะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[15]),
"ะบะพะด ะดะพะผ.": new MapEntry(8, "ะบะพะด ะดะพะผ.", valueSpecifiers[14]),
"ะบะพะด ะดะพะผ. ั‚ะตะป.": new MapEntry(13, "ะบะพะด ะดะพะผ. ั‚ะตะป.", valueSpecifiers[14]),
"ะบะพะด ะดะพะผ. ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(17, "ะบะพะด ะดะพะผ. ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[14]),
"ะบะพะด ะดะพะผ.ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(16, "ะบะพะด ะดะพะผ.ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[14]),
"ะบะพะด ะดะพะผะฐัˆะฝัŒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(23, "ะบะพะด ะดะพะผะฐัˆะฝัŒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[14]),
"ะบะพะด ะผะพะฑ.": new MapEntry(8, "ะบะพะด ะผะพะฑ.", valueSpecifiers[16]),
"ะบะพะด ะผะพะฑ. ั‚ะตะป.": new MapEntry(13, "ะบะพะด ะผะพะฑ. ั‚ะตะป.", valueSpecifiers[16]),
"ะบะพะด ะผะพะฑ. ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(17, "ะบะพะด ะผะพะฑ. ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[16]),
"ะบะพะด ะผะพะฑ.ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(16, "ะบะพะด ะผะพะฑ.ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[16]),
"ะบะพะด ะผะพะฑั–ะปัŒะฝะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(23, "ะบะพะด ะผะพะฑั–ะปัŒะฝะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[16]),
"ะบะพะด ะพะฑะปะฐัั‚ั–": new MapEntry(11, "ะบะพะด ะพะฑะปะฐัั‚ั–", valueSpecifiers[12]),
"ะบะพะด ะฟะตะนะดะถะตั€ะฐ": new MapEntry(12, "ะบะพะด ะฟะตะนะดะถะตั€ะฐ", valueSpecifiers[17]),
"ะบะพะด ั€ะตะณั–ะพะฝัƒ": new MapEntry(11, "ะบะพะด ั€ะตะณั–ะพะฝัƒ", valueSpecifiers[12]),
"ะบะพะด ั€ะพะฑ.": new MapEntry(8, "ะบะพะด ั€ะพะฑ.", valueSpecifiers[15]),
"ะบะพะด ั€ะพะฑ. ั‚ะตะป.": new MapEntry(13, "ะบะพะด ั€ะพะฑ. ั‚ะตะป.", valueSpecifiers[15]),
"ะบะพะด ั€ะพะฑ. ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(17, "ะบะพะด ั€ะพะฑ. ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[15]),
"ะบะพะด ั€ะพะฑ.ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(16, "ะบะพะด ั€ะพะฑ.ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[15]),
"ะบะพะด ั€ะพะฑะพั‡ะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(21, "ะบะพะด ั€ะพะฑะพั‡ะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[15]),
"ะบะพะด ัะพั‚ะพะฒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ": new MapEntry(21, "ะบะพะด ัะพั‚ะพะฒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", valueSpecifiers[16]),
"ะบะพะดะดะพะผ.ั‚ะตะป.": new MapEntry(11, "ะบะพะดะดะพะผ.ั‚ะตะป.", valueSpecifiers[14]),
"ะบะพะดะผะพะฑ.ั‚ะตะป.": new MapEntry(11, "ะบะพะดะผะพะฑ.ั‚ะตะป.", valueSpecifiers[16]),
"ะบะพะดะพะฑะปะฐัั‚ั–": new MapEntry(10, "ะบะพะดะพะฑะปะฐัั‚ั–", valueSpecifiers[12]),
"ะบะพะดะฟะตะนะดะถะตั€ะฐ": new MapEntry(11, "ะบะพะดะฟะตะนะดะถะตั€ะฐ", valueSpecifiers[17]),
"ะบะพะดั€ะตะณั–ะพะฝัƒ": new MapEntry(10, "ะบะพะดั€ะตะณั–ะพะฝัƒ", valueSpecifiers[12]),
"ะบะพะดั€ะพะฑ.ั‚ะตะป.": new MapEntry(11, "ะบะพะดั€ะพะฑ.ั‚ะตะป.", valueSpecifiers[15]),
"ะบะพะผะฟะฐะฝั–ั": new MapEntry(8, "ะบะพะผะฟะฐะฝั–ั", valueSpecifiers[13]),
"ะบั€ะฐั—ะฝะฐ": new MapEntry(6, "ะบั€ะฐั—ะฝะฐ", valueSpecifiers[11]),
"ะผะพะฑ.": new MapEntry(4, "ะผะพะฑ.", valueSpecifiers[16]),
"ะผะพะฑ. ั‚ะตะป.": new MapEntry(9, "ะผะพะฑ. ั‚ะตะป.", valueSpecifiers[16]),
"ะผะพะฑ. ั‚ะตะปะตั„ะพะฝ": new MapEntry(12, "ะผะพะฑ. ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[16]),
"ะผะพะฑ.ั‚ะตะป.": new MapEntry(8, "ะผะพะฑ.ั‚ะตะป.", valueSpecifiers[16]),
"ะผะพะฑ.ั‚ะตะปะตั„ะพะฝ": new MapEntry(11, "ะผะพะฑ.ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[16]),
"ะผะพะฑะธะปัŒะฝั‹ะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(17, "ะผะพะฑะธะปัŒะฝั‹ะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[16]),
"ะผะพะฑั–ะปัŒะฝะธะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(17, "ะผะพะฑั–ะปัŒะฝะธะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[16]),
"ะผั–ัั‚ะพ": new MapEntry(5, "ะผั–ัั‚ะพ", valueSpecifiers[8]),
"ะฝะฐั€ะพะดะธะฒัั": new MapEntry(9, "ะฝะฐั€ะพะดะธะฒัั", valueSpecifiers[4]),
"ะพะฑะป.": new MapEntry(4, "ะพะฑะป.", valueSpecifiers[9]),
"ะพะฑะปะฐัั‚ัŒ": new MapEntry(7, "ะพะฑะปะฐัั‚ัŒ", valueSpecifiers[9]),
"ะพั€ะณะฐะฝั–ะทะฐั†ั–ั": new MapEntry(11, "ะพั€ะณะฐะฝั–ะทะฐั†ั–ั", valueSpecifiers[13]),
"ะฟะตะนะดะถะตั€": new MapEntry(7, "ะฟะตะนะดะถะตั€", valueSpecifiers[17]),
"ะฟะพ ะฑะฐั‚ัŒะบะพะฒั–": new MapEntry(11, "ะฟะพ ะฑะฐั‚ัŒะบะพะฒั–", valueSpecifiers[2]),
"ะฟะพะฑะฐั‚ัŒะบะพะฒั–": new MapEntry(10, "ะฟะพะฑะฐั‚ัŒะบะพะฒั–", valueSpecifiers[2]),
"ะฟะพะฒะฝะต ั–ะผ'ั": new MapEntry(10, "ะฟะพะฒะฝะต ั–ะผ'ั", valueSpecifiers[0]),
"ะฟะพะฒะฝะต ั–ะผโ€™ั": new MapEntry(10, "ะฟะพะฒะฝะต ั–ะผโ€™ั", valueSpecifiers[0]),
"ะฟะพะฒะฝะตั–ะผ'ั": new MapEntry(9, "ะฟะพะฒะฝะตั–ะผ'ั", valueSpecifiers[0]),
"ะฟะพะฒะฝะตั–ะผโ€™ั": new MapEntry(9, "ะฟะพะฒะฝะตั–ะผโ€™ั", valueSpecifiers[0]),
"ะฟะพะปะฝะพะต ะธะผั": new MapEntry(10, "ะฟะพะปะฝะพะต ะธะผั", valueSpecifiers[0]),
"ะฟะพะปะฝะพะตะธะผั": new MapEntry(9, "ะฟะพะปะฝะพะตะธะผั", valueSpecifiers[0]),
"ะฟะพัะฐะดะฐ": new MapEntry(6, "ะฟะพัะฐะดะฐ", valueSpecifiers[5]),
"ะฟะพัˆั‚ะพะฒะธะน ะบะพะด": new MapEntry(12, "ะฟะพัˆั‚ะพะฒะธะน ะบะพะด", valueSpecifiers[10]),
"ะฟะพัˆั‚ะพะฒะธะน ั–ะฝะดะตะบั": new MapEntry(15, "ะฟะพัˆั‚ะพะฒะธะน ั–ะฝะดะตะบั", valueSpecifiers[10]),
"ะฟั€ะพะฒัƒะปะพะบ": new MapEntry(8, "ะฟั€ะพะฒัƒะปะพะบ", valueSpecifiers[7]),
"ะฟั€ะพัะฟะตะบั‚": new MapEntry(8, "ะฟั€ะพัะฟะตะบั‚", valueSpecifiers[7]),
"ะฟั€ั–ะทะฒะธั‰ะต": new MapEntry(8, "ะฟั€ั–ะทะฒะธั‰ะต", valueSpecifiers[3]),
"ั€ะฐะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(15, "ั€ะฐะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[15]),
"ั€ะพะฑ.": new MapEntry(4, "ั€ะพะฑ.", valueSpecifiers[15]),
"ั€ะพะฑ. ั‚ะตะป.": new MapEntry(9, "ั€ะพะฑ. ั‚ะตะป.", valueSpecifiers[15]),
"ั€ะพะฑ. ั‚ะตะปะตั„ะพะฝ": new MapEntry(12, "ั€ะพะฑ. ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[15]),
"ั€ะพะฑ.ั‚ะตะป.": new MapEntry(8, "ั€ะพะฑ.ั‚ะตะป.", valueSpecifiers[15]),
"ั€ะพะฑ.ั‚ะตะปะตั„ะพะฝ": new MapEntry(11, "ั€ะพะฑ.ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[15]),
"ั€ะพะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(15, "ั€ะพะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[15]),
"ั€ะพะดะดะตัั‚ะตะปัŒะฝะพัั‚ะธ": new MapEntry(15, "ั€ะพะดะดะตัั‚ะตะปัŒะฝะพัั‚ะธ", valueSpecifiers[5]),
"ั€ะพะดะธะปะฐััŒ": new MapEntry(8, "ั€ะพะดะธะปะฐััŒ", valueSpecifiers[4]),
"ั€ะพะดะธะปัั": new MapEntry(7, "ั€ะพะดะธะปัั", valueSpecifiers[4]),
"ั€ัะดะพะบ ะฐะดั€ะตัะธ": new MapEntry(12, "ั€ัะดะพะบ ะฐะดั€ะตัะธ", valueSpecifiers[7]),
"ัะพั‚ะพะฒะธะน ั‚ะตะปะตั„ะพะฝ": new MapEntry(15, "ัะพั‚ะพะฒะธะน ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[16]),
"ั‚ะตะป": new MapEntry(3, "ั‚ะตะป", valueSpecifiers[12]),
"ั‚ะตะป.": new MapEntry(4, "ั‚ะตะป.", valueSpecifiers[12]),
"ั‚ะตะปะตั„ะพะฝ": new MapEntry(7, "ั‚ะตะปะตั„ะพะฝ", valueSpecifiers[12]),
"ัƒัั‚ะฐะฝะพะฒะฐ": new MapEntry(8, "ัƒัั‚ะฐะฝะพะฒะฐ", valueSpecifiers[13]),
"ั„ะฐะบั": new MapEntry(4, "ั„ะฐะบั", valueSpecifiers[12]),
"ั–ะผ'ั": new MapEntry(4, "ั–ะผ'ั", valueSpecifiers[1]),
"ั–ะผโ€™ั": new MapEntry(4, "ั–ะผโ€™ั", valueSpecifiers[1]),
"ั–ะฝะดะตะบั": new MapEntry(6, "ั–ะฝะดะตะบั", valueSpecifiers[10]),
"ืืžืฆืขื™": new MapEntry(5, "ืืžืฆืขื™", valueSpecifiers[2]),
"ืืจื’ื•ืŸ": new MapEntry(5, "ืืจื’ื•ืŸ", valueSpecifiers[13]),
"ื‘ื™ืช": new MapEntry(3, "ื‘ื™ืช", valueSpecifiers[14]),
"ื“ื•ืืดืœ": new MapEntry(5, "ื“ื•ืืดืœ", valueSpecifiers[6]),
"ื–ื™ืžื•ื ื™ืช": new MapEntry(7, "ื–ื™ืžื•ื ื™ืช", valueSpecifiers[17]),
"ื—ื‘ืจื”": new MapEntry(4, "ื—ื‘ืจื”", valueSpecifiers[13]),
"ื˜ืœืคื•ืŸ": new MapEntry(5, "ื˜ืœืคื•ืŸ", valueSpecifiers[12]),
"ื˜ืœืคื•ืŸ ื‘ื™ืช": new MapEntry(9, "ื˜ืœืคื•ืŸ ื‘ื™ืช", valueSpecifiers[14]),
"ื˜ืœืคื•ืŸ ื‘ืขื‘ื•ื“ื”": new MapEntry(12, "ื˜ืœืคื•ืŸ ื‘ืขื‘ื•ื“ื”", valueSpecifiers[15]),
"ื™ื•ื ื”ื•ืœื“ืช": new MapEntry(9, "ื™ื•ื ื”ื•ืœื“ืช", valueSpecifiers[4]),
"ื™ื™ืฉื•ื‘": new MapEntry(5, "ื™ื™ืฉื•ื‘", valueSpecifiers[8]),
"ื›ืชื•ื‘ืช": new MapEntry(5, "ื›ืชื•ื‘ืช", valueSpecifiers[7]),
"ืžื“ื™ื ื”": new MapEntry(5, "ืžื“ื™ื ื”", valueSpecifiers[9]),
"ืžื—ื•ื–": new MapEntry(4, "ืžื—ื•ื–", valueSpecifiers[9]),
"ืžื™ื™ืœ": new MapEntry(4, "ืžื™ื™ืœ", valueSpecifiers[6]),
"ืžื™ืงื•ื“": new MapEntry(5, "ืžื™ืงื•ื“", valueSpecifiers[10]),
"ืžืฉืคื—ื”": new MapEntry(5, "ืžืฉืคื—ื”", valueSpecifiers[3]),
"ืžืฉืจื“": new MapEntry(4, "ืžืฉืจื“", valueSpecifiers[15]),
"ื ื™ื™ื“": new MapEntry(4, "ื ื™ื™ื“", valueSpecifiers[16]),
"ืกืœื•ืœืจื™": new MapEntry(6, "ืกืœื•ืœืจื™", valueSpecifiers[16]),
"ืขื‘ื•ื“ื”": new MapEntry(5, "ืขื‘ื•ื“ื”", valueSpecifiers[15]),
"ืขื™ืจ": new MapEntry(3, "ืขื™ืจ", valueSpecifiers[8]),
"ืคืงืก": new MapEntry(3, "ืคืงืก", valueSpecifiers[12]),
"ืคืจื˜ื™": new MapEntry(4, "ืคืจื˜ื™", valueSpecifiers[1]),
"ืงื™ื“ื•ืžืช": new MapEntry(6, "ืงื™ื“ื•ืžืช", valueSpecifiers[12]),
"ืจื—ื•ื‘": new MapEntry(4, "ืจื—ื•ื‘", valueSpecifiers[7]),
"ืฉื": new MapEntry(2, "ืฉื", valueSpecifiers[0]),
"ืฉื ืืžืฆืขื™": new MapEntry(8, "ืฉื ืืžืฆืขื™", valueSpecifiers[2]),
"ืฉื ืžืœื": new MapEntry(6, "ืฉื ืžืœื", valueSpecifiers[0]),
"ืฉื ืžืฉืคื—ื”": new MapEntry(8, "ืฉื ืžืฉืคื—ื”", valueSpecifiers[3]),
"ืฉื ืคืจื˜ื™": new MapEntry(7, "ืฉื ืคืจื˜ื™", valueSpecifiers[1]),
"ืชืืจื™ืš ืœื™ื“ื”": new MapEntry(10, "ืชืืจื™ืš ืœื™ื“ื”", valueSpecifiers[4]),
"ืชืคืงื™ื“": new MapEntry(5, "ืชืคืงื™ื“", valueSpecifiers[5]),
"ุฃุฏุฎู„ ุนู†ูˆุงู† ุณุทุฑ ุงู„ุนู†ูˆุงู†": new MapEntry(22, "ุฃุฏุฎู„ ุนู†ูˆุงู† ุณุทุฑ ุงู„ุนู†ูˆุงู†", valueSpecifiers[7]),
"ุงุณู… ุงู„ุนุงุฆู„ุฉ": new MapEntry(11, "ุงุณู… ุงู„ุนุงุฆู„ุฉ", valueSpecifiers[3]),
"ุงู„ุฃูˆู„": new MapEntry(5, "ุงู„ุฃูˆู„", valueSpecifiers[1]),
"ุงู„ุงุณู…": new MapEntry(5, "ุงู„ุงุณู…", valueSpecifiers[0]),
"ุงู„ุงุณู… ุงู„ุฃูˆุณุท": new MapEntry(12, "ุงู„ุงุณู… ุงู„ุฃูˆุณุท", valueSpecifiers[2]),
"ุงู„ุงุณู… ุงู„ุฃูˆู„": new MapEntry(11, "ุงู„ุงุณู… ุงู„ุฃูˆู„", valueSpecifiers[1]),
"ุงู„ุงุณู… ุงู„ูƒุงู…ู„": new MapEntry(12, "ุงู„ุงุณู… ุงู„ูƒุงู…ู„", valueSpecifiers[0]),
"ุงู„ุจุฑูŠุฏ ุงู„ุฅู„ูƒุชุฑูˆู†ูŠ": new MapEntry(17, "ุงู„ุจุฑูŠุฏ ุงู„ุฅู„ูƒุชุฑูˆู†ูŠ", valueSpecifiers[6]),
"ุงู„ุจู„ุฏ": new MapEntry(5, "ุงู„ุจู„ุฏ", valueSpecifiers[11]),
"ุงู„ุชู„ูŠููˆู†": new MapEntry(8, "ุงู„ุชู„ูŠููˆู†", valueSpecifiers[12]),
"ุงู„ุญุฑู ุงู„ุฃูˆู„ ู…ู† ุงู„ุงุณู… ุงู„ุฃูˆุณุท": new MapEntry(27, "ุงู„ุญุฑู ุงู„ุฃูˆู„ ู…ู† ุงู„ุงุณู… ุงู„ุฃูˆุณุท", valueSpecifiers[2]),
"ุงู„ุฑู…ุฒ ุงู„ุจุฑูŠุฏูŠ": new MapEntry(13, "ุงู„ุฑู…ุฒ ุงู„ุจุฑูŠุฏูŠ", valueSpecifiers[10]),
"ุงู„ุดุงุฑุน": new MapEntry(6, "ุงู„ุดุงุฑุน", valueSpecifiers[7]),
"ุงู„ุดุฑูƒุฉ": new MapEntry(6, "ุงู„ุดุฑูƒุฉ", valueSpecifiers[13]),
"ุงู„ุนู†ูˆุงู†": new MapEntry(7, "ุงู„ุนู†ูˆุงู†", valueSpecifiers[7]),
"ุงู„ุนู†ูˆุงู† ูก": new MapEntry(9, "ุงู„ุนู†ูˆุงู† ูก", valueSpecifiers[7]),
"ุงู„ูุงูƒุณ": new MapEntry(6, "ุงู„ูุงูƒุณ", valueSpecifiers[12]),
"ุงู„ู…ุคุณุณุฉ": new MapEntry(7, "ุงู„ู…ุคุณุณุฉ", valueSpecifiers[13]),
"ุงู„ู…ุฏูŠู†ุฉ": new MapEntry(7, "ุงู„ู…ุฏูŠู†ุฉ", valueSpecifiers[8]),
"ุงู„ู…ุณู…ู‰ ุงู„ูˆุธูŠููŠ": new MapEntry(14, "ุงู„ู…ุณู…ู‰ ุงู„ูˆุธูŠููŠ", valueSpecifiers[5]),
"ุงู„ู‡ุงุชู": new MapEntry(6, "ุงู„ู‡ุงุชู", valueSpecifiers[12]),
"ุงู„ู‡ุงุชู ุงู„ุฎู„ูˆูŠ": new MapEntry(13, "ุงู„ู‡ุงุชู ุงู„ุฎู„ูˆูŠ", valueSpecifiers[16]),
"ุงู„ู‡ุงุชู ุงู„ู…ุญู…ูˆู„": new MapEntry(14, "ุงู„ู‡ุงุชู ุงู„ู…ุญู…ูˆู„", valueSpecifiers[16]),
"ุงู„ู‡ุงุชู ููŠ ุงู„ุตุจุงุญ": new MapEntry(16, "ุงู„ู‡ุงุชู ููŠ ุงู„ุตุจุงุญ", valueSpecifiers[15]),
"ุงู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก": new MapEntry(16, "ุงู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก", valueSpecifiers[14]),
"ุงู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก ": new MapEntry(17, "ุงู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก ", valueSpecifiers[14]),
"ุงู„ูˆู„ุงูŠุฉ": new MapEntry(7, "ุงู„ูˆู„ุงูŠุฉ", valueSpecifiers[9]),
"ุชุงุฑูŠุฎ ุงู„ู…ูŠู„ุงุฏ": new MapEntry(13, "ุชุงุฑูŠุฎ ุงู„ู…ูŠู„ุงุฏ", valueSpecifiers[4]),
"ุฑู‚ู… ุงู„ู‡ุงุชู": new MapEntry(10, "ุฑู‚ู… ุงู„ู‡ุงุชู", valueSpecifiers[12]),
"ุนู†ูˆุงู† ุงู„ุดุงุฑุน": new MapEntry(12, "ุนู†ูˆุงู† ุงู„ุดุงุฑุน", valueSpecifiers[7]),
"ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ": new MapEntry(11, "ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ", valueSpecifiers[12]),
"ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ ุงู„ุณูƒู†ูŠุฉ": new MapEntry(19, "ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ ุงู„ุณูƒู†ูŠุฉ", valueSpecifiers[14]),
"ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ ู„ู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก": new MapEntry(28, "ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ ู„ู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก", valueSpecifiers[14]),
"ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ุดุฑูƒุฉ": new MapEntry(16, "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ุดุฑูƒุฉ", valueSpecifiers[15]),
"ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ุนู…ู„": new MapEntry(15, "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ุนู…ู„", valueSpecifiers[15]),
"ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ุงู„ุฎู„ูˆูŠ": new MapEntry(23, "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ุงู„ุฎู„ูˆูŠ", valueSpecifiers[16]),
"ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ุงู„ู…ุญู…ูˆู„": new MapEntry(24, "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ุงู„ู…ุญู…ูˆู„", valueSpecifiers[16]),
"ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ููŠ ุงู„ุตุจุงุญ": new MapEntry(26, "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ููŠ ุงู„ุตุจุงุญ", valueSpecifiers[15]),
"ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุฌู‡ุงุฒ ุงู„ู†ุฏุงุก": new MapEntry(21, "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุฌู‡ุงุฒ ุงู„ู†ุฏุงุก", valueSpecifiers[17]),
"ูƒูˆุฏ ู…ู†ุทู‚ุฉ ู‡ุงุชู ุงู„ุนู…ู„": new MapEntry(20, "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ู‡ุงุชู ุงู„ุนู…ู„", valueSpecifiers[15]),
"ู…ูˆู„ูˆุฏ": new MapEntry(5, "ู…ูˆู„ูˆุฏ", valueSpecifiers[4]),
"ู‡ุงุชู ุงู„ุดุฑูƒุฉ": new MapEntry(11, "ู‡ุงุชู ุงู„ุดุฑูƒุฉ", valueSpecifiers[15]),
"ู‡ุงุชู ุงู„ุนู…ู„": new MapEntry(10, "ู‡ุงุชู ุงู„ุนู…ู„", valueSpecifiers[15]),
"ู‡ุงุชู ุงู„ู…ู†ุฒู„": new MapEntry(11, "ู‡ุงุชู ุงู„ู…ู†ุฒู„", valueSpecifiers[14]),
"ู‡ุงุชู ู†ุฏุงุก": new MapEntry(9, "ู‡ุงุชู ู†ุฏุงุก", valueSpecifiers[17]),
"เธเธฅเธฒเธ‡": new MapEntry(4, "เธเธฅเธฒเธ‡", valueSpecifiers[2]),
"เธŠเธทเนˆเธญ": new MapEntry(4, "เธŠเธทเนˆเธญ", valueSpecifiers[1]),
"เธŠเธทเนˆเธญเธเธฅเธฒเธ‡": new MapEntry(8, "เธŠเธทเนˆเธญเธเธฅเธฒเธ‡", valueSpecifiers[2]),
"เธŠเธทเนˆเธญเธเธฅเธฒเธ‡เธขเนˆเธญ": new MapEntry(11, "เธŠเธทเนˆเธญเธเธฅเธฒเธ‡เธขเนˆเธญ", valueSpecifiers[2]),
"เธŠเธทเนˆเธญเธเธฅเธฒเธ‡เธฃเธฐเธซเธงเนˆเธฒเธ‡": new MapEntry(15, "เธŠเธทเนˆเธญเธเธฅเธฒเธ‡เธฃเธฐเธซเธงเนˆเธฒเธ‡", valueSpecifiers[2]),
"เธŠเธทเนˆเธญเธˆเธฃเธดเธ‡": new MapEntry(8, "เธŠเธทเนˆเธญเธˆเธฃเธดเธ‡", valueSpecifiers[1]),
"เธŠเธทเนˆเธญเธ•เธฑเธง": new MapEntry(7, "เธŠเธทเนˆเธญเธ•เธฑเธง", valueSpecifiers[1]),
"เธŠเธทเนˆเธญเธ•เธณเนเธซเธ™เนˆเธ‡": new MapEntry(11, "เธŠเธทเนˆเธญเธ•เธณเนเธซเธ™เนˆเธ‡", valueSpecifiers[5]),
"เธŠเธทเนˆเธญเธ•เน‰เธ™": new MapEntry(7, "เธŠเธทเนˆเธญเธ•เน‰เธ™", valueSpecifiers[1]),
"เธŠเธทเนˆเธญเธ–เธ™เธ™": new MapEntry(7, "เธŠเธทเนˆเธญเธ–เธ™เธ™", valueSpecifiers[7]),
"เธŠเธทเนˆเธญเธ—เน‰เธฒเธข": new MapEntry(8, "เธŠเธทเนˆเธญเธ—เน‰เธฒเธข", valueSpecifiers[3]),
"เธŠเธทเนˆเธญเธชเธเธธเธฅ": new MapEntry(8, "เธŠเธทเนˆเธญเธชเธเธธเธฅ", valueSpecifiers[3]),
"เธŠเธทเนˆเธญเธชเธเธธเธฅเธ—เน‰เธฒเธข": new MapEntry(12, "เธŠเธทเนˆเธญเธชเธเธธเธฅเธ—เน‰เธฒเธข", valueSpecifiers[3]),
"เธŠเธทเนˆเธญเธซเธ™เน‰เธฒ": new MapEntry(8, "เธŠเธทเนˆเธญเธซเธ™เน‰เธฒ", valueSpecifiers[1]),
"เธŠเธทเนˆเธญเน€เธ•เน‡เธก": new MapEntry(8, "เธŠเธทเนˆเธญเน€เธ•เน‡เธก", valueSpecifiers[0]),
"เธŠเธทเนˆเธญเนเธฃเธ": new MapEntry(7, "เธŠเธทเนˆเธญเนเธฃเธ", valueSpecifiers[1]),
"เธŠเธทเนˆเธญเนเธฅเธฐเธ™เธฒเธกเธชเธธเธเธฅ": new MapEntry(14, "เธŠเธทเนˆเธญเนเธฅเธฐเธ™เธฒเธกเธชเธธเธเธฅ", valueSpecifiers[0]),
"เธ•เธฑเธงเธขเนˆเธญเธŠเธทเนˆเธญเธเธฅเธฒเธ‡": new MapEntry(14, "เธ•เธฑเธงเธขเนˆเธญเธŠเธทเนˆเธญเธเธฅเธฒเธ‡", valueSpecifiers[2]),
"เธ•เธณเนเธซเธ™เนˆเธ‡": new MapEntry(7, "เธ•เธณเนเธซเธ™เนˆเธ‡", valueSpecifiers[5]),
"เธ–เธ™เธ™": new MapEntry(3, "เธ–เธ™เธ™", valueSpecifiers[7]),
"เธ–เธ™เธ™เธ—เธตเนˆเธญเธขเธนเนˆ": new MapEntry(10, "เธ–เธ™เธ™เธ—เธตเนˆเธญเธขเธนเนˆ", valueSpecifiers[7]),
"เธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™เธฃเธซเธฑเธช": new MapEntry(12, "เธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™เธฃเธซเธฑเธช", valueSpecifiers[15]),
"เธ—เธตเนˆเธญเธขเธนเนˆ": new MapEntry(7, "เธ—เธตเนˆเธญเธขเธนเนˆ", valueSpecifiers[7]),
"เธ—เธตเนˆเธญเธขเธนเนˆ 1": new MapEntry(9, "เธ—เธตเนˆเธญเธขเธนเนˆ 1", valueSpecifiers[7]),
"เธ—เธตเนˆเธญเธขเธนเนˆเธ–เธ™เธ™": new MapEntry(10, "เธ—เธตเนˆเธญเธขเธนเนˆเธ–เธ™เธ™", valueSpecifiers[7]),
"เธ—เธตเนˆเธญเธขเธนเนˆเธญเธตเน€เธกเธฅ": new MapEntry(12, "เธ—เธตเนˆเธญเธขเธนเนˆเธญเธตเน€เธกเธฅ", valueSpecifiers[6]),
"เธ—เธตเนˆเธญเธขเธนเนˆเนเธฃเธ": new MapEntry(10, "เธ—เธตเนˆเธญเธขเธนเนˆเนเธฃเธ", valueSpecifiers[7]),
"เธ—เธตเนˆเธตเธฃเธซเธฑเธชเธ—เธณเธ‡เธฒเธ™": new MapEntry(13, "เธ—เธตเนˆเธตเธฃเธซเธฑเธชเธ—เธณเธ‡เธฒเธ™", valueSpecifiers[15]),
"เธ—เน‰เธฒเธข": new MapEntry(4, "เธ—เน‰เธฒเธข", valueSpecifiers[3]),
"เธ˜เธธเธฃเธเธดเธˆเธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ": new MapEntry(17, "เธ˜เธธเธฃเธเธดเธˆเธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ", valueSpecifiers[15]),
"เธ™เธฒเธกเธชเธเธธเธฅ": new MapEntry(7, "เธ™เธฒเธกเธชเธเธธเธฅ", valueSpecifiers[3]),
"เธšเธฃเธดเธฉเธฑเธ—": new MapEntry(6, "เธšเธฃเธดเธฉเธฑเธ—", valueSpecifiers[13]),
"เธšเน‰เธฒเธ™เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ": new MapEntry(15, "เธšเน‰เธฒเธ™เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ", valueSpecifiers[14]),
"เธ›เธฃเธฐเน€เธ—เธจ": new MapEntry(6, "เธ›เธฃเธฐเน€เธ—เธจ", valueSpecifiers[11]),
"เธ›เน‰เธญเธ™เธšเธฃเธฃเธ—เธฑเธ”เธ—เธตเนˆเธญเธขเธนเนˆ": new MapEntry(17, "เธ›เน‰เธญเธ™เธšเธฃเธฃเธ—เธฑเธ”เธ—เธตเนˆเธญเธขเธนเนˆ", valueSpecifiers[7]),
"เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธช": new MapEntry(11, "เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธช", valueSpecifiers[12]),
"เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธชเธšเธฃเธดเธฉเธฑเธ—": new MapEntry(17, "เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธชเธšเธฃเธดเธฉเธฑเธ—", valueSpecifiers[15]),
"เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ": new MapEntry(25, "เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ", valueSpecifiers[16]),
"เธกเธทเธญเธ–เธทเธญ": new MapEntry(6, "เธกเธทเธญเธ–เธทเธญ", valueSpecifiers[16]),
"เธฃเธซเธฑเธช": new MapEntry(4, "เธฃเธซเธฑเธช", valueSpecifiers[10]),
"เธฃเธซเธฑเธชเธˆเธ”เธซเธกเธฒเธข": new MapEntry(10, "เธฃเธซเธฑเธชเธˆเธ”เธซเธกเธฒเธข", valueSpecifiers[10]),
"เธฃเธซเธฑเธชเธ—เธณเธ‡เธฒเธ™": new MapEntry(9, "เธฃเธซเธฑเธชเธ—เธณเธ‡เธฒเธ™", valueSpecifiers[15]),
"เธฃเธซเธฑเธชเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™": new MapEntry(12, "เธฃเธซเธฑเธชเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™", valueSpecifiers[15]),
"เธฃเธซเธฑเธชเธ˜เธธเธฃเธเธดเธˆ": new MapEntry(10, "เธฃเธซเธฑเธชเธ˜เธธเธฃเธเธดเธˆ", valueSpecifiers[15]),
"เธฃเธซเธฑเธชเธšเธฃเธดเธฉเธฑเธ—": new MapEntry(10, "เธฃเธซเธฑเธชเธšเธฃเธดเธฉเธฑเธ—", valueSpecifiers[15]),
"เธฃเธซเธฑเธชเธšเน‰เธฒเธ™": new MapEntry(8, "เธฃเธซเธฑเธชเธšเน‰เธฒเธ™", valueSpecifiers[14]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ": new MapEntry(11, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ", valueSpecifiers[12]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ‡เธฒเธ™": new MapEntry(14, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ‡เธฒเธ™", valueSpecifiers[15]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™": new MapEntry(16, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™", valueSpecifiers[15]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ˜เธธเธฃเธเธดเธˆ": new MapEntry(17, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ˜เธธเธฃเธเธดเธˆ", valueSpecifiers[15]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธšเธฃเธดเธฉเธฑเธ—": new MapEntry(17, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธšเธฃเธดเธฉเธฑเธ—", valueSpecifiers[15]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธšเน‰เธฒเธ™": new MapEntry(15, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธšเน‰เธฒเธ™", valueSpecifiers[14]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธกเธทเธญเธ–เธทเธญ": new MapEntry(17, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธกเธทเธญเธ–เธทเธญ", valueSpecifiers[16]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธงเธดเธ—เธขเธธเธ•เธดเธ”เธ•เธฒเธกเธ•เธฑเธง": new MapEntry(25, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธงเธดเธ—เธขเธธเธ•เธดเธ”เธ•เธฒเธกเธ•เธฑเธง", valueSpecifiers[17]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธชเนˆเธงเธ™เธ•เธฑเธง": new MapEntry(18, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธชเนˆเธงเธ™เธ•เธฑเธง", valueSpecifiers[14]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน€เธžเธˆเน€เธˆเธญเธฃเนŒ": new MapEntry(19, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน€เธžเธˆเน€เธˆเธญเธฃเนŒ", valueSpecifiers[17]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ": new MapEntry(25, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ", valueSpecifiers[16]),
"เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง": new MapEntry(26, "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง", valueSpecifiers[16]),
"เธฃเธซเธฑเธชเธชเนˆเธ‡เธˆเธ”เธซเธกเธฒเธข": new MapEntry(13, "เธฃเธซเธฑเธชเธชเนˆเธ‡เธˆเธ”เธซเธกเธฒเธข", valueSpecifiers[10]),
"เธฃเธซเธฑเธชเน€เธšเธญเธฃเนŒเธšเน‰เธฒเธ™": new MapEntry(13, "เธฃเธซเธฑเธชเน€เธšเธญเธฃเนŒเธšเน‰เธฒเธ™", valueSpecifiers[14]),
"เธฃเธซเธฑเธชเน€เธšเธญเธฃเนŒเธชเนˆเธงเธ™เธ•เธฑเธง": new MapEntry(16, "เธฃเธซเธฑเธชเน€เธšเธญเธฃเนŒเธชเนˆเธงเธ™เธ•เธฑเธง", valueSpecifiers[14]),
"เธฃเธซเธฑเธชเน€เธžเธˆเน€เธˆเธญเธฃเนŒ": new MapEntry(12, "เธฃเธซเธฑเธชเน€เธžเธˆเน€เธˆเธญเธฃเนŒ", valueSpecifiers[17]),
"เธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ": new MapEntry(18, "เธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ", valueSpecifiers[16]),
"เธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง": new MapEntry(19, "เธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง", valueSpecifiers[16]),
"เธฃเธซเธฑเธชเน„เธ›เธฃเธฉเธ“เธตเธขเนŒ": new MapEntry(12, "เธฃเธซเธฑเธชเน„เธ›เธฃเธฉเธ“เธตเธขเนŒ", valueSpecifiers[10]),
"เธฃเธฑเธ": new MapEntry(3, "เธฃเธฑเธ", valueSpecifiers[9]),
"เธงเธฑเธ™เธ—เธตเนˆเน€เธเธดเธ”": new MapEntry(10, "เธงเธฑเธ™เธ—เธตเนˆเน€เธเธดเธ”", valueSpecifiers[4]),
"เธงเธฑเธ™เน€เธเธดเธ”": new MapEntry(7, "เธงเธฑเธ™เน€เธเธดเธ”", valueSpecifiers[4]),
"เธงเธดเธ—เธขเธธเธ•เธดเธ”เธ•เธฒเธกเธ•เธฑเธง": new MapEntry(14, "เธงเธดเธ—เธขเธธเธ•เธดเธ”เธ•เธฒเธกเธ•เธฑเธง", valueSpecifiers[17]),
"เธชเธเธธเธฅ": new MapEntry(4, "เธชเธเธธเธฅ", valueSpecifiers[3]),
"เธซเธกเธฒเธขเน€เธฅเธ‚เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ": new MapEntry(15, "เธซเธกเธฒเธขเน€เธฅเธ‚เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ", valueSpecifiers[12]),
"เธซเธกเธฒเธขเน€เธฅเธ‚เน‚เธ—เธฃเธฏ": new MapEntry(11, "เธซเธกเธฒเธขเน€เธฅเธ‚เน‚เธ—เธฃเธฏ", valueSpecifiers[12]),
"เธญเธ‡เธ„เนŒเธเธฃ": new MapEntry(6, "เธญเธ‡เธ„เนŒเธเธฃ", valueSpecifiers[13]),
"เธญเธต-เน€เธกเธฅ": new MapEntry(6, "เธญเธต-เน€เธกเธฅ", valueSpecifiers[6]),
"เธญเธตเน€เธกเธฅ": new MapEntry(5, "เธญเธตเน€เธกเธฅ", valueSpecifiers[6]),
"เธญเธตเน€เธกเธฅเธ—เธตเนˆเธญเธขเธนเนˆ": new MapEntry(12, "เธญเธตเน€เธกเธฅเธ—เธตเนˆเธญเธขเธนเนˆ", valueSpecifiers[6]),
"เน€เธเธดเธ”": new MapEntry(4, "เน€เธเธดเธ”", valueSpecifiers[4]),
"เน€เธšเธญเธฃเนŒเธ‡เธฒเธ™": new MapEntry(8, "เน€เธšเธญเธฃเนŒเธ‡เธฒเธ™", valueSpecifiers[15]),
"เน€เธšเธญเธฃเนŒเธ•เธดเธ”เธ•เนˆเธญ": new MapEntry(11, "เน€เธšเธญเธฃเนŒเธ•เธดเธ”เธ•เนˆเธญ", valueSpecifiers[14]),
"เน€เธšเธญเธฃเนŒเธ—เธณเธ‡เธฒเธ™": new MapEntry(10, "เน€เธšเธญเธฃเนŒเธ—เธณเธ‡เธฒเธ™", valueSpecifiers[15]),
"เน€เธšเธญเธฃเนŒเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™": new MapEntry(13, "เน€เธšเธญเธฃเนŒเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™", valueSpecifiers[15]),
"เน€เธšเธญเธฃเนŒเธ˜เธธเธฃเธเธดเธˆ": new MapEntry(11, "เน€เธšเธญเธฃเนŒเธ˜เธธเธฃเธเธดเธˆ", valueSpecifiers[15]),
"เน€เธšเธญเธฃเนŒเธšเธฃเธดเธฉเธฑเธ—": new MapEntry(11, "เน€เธšเธญเธฃเนŒเธšเธฃเธดเธฉเธฑเธ—", valueSpecifiers[15]),
"เน€เธšเธญเธฃเนŒเธšเน‰เธฒเธ™": new MapEntry(9, "เน€เธšเธญเธฃเนŒเธšเน‰เธฒเธ™", valueSpecifiers[14]),
"เน€เธšเธญเธฃเนŒเธชเนˆเธงเธ™เธ•เธฑเธง": new MapEntry(12, "เน€เธšเธญเธฃเนŒเธชเนˆเธงเธ™เธ•เธฑเธง", valueSpecifiers[14]),
"เน€เธšเธญเธฃเนŒเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ": new MapEntry(13, "เน€เธšเธญเธฃเนŒเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ", valueSpecifiers[12]),
"เน€เธกเธทเธญเธ‡": new MapEntry(5, "เน€เธกเธทเธญเธ‡", valueSpecifiers[8]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ": new MapEntry(8, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ", valueSpecifiers[12]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ‡เธฒเธ™": new MapEntry(11, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ‡เธฒเธ™", valueSpecifiers[15]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ•เธดเธ”เธ•เนˆเธญเธ‡เธฒเธ™": new MapEntry(17, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ•เธดเธ”เธ•เนˆเธญเธ‡เธฒเธ™", valueSpecifiers[15]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™": new MapEntry(16, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™", valueSpecifiers[15]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ˜เธธเธฃเธเธดเธˆ": new MapEntry(14, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ˜เธธเธฃเธเธดเธˆ", valueSpecifiers[15]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธšเธฃเธดเธฉเธฑเธ—": new MapEntry(14, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธšเธฃเธดเธฉเธฑเธ—", valueSpecifiers[15]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธšเน‰เธฒเธ™": new MapEntry(12, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธšเน‰เธฒเธ™", valueSpecifiers[14]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ": new MapEntry(14, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ", valueSpecifiers[16]),
"เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง": new MapEntry(15, "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง", valueSpecifiers[16]),
"เน‚เธ—เธฃเธชเธฒเธฃ": new MapEntry(6, "เน‚เธ—เธฃเธชเธฒเธฃ", valueSpecifiers[12]),
"เน„เธ›เธฃเธฉเธ“เธตเธขเนŒ": new MapEntry(8, "เน„เธ›เธฃเธฉเธ“เธตเธขเนŒ", valueSpecifiers[10]),
"ใ€’": new MapEntry(1, "ใ€’", valueSpecifiers[10]),
"ใŠๅๅ‰": new MapEntry(3, "ใŠๅๅ‰", valueSpecifiers[0]),
"ใŠ่ช•็”Ÿๆ—ฅ": new MapEntry(4, "ใŠ่ช•็”Ÿๆ—ฅ", valueSpecifiers[4]),
"ใ”ไฝๆ‰€": new MapEntry(3, "ใ”ไฝๆ‰€", valueSpecifiers[7]),
"ใใ‚Œไปฅ้™ใฎไฝๆ‰€": new MapEntry(7, "ใใ‚Œไปฅ้™ใฎไฝๆ‰€", valueSpecifiers[7]),
"ใ‚ขใƒ‰ใƒฌใ‚น": new MapEntry(4, "ใ‚ขใƒ‰ใƒฌใ‚น", valueSpecifiers[7]),
"ใ‚จใƒชใ‚ขใ‚ณใƒผใƒ‰": new MapEntry(6, "ใ‚จใƒชใ‚ขใ‚ณใƒผใƒ‰", valueSpecifiers[12]),
"ใ‚ฑใƒผใ‚ฟใ‚ค": new MapEntry(4, "ใ‚ฑใƒผใ‚ฟใ‚ค", valueSpecifiers[16]),
"ใ‚ฑใƒผใ‚ฟใ‚ค็•ชๅท": new MapEntry(6, "ใ‚ฑใƒผใ‚ฟใ‚ค็•ชๅท", valueSpecifiers[16]),
"ใ‚ฑใƒผใ‚ฟใ‚ค้›ป่ฉฑ": new MapEntry(6, "ใ‚ฑใƒผใ‚ฟใ‚ค้›ป่ฉฑ", valueSpecifiers[16]),
"ใ‚ฑใƒผใ‚ฟใ‚ค้›ป่ฉฑ็•ชๅท": new MapEntry(8, "ใ‚ฑใƒผใ‚ฟใ‚ค้›ป่ฉฑ็•ชๅท", valueSpecifiers[16]),
"ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช": new MapEntry(6, "ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช", valueSpecifiers[12]),
"ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช็•ชๅท": new MapEntry(8, "ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช็•ชๅท", valueSpecifiers[12]),
"ใƒ•ใ‚กใ‚ฏใ‚น": new MapEntry(4, "ใƒ•ใ‚กใ‚ฏใ‚น", valueSpecifiers[12]),
"ใƒ•ใ‚กใ‚ฏใ‚น็•ชๅท": new MapEntry(6, "ใƒ•ใ‚กใ‚ฏใ‚น็•ชๅท", valueSpecifiers[12]),
"ใƒ•ใ‚กใƒƒใ‚ฏใ‚น": new MapEntry(5, "ใƒ•ใ‚กใƒƒใ‚ฏใ‚น", valueSpecifiers[12]),
"ใƒ•ใ‚กใƒƒใ‚ฏใ‚น็•ชๅท": new MapEntry(7, "ใƒ•ใ‚กใƒƒใ‚ฏใ‚น็•ชๅท", valueSpecifiers[12]),
"ใƒ•ใƒซใƒใƒผใƒ ": new MapEntry(5, "ใƒ•ใƒซใƒใƒผใƒ ", valueSpecifiers[0]),
"ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ": new MapEntry(6, "ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ", valueSpecifiers[17]),
"ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ็•ชๅท": new MapEntry(8, "ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ็•ชๅท", valueSpecifiers[17]),
"ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ้›ป่ฉฑ็•ชๅท": new MapEntry(10, "ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ้›ป่ฉฑ็•ชๅท", valueSpecifiers[17]),
"ใƒใ‚ฑใƒ™ใƒซ": new MapEntry(4, "ใƒใ‚ฑใƒ™ใƒซ", valueSpecifiers[17]),
"ใƒใ‚ฑใƒ™ใƒซ็•ชๅท": new MapEntry(6, "ใƒใ‚ฑใƒ™ใƒซ็•ชๅท", valueSpecifiers[17]),
"ใƒใ‚ฑใƒ™ใƒซ้›ป่ฉฑ็•ชๅท": new MapEntry(8, "ใƒใ‚ฑใƒ™ใƒซ้›ป่ฉฑ็•ชๅท", valueSpecifiers[17]),
"ใƒŸใƒ‰ใƒซใƒใƒผใƒ ": new MapEntry(6, "ใƒŸใƒ‰ใƒซใƒใƒผใƒ ", valueSpecifiers[2]),
"ใƒกใ‚ขใƒ‰": new MapEntry(3, "ใƒกใ‚ขใƒ‰", valueSpecifiers[6]),
"ใƒกใƒซใ‚ขใƒ‰": new MapEntry(4, "ใƒกใƒซใ‚ขใƒ‰", valueSpecifiers[6]),
"ใƒกใƒผใƒซ": new MapEntry(3, "ใƒกใƒผใƒซ", valueSpecifiers[6]),
"ใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น": new MapEntry(7, "ใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น", valueSpecifiers[6]),
"ไธชไบบไธป้กต": new MapEntry(4, "ไธชไบบไธป้กต", valueSpecifiers[25]),
"ไธชไบบ็ฝ‘็ซ™": new MapEntry(4, "ไธชไบบ็ฝ‘็ซ™", valueSpecifiers[25]),
"ไธชไบบ็ฝ‘้กต": new MapEntry(4, "ไธชไบบ็ฝ‘้กต", valueSpecifiers[25]),
"ไธญ้–“ๅ": new MapEntry(3, "ไธญ้–“ๅ", valueSpecifiers[2]),
"ไธญ้—ดๅ": new MapEntry(3, "ไธญ้—ดๅ", valueSpecifiers[2]),
"ไผš็คพ": new MapEntry(2, "ไผš็คพ", valueSpecifiers[13]),
"ไผš็คพๅ": new MapEntry(3, "ไผš็คพๅ", valueSpecifiers[13]),
"ไผš็คพ้›ป่ฉฑ": new MapEntry(4, "ไผš็คพ้›ป่ฉฑ", valueSpecifiers[15]),
"ไผš็คพ้›ป่ฉฑ็•ชๅท": new MapEntry(6, "ไผš็คพ้›ป่ฉฑ็•ชๅท", valueSpecifiers[15]),
"ไผš็คพ้›ป่ฉฑ๏ผš": new MapEntry(5, "ไผš็คพ้›ป่ฉฑ๏ผš", valueSpecifiers[15]),
"ไผ ๅ‘ผๆœบ": new MapEntry(3, "ไผ ๅ‘ผๆœบ", valueSpecifiers[17]),
"ไผ ๅ‘ผๆœบๅŒบๅท": new MapEntry(5, "ไผ ๅ‘ผๆœบๅŒบๅท", valueSpecifiers[17]),
"ไผ ็œŸ": new MapEntry(2, "ไผ ็œŸ", valueSpecifiers[12]),
"ไฝๅ€": new MapEntry(2, "ไฝๅ€", valueSpecifiers[7]),
"ไฝๅฎ…้›ป่ฉฑ": new MapEntry(4, "ไฝๅฎ…้›ป่ฉฑ", valueSpecifiers[14]),
"ไฝๅฎถ้›ป่ฉฑ": new MapEntry(4, "ไฝๅฎถ้›ป่ฉฑ", valueSpecifiers[14]),
"ไฝๆ‰€": new MapEntry(2, "ไฝๆ‰€", valueSpecifiers[7]),
"ไฝๆ‰€ๅ…ฅๅŠ›ๆฌ„": new MapEntry(5, "ไฝๆ‰€ๅ…ฅๅŠ›ๆฌ„", valueSpecifiers[7]),
"ไฝๆ‰€๏ผˆ17ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰": new MapEntry(10, "ไฝๆ‰€๏ผˆ17ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰", valueSpecifiers[7]),
"ๅ€‹ไบบ้›ป่ฉฑ็•ชๅท": new MapEntry(6, "ๅ€‹ไบบ้›ป่ฉฑ็•ชๅท", valueSpecifiers[14]),
"ๅ‚ณๅ‘ผๆฉŸ": new MapEntry(3, "ๅ‚ณๅ‘ผๆฉŸ", valueSpecifiers[17]),
"ๅ‚ณๅ‘ผๆฉŸ่™Ÿ็ขผ": new MapEntry(5, "ๅ‚ณๅ‘ผๆฉŸ่™Ÿ็ขผ", valueSpecifiers[17]),
"ๅ‚ณ็œŸ": new MapEntry(2, "ๅ‚ณ็œŸ", valueSpecifiers[12]),
"ๅ‚ณ็œŸ่™Ÿ็ขผ": new MapEntry(4, "ๅ‚ณ็œŸ่™Ÿ็ขผ", valueSpecifiers[12]),
"ๅ…จๅ": new MapEntry(2, "ๅ…จๅ", valueSpecifiers[0]),
"ๅ…ฌๅ‹™้›ป่ฉฑ": new MapEntry(4, "ๅ…ฌๅ‹™้›ป่ฉฑ", valueSpecifiers[15]),
"ๅ…ฌๅธ": new MapEntry(2, "ๅ…ฌๅธ", valueSpecifiers[13]),
"ๅ…ฌๅธๅ็จฑ": new MapEntry(4, "ๅ…ฌๅธๅ็จฑ", valueSpecifiers[13]),
"ๅ…ฌๅธ็”ต่ฏ": new MapEntry(4, "ๅ…ฌๅธ็”ต่ฏ", valueSpecifiers[15]),
"ๅ…ฌๅธ็”ต่ฏๅŒบๅท": new MapEntry(6, "ๅ…ฌๅธ็”ต่ฏๅŒบๅท", valueSpecifiers[15]),
"ๅ…ฌๅธ้›ป่ฉฑ": new MapEntry(4, "ๅ…ฌๅธ้›ป่ฉฑ", valueSpecifiers[15]),
"ๅ‡บ็”Ÿ": new MapEntry(2, "ๅ‡บ็”Ÿ", valueSpecifiers[4]),
"ๅ‡บ็”Ÿๅนดๆœˆๆ—ฅ": new MapEntry(5, "ๅ‡บ็”Ÿๅนดๆœˆๆ—ฅ", valueSpecifiers[4]),
"ๅ‡บ็”Ÿๆ—ฅๆœŸ": new MapEntry(4, "ๅ‡บ็”Ÿๆ—ฅๆœŸ", valueSpecifiers[4]),
"ๅ‹คๅ‹™ๅ…ˆ": new MapEntry(3, "ๅ‹คๅ‹™ๅ…ˆ", valueSpecifiers[13]),
"ๅ‹คๅ‹™ๅ…ˆไผš็คพ": new MapEntry(5, "ๅ‹คๅ‹™ๅ…ˆไผš็คพ", valueSpecifiers[13]),
"ๅ‹คๅ‹™ๅ…ˆไผš็คพๅ": new MapEntry(6, "ๅ‹คๅ‹™ๅ…ˆไผš็คพๅ", valueSpecifiers[13]),
"ๅ‹คๅ‹™ๅ…ˆ้›ป่ฉฑ็•ชๅท": new MapEntry(7, "ๅ‹คๅ‹™ๅ…ˆ้›ป่ฉฑ็•ชๅท", valueSpecifiers[15]),
"ๅŒบๅท": new MapEntry(2, "ๅŒบๅท", valueSpecifiers[12]),
"ๅ€ๅŸŸ็ขผ": new MapEntry(3, "ๅ€ๅŸŸ็ขผ", valueSpecifiers[12]),
"ๅ€ๅŸŸ่™Ÿ็ขผ": new MapEntry(4, "ๅ€ๅŸŸ่™Ÿ็ขผ", valueSpecifiers[12]),
"ๅ€็ขผ": new MapEntry(2, "ๅ€็ขผ", valueSpecifiers[12]),
"ๅ•ไฝ": new MapEntry(2, "ๅ•ไฝ", valueSpecifiers[13]),
"ๅ•ไฝๅ็งฐ": new MapEntry(4, "ๅ•ไฝๅ็งฐ", valueSpecifiers[13]),
"ๅๅ‰": new MapEntry(2, "ๅๅ‰", valueSpecifiers[0]),
"ๅๅญ—": new MapEntry(2, "ๅๅญ—", valueSpecifiers[0]),
"ๅ็จฑ": new MapEntry(2, "ๅ็จฑ", valueSpecifiers[0]),
"ๅ๏ผˆๅ…จ่ง’8ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰": new MapEntry(10, "ๅ๏ผˆๅ…จ่ง’8ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰", valueSpecifiers[1]),
"ๅ‘ผๅซๅ™จ": new MapEntry(3, "ๅ‘ผๅซๅ™จ", valueSpecifiers[17]),
"ๅ‘ผๅซๅ™จ่™Ÿ็ขผ": new MapEntry(5, "ๅ‘ผๅซๅ™จ่™Ÿ็ขผ", valueSpecifiers[17]),
"ๅ•†็”จ้›ป่ฉฑ": new MapEntry(4, "ๅ•†็”จ้›ป่ฉฑ", valueSpecifiers[15]),
"ๅ›บๅฎš้›ป่ฉฑ": new MapEntry(4, "ๅ›บๅฎš้›ป่ฉฑ", valueSpecifiers[12]),
"ๅ›บๅฎš้›ป่ฉฑ็•ชๅท": new MapEntry(6, "ๅ›บๅฎš้›ป่ฉฑ็•ชๅท", valueSpecifiers[12]),
"ๅ›ฝ": new MapEntry(1, "ๅ›ฝ", valueSpecifiers[11]),
"ๅ›ฝ/ๅœฐๅŸŸๅ": new MapEntry(5, "ๅ›ฝ/ๅœฐๅŸŸๅ", valueSpecifiers[11]),
"ๅ›ฝ/ๅœฐๅŸŸๅ๏ผš": new MapEntry(6, "ๅ›ฝ/ๅœฐๅŸŸๅ๏ผš", valueSpecifiers[11]),
"ๅ›ฝใ€ๅœฐๅŸŸ": new MapEntry(4, "ๅ›ฝใ€ๅœฐๅŸŸ", valueSpecifiers[11]),
"ๅ›ฝๅฎถ": new MapEntry(2, "ๅ›ฝๅฎถ", valueSpecifiers[11]),
"ๅ›ฝๅฎถ/ๅœฐๅŒบ": new MapEntry(5, "ๅ›ฝๅฎถ/ๅœฐๅŒบ", valueSpecifiers[11]),
"ๅ›ฝ๏ผๅœฐๅŸŸๅ": new MapEntry(5, "ๅ›ฝ๏ผๅœฐๅŸŸๅ", valueSpecifiers[11]),
"ๅ›ฝ๏ผๅœฐๅŸŸๅ๏ผš": new MapEntry(6, "ๅ›ฝ๏ผๅœฐๅŸŸๅ๏ผš", valueSpecifiers[11]),
"ๅœ‹ๅฎถ": new MapEntry(2, "ๅœ‹ๅฎถ", valueSpecifiers[11]),
"ๅœ‹ๅฎถโˆ•ๅœฐๅ€": new MapEntry(5, "ๅœ‹ๅฎถโˆ•ๅœฐๅ€", valueSpecifiers[11]),
"ๅœ‹ๅฎถๆˆ–ๅœฐๅ€": new MapEntry(5, "ๅœ‹ๅฎถๆˆ–ๅœฐๅ€", valueSpecifiers[11]),
"ๅœฐๅŒบ": new MapEntry(2, "ๅœฐๅŒบ", valueSpecifiers[11]),
"ๅœฐๅ€": new MapEntry(2, "ๅœฐๅ€", valueSpecifiers[7]),
"ๅŸŽๅธ‚": new MapEntry(2, "ๅŸŽๅธ‚", valueSpecifiers[8]),
"ๅคœๆ™š็”ต่ฏๅŒบๅท": new MapEntry(6, "ๅคœๆ™š็”ต่ฏๅŒบๅท", valueSpecifiers[14]),
"ๅคœ้–“้›ป่ฉฑ": new MapEntry(4, "ๅคœ้–“้›ป่ฉฑ", valueSpecifiers[14]),
"ๅคœ้–“้›ป่ฉฑ็•ชๅท": new MapEntry(6, "ๅคœ้–“้›ป่ฉฑ็•ชๅท", valueSpecifiers[14]),
"ๅคœ้—ด็”ต่ฏ": new MapEntry(4, "ๅคœ้—ด็”ต่ฏ", valueSpecifiers[14]),
"ๅคงๅ“ฅๅคง": new MapEntry(3, "ๅคงๅ“ฅๅคง", valueSpecifiers[16]),
"ๅคงๅ“ฅๅคง้›ป่ฉฑ": new MapEntry(5, "ๅคงๅ“ฅๅคง้›ป่ฉฑ", valueSpecifiers[16]),
"ๅง“": new MapEntry(1, "ๅง“", valueSpecifiers[3]),
"ๅง“ๅ": new MapEntry(2, "ๅง“ๅ", valueSpecifiers[0]),
"ๅง“ๆฐ": new MapEntry(2, "ๅง“ๆฐ", valueSpecifiers[3]),
"ๅฎถๅบญ็”ต่ฏ": new MapEntry(4, "ๅฎถๅบญ็”ต่ฏ", valueSpecifiers[14]),
"ๅฎถๅบญ็”ต่ฏๅŒบๅท": new MapEntry(6, "ๅฎถๅบญ็”ต่ฏๅŒบๅท", valueSpecifiers[14]),
"ๅฎถ็”จ้›ป่ฉฑ": new MapEntry(4, "ๅฎถ็”จ้›ป่ฉฑ", valueSpecifiers[14]),
"ๅฎถ่ฃก้›ป่ฉฑ": new MapEntry(4, "ๅฎถ่ฃก้›ป่ฉฑ", valueSpecifiers[14]),
"ๅทž": new MapEntry(1, "ๅทž", valueSpecifiers[9]),
"ๅทž/็œ": new MapEntry(3, "ๅทž/็œ", valueSpecifiers[9]),
"ๅทžใพใŸใฏ้ƒก/ๅธ‚ๅŒบ็”บๆ‘": new MapEntry(10, "ๅทžใพใŸใฏ้ƒก/ๅธ‚ๅŒบ็”บๆ‘", valueSpecifiers[8]),
"ๅทžใพใŸใฏ้ƒก๏ผๅธ‚ๅŒบ็”บๆ‘": new MapEntry(10, "ๅทžใพใŸใฏ้ƒก๏ผๅธ‚ๅŒบ็”บๆ‘", valueSpecifiers[8]),
"ๅทฅไฝœ็”ต่ฏ": new MapEntry(4, "ๅทฅไฝœ็”ต่ฏ", valueSpecifiers[15]),
"ๅทฅไฝœ็”ต่ฏๅŒบๅท": new MapEntry(6, "ๅทฅไฝœ็”ต่ฏๅŒบๅท", valueSpecifiers[15]),
"ๅทฅไฝœ่Œไฝ": new MapEntry(4, "ๅทฅไฝœ่Œไฝ", valueSpecifiers[5]),
"ๅทฅไฝœ่ท็จฑ": new MapEntry(4, "ๅทฅไฝœ่ท็จฑ", valueSpecifiers[5]),
"ๅทฅไฝœ่ท้Šœ": new MapEntry(4, "ๅทฅไฝœ่ท้Šœ", valueSpecifiers[5]),
"ๅทฅไฝœ้›ป่ฉฑ": new MapEntry(4, "ๅทฅไฝœ้›ป่ฉฑ", valueSpecifiers[15]),
"ๅธ‚ๅŒบ็”บๆ‘": new MapEntry(4, "ๅธ‚ๅŒบ็”บๆ‘", valueSpecifiers[8]),
"ๅธ‚ๅŒบ็”บๆ‘๏ผˆ11ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰": new MapEntry(12, "ๅธ‚ๅŒบ็”บๆ‘๏ผˆ11ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰", valueSpecifiers[8]),
"ๅธ‚ๅŒบ็”บๆ‘๏ผš": new MapEntry(5, "ๅธ‚ๅŒบ็”บๆ‘๏ผš", valueSpecifiers[8]),
"ๅธ‚ๅŒบ้ƒก็”บๆ‘": new MapEntry(5, "ๅธ‚ๅŒบ้ƒก็”บๆ‘", valueSpecifiers[8]),
"ๅธ‚ๅค–ๅฑ€็•ช": new MapEntry(4, "ๅธ‚ๅค–ๅฑ€็•ช", valueSpecifiers[12]),
"ๅฝน่ท": new MapEntry(2, "ๅฝน่ท", valueSpecifiers[5]),
"ๆ‰€ๅฑž": new MapEntry(2, "ๆ‰€ๅฑž", valueSpecifiers[13]),
"ๆ‰€ๅฑž็ต„็น”": new MapEntry(4, "ๆ‰€ๅฑž็ต„็น”", valueSpecifiers[13]),
"ๆ‰€ๅฑž็ต„็น”ๅ": new MapEntry(5, "ๆ‰€ๅฑž็ต„็น”ๅ", valueSpecifiers[13]),
"ๆ‰‹ๆŒ้›ป่ฉฑ": new MapEntry(4, "ๆ‰‹ๆŒ้›ป่ฉฑ", valueSpecifiers[16]),
"ๆ‰‹ๆ้›ป่ฉฑ": new MapEntry(4, "ๆ‰‹ๆ้›ป่ฉฑ", valueSpecifiers[16]),
"ๆ‰‹ๆœบ": new MapEntry(2, "ๆ‰‹ๆœบ", valueSpecifiers[16]),
"ๆ‰‹ๆœบๅŒบๅท": new MapEntry(4, "ๆ‰‹ๆœบๅŒบๅท", valueSpecifiers[16]),
"ๆ‰‹ๆฉŸ": new MapEntry(2, "ๆ‰‹ๆฉŸ", valueSpecifiers[16]),
"ๆ‰‹ๆฉŸ้›ป่ฉฑ": new MapEntry(4, "ๆ‰‹ๆฉŸ้›ป่ฉฑ", valueSpecifiers[16]),
"ๆบๅธฏ": new MapEntry(2, "ๆบๅธฏ", valueSpecifiers[16]),
"ๆบๅธฏ็•ชๅท": new MapEntry(4, "ๆบๅธฏ็•ชๅท", valueSpecifiers[16]),
"ๆบๅธฏ้›ป่ฉฑ": new MapEntry(4, "ๆบๅธฏ้›ป่ฉฑ", valueSpecifiers[16]),
"ๆบๅธฏ้›ป่ฉฑ็•ชๅท": new MapEntry(6, "ๆบๅธฏ้›ป่ฉฑ็•ชๅท", valueSpecifiers[16]),
"ๆ—ฅไธญ้›ป่ฉฑ็•ชๅท": new MapEntry(6, "ๆ—ฅไธญ้›ป่ฉฑ็•ชๅท", valueSpecifiers[15]),
"ๆ—ฅ้–“้›ป่ฉฑ": new MapEntry(4, "ๆ—ฅ้–“้›ป่ฉฑ", valueSpecifiers[15]),
"ๆ˜ผ้–“้›ป่ฉฑ็•ชๅท": new MapEntry(6, "ๆ˜ผ้–“้›ป่ฉฑ็•ชๅท", valueSpecifiers[15]),
"ๆ™šไธŠ้›ป่ฉฑ": new MapEntry(4, "ๆ™šไธŠ้›ป่ฉฑ", valueSpecifiers[14]),
"ๆ™š้–“้›ป่ฉฑ": new MapEntry(4, "ๆ™š้–“้›ป่ฉฑ", valueSpecifiers[14]),
"ๆœบๆž„": new MapEntry(2, "ๆœบๆž„", valueSpecifiers[13]),
"ๆœบๆž„/็ป„็ป‡": new MapEntry(5, "ๆœบๆž„/็ป„็ป‡", valueSpecifiers[13]),
"ๆฉŸๆง‹": new MapEntry(2, "ๆฉŸๆง‹", valueSpecifiers[13]),
"ๆฉŸ้—œ": new MapEntry(2, "ๆฉŸ้—œ", valueSpecifiers[13]),
"ๆฐ": new MapEntry(1, "ๆฐ", valueSpecifiers[3]),
"ๆฐๅ": new MapEntry(2, "ๆฐๅ", valueSpecifiers[0]),
"็”Ÿๅนดๆœˆๆ—ฅ": new MapEntry(4, "็”Ÿๅนดๆœˆๆ—ฅ", valueSpecifiers[4]),
"็”Ÿๆ—ฅ": new MapEntry(2, "็”Ÿๆ—ฅ", valueSpecifiers[4]),
"็”ตๅญ้‚ฎไปถ": new MapEntry(4, "็”ตๅญ้‚ฎไปถ", valueSpecifiers[6]),
"็”ตๅญ้‚ฎไปถๅœฐๅ€": new MapEntry(6, "็”ตๅญ้‚ฎไปถๅœฐๅ€", valueSpecifiers[6]),
"็”ต่ฏ": new MapEntry(2, "็”ต่ฏ", valueSpecifiers[12]),
"็”ต่ฏๅท็ ": new MapEntry(4, "็”ต่ฏๅท็ ", valueSpecifiers[12]),
"็•ชๅœฐ": new MapEntry(2, "็•ชๅœฐ", valueSpecifiers[7]),
"็•ชๅœฐ๏ผš": new MapEntry(3, "็•ชๅœฐ๏ผš", valueSpecifiers[7]),
"็™ฝๅคฉ็”ต่ฏ": new MapEntry(4, "็™ฝๅคฉ็”ต่ฏ", valueSpecifiers[15]),
"็™ฝๅคฉ็”ต่ฏๅŒบๅท": new MapEntry(6, "็™ฝๅคฉ็”ต่ฏๅŒบๅท", valueSpecifiers[15]),
"็™ฝๅคฉ้›ป่ฉฑ": new MapEntry(4, "็™ฝๅคฉ้›ป่ฉฑ", valueSpecifiers[15]),
"็œ": new MapEntry(1, "็œ", valueSpecifiers[9]),
"็œŸๅฎžๅง“ๅ": new MapEntry(4, "็œŸๅฎžๅง“ๅ", valueSpecifiers[0]),
"็œŸๅฏฆๅง“ๅ": new MapEntry(4, "็œŸๅฏฆๅง“ๅ", valueSpecifiers[0]),
"็งปๅŠจ็”ต่ฏ": new MapEntry(4, "็งปๅŠจ็”ต่ฏ", valueSpecifiers[16]),
"็งปๅŠจ็”ต่ฏๅŒบๅท": new MapEntry(6, "็งปๅŠจ็”ต่ฏๅŒบๅท", valueSpecifiers[16]),
"็ต„็น”": new MapEntry(2, "็ต„็น”", valueSpecifiers[13]),
"็ต„็น”โˆ•ๆฉŸๆง‹": new MapEntry(5, "็ต„็น”โˆ•ๆฉŸๆง‹", valueSpecifiers[13]),
"็ต„็น”ๅ": new MapEntry(3, "็ต„็น”ๅ", valueSpecifiers[13]),
"็ธฃโˆ•ๅธ‚": new MapEntry(3, "็ธฃโˆ•ๅธ‚", valueSpecifiers[8]),
"็ธฃๅธ‚": new MapEntry(2, "็ธฃๅธ‚", valueSpecifiers[8]),
"็ธฃ๏ผˆๅธ‚๏ผ‰": new MapEntry(4, "็ธฃ๏ผˆๅธ‚๏ผ‰", valueSpecifiers[8]),
"็ป„็ป‡": new MapEntry(2, "็ป„็ป‡", valueSpecifiers[13]),
"่Œไฝ": new MapEntry(2, "่Œไฝ", valueSpecifiers[5]),
"่ŒๅŠก": new MapEntry(2, "่ŒๅŠก", valueSpecifiers[5]),
"่”็ณปไบบ": new MapEntry(3, "่”็ณปไบบ", valueSpecifiers[0]),
"่ฏ็ตกๅœฐๅ€": new MapEntry(4, "่ฏ็ตกๅœฐๅ€", valueSpecifiers[7]),
"่ฏ็ตก้›ป่ฉฑ": new MapEntry(4, "่ฏ็ตก้›ป่ฉฑ", valueSpecifiers[12]),
"่ทไฝ": new MapEntry(2, "่ทไฝ", valueSpecifiers[5]),
"่ทไฝๅ็จฑ": new MapEntry(4, "่ทไฝๅ็จฑ", valueSpecifiers[5]),
"่ทๅ‹™": new MapEntry(2, "่ทๅ‹™", valueSpecifiers[5]),
"่ทๅ‹™ๅ็จฑ": new MapEntry(4, "่ทๅ‹™ๅ็จฑ", valueSpecifiers[5]),
"่ทๅ ด": new MapEntry(2, "่ทๅ ด", valueSpecifiers[13]),
"่ทๅ ด้›ป่ฉฑ็•ชๅท": new MapEntry(6, "่ทๅ ด้›ป่ฉฑ็•ชๅท", valueSpecifiers[15]),
"่ทๆฅญ": new MapEntry(2, "่ทๆฅญ", valueSpecifiers[5]),
"่ท็จฎ": new MapEntry(2, "่ท็จฎ", valueSpecifiers[5]),
"่ท็จฑ": new MapEntry(2, "่ท็จฑ", valueSpecifiers[5]),
"่ท็จฑๅ็จฑ": new MapEntry(4, "่ท็จฑๅ็จฑ", valueSpecifiers[5]),
"่ท้Šœ": new MapEntry(2, "่ท้Šœ", valueSpecifiers[5]),
"่‡ชๅฎ…": new MapEntry(2, "่‡ชๅฎ…", valueSpecifiers[14]),
"่‡ชๅฎ…้›ป่ฉฑ": new MapEntry(4, "่‡ชๅฎ…้›ป่ฉฑ", valueSpecifiers[14]),
"่‡ชๅฎ…้›ป่ฉฑ็•ชๅท": new MapEntry(6, "่‡ชๅฎ…้›ป่ฉฑ็•ชๅท", valueSpecifiers[14]),
"่‡ชๅฎ…้›ป่ฉฑ๏ผš": new MapEntry(5, "่‡ชๅฎ…้›ป่ฉฑ๏ผš", valueSpecifiers[14]),
"่กŒๅ‹•": new MapEntry(2, "่กŒๅ‹•", valueSpecifiers[16]),
"่กŒๅ‹•้›ป่ฉฑ": new MapEntry(4, "่กŒๅ‹•้›ป่ฉฑ", valueSpecifiers[16]),
"่ก—้“": new MapEntry(2, "่ก—้“", valueSpecifiers[7]),
"่ก—้“ๅœฐๅ€": new MapEntry(4, "่ก—้“ๅœฐๅ€", valueSpecifiers[7]),
"่ช•็”Ÿๆ—ฅ": new MapEntry(3, "่ช•็”Ÿๆ—ฅ", valueSpecifiers[4]),
"่ฏฆ็ป†ๅœฐๅ€": new MapEntry(4, "่ฏฆ็ป†ๅœฐๅ€", valueSpecifiers[7]),
"่บซไปฝ่ฏ": new MapEntry(3, "่บซไปฝ่ฏ", valueSpecifiers[18]),
"่พ“ๅ…ฅ่ก—้“ๅœฐๅ€่กŒ": new MapEntry(7, "่พ“ๅ…ฅ่ก—้“ๅœฐๅ€่กŒ", valueSpecifiers[7]),
"่พฆๅ…ฌๅฎค้›ป่ฉฑ": new MapEntry(5, "่พฆๅ…ฌๅฎค้›ป่ฉฑ", valueSpecifiers[15]),
"้€š่จŠๅœฐๅ€": new MapEntry(4, "้€š่จŠๅœฐๅ€", valueSpecifiers[7]),
"้€ฃ็ตกๅœฐๅ€": new MapEntry(4, "้€ฃ็ตกๅœฐๅ€", valueSpecifiers[7]),
"้€ฃ็ตก้›ป่ฉฑ": new MapEntry(4, "้€ฃ็ตก้›ป่ฉฑ", valueSpecifiers[12]),
"้‚ฎๆ”ฟ็ผ–็ ": new MapEntry(4, "้‚ฎๆ”ฟ็ผ–็ ", valueSpecifiers[10]),
"้‚ฎ็ผ–": new MapEntry(2, "้‚ฎ็ผ–", valueSpecifiers[10]),
"้ƒกๅธ‚ๅŒบ(ๅณถใƒปๅ›ฝๅ)": new MapEntry(9, "้ƒกๅธ‚ๅŒบ(ๅณถใƒปๅ›ฝๅ)", valueSpecifiers[8]),
"้ƒกๅธ‚ๅŒบ๏ผˆๅณถใƒปๅ›ฝๅ๏ผ‰": new MapEntry(9, "้ƒกๅธ‚ๅŒบ๏ผˆๅณถใƒปๅ›ฝๅ๏ผ‰", valueSpecifiers[8]),
"้ƒตไพฟ็•ชๅท": new MapEntry(4, "้ƒตไพฟ็•ชๅท", valueSpecifiers[10]),
"้ƒตไพฟ็•ชๅท๏ผš": new MapEntry(5, "้ƒตไพฟ็•ชๅท๏ผš", valueSpecifiers[10]),
"้ƒต้žๅ€่™Ÿ": new MapEntry(4, "้ƒต้žๅ€่™Ÿ", valueSpecifiers[10]),
"้ƒฝ้“ๅบœ็œŒ": new MapEntry(4, "้ƒฝ้“ๅบœ็œŒ", valueSpecifiers[9]),
"้ƒฝ้“ๅบœ็œŒ๏ผš": new MapEntry(5, "้ƒฝ้“ๅบœ็œŒ๏ผš", valueSpecifiers[9]),
"้›ปๅญใƒกใƒผใƒซ": new MapEntry(5, "้›ปๅญใƒกใƒผใƒซ", valueSpecifiers[6]),
"้›ปๅญไฟก็ฎฑ": new MapEntry(4, "้›ปๅญไฟก็ฎฑ", valueSpecifiers[6]),
"้›ปๅญ้ƒตไปถ": new MapEntry(4, "้›ปๅญ้ƒตไปถ", valueSpecifiers[6]),
"้›ปๅญ้ƒตไปถไฝๅ€": new MapEntry(6, "้›ปๅญ้ƒตไปถไฝๅ€", valueSpecifiers[6]),
"้›ปๅญ้ƒตไปถไฟก็ฎฑ": new MapEntry(6, "้›ปๅญ้ƒตไปถไฟก็ฎฑ", valueSpecifiers[6]),
"้›ปๅญ้ƒตไปถๅœฐๅ€": new MapEntry(6, "้›ปๅญ้ƒตไปถๅœฐๅ€", valueSpecifiers[6]),
"้›ปๅญ้ƒต็ฎฑ": new MapEntry(4, "้›ปๅญ้ƒต็ฎฑ", valueSpecifiers[6]),
"้›ป่ฉฑ": new MapEntry(2, "้›ป่ฉฑ", valueSpecifiers[12]),
"้›ป่ฉฑ(ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ)": new MapEntry(10, "้›ป่ฉฑ(ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ)", valueSpecifiers[17]),
"้›ป่ฉฑ(ใƒใ‚ฑใƒ™ใƒซ)": new MapEntry(8, "้›ป่ฉฑ(ใƒใ‚ฑใƒ™ใƒซ)", valueSpecifiers[17]),
"้›ป่ฉฑ(ไผš็คพ)": new MapEntry(6, "้›ป่ฉฑ(ไผš็คพ)", valueSpecifiers[15]),
"้›ป่ฉฑ(ๅ€‹ไบบ)": new MapEntry(6, "้›ป่ฉฑ(ๅ€‹ไบบ)", valueSpecifiers[14]),
"้›ป่ฉฑ(ๅ‹คๅ‹™ๅ…ˆ)": new MapEntry(7, "้›ป่ฉฑ(ๅ‹คๅ‹™ๅ…ˆ)", valueSpecifiers[15]),
"้›ป่ฉฑ(ๅคœ้–“)": new MapEntry(6, "้›ป่ฉฑ(ๅคœ้–“)", valueSpecifiers[14]),
"้›ป่ฉฑ(ๆ—ฅไธญ)": new MapEntry(6, "้›ป่ฉฑ(ๆ—ฅไธญ)", valueSpecifiers[15]),
"้›ป่ฉฑ(ๆ˜ผ้–“)": new MapEntry(6, "้›ป่ฉฑ(ๆ˜ผ้–“)", valueSpecifiers[15]),
"้›ป่ฉฑ(่ทๅ ด)": new MapEntry(6, "้›ป่ฉฑ(่ทๅ ด)", valueSpecifiers[15]),
"้›ป่ฉฑ(่‡ชๅฎ…)": new MapEntry(6, "้›ป่ฉฑ(่‡ชๅฎ…)", valueSpecifiers[14]),
"้›ป่ฉฑ็•ชๅท": new MapEntry(4, "้›ป่ฉฑ็•ชๅท", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท(FAX)": new MapEntry(9, "้›ป่ฉฑ็•ชๅท(FAX)", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช)": new MapEntry(12, "้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช)", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใ‚ฏใ‚น)": new MapEntry(10, "้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใ‚ฏใ‚น)", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใƒƒใ‚ฏใ‚น)": new MapEntry(11, "้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใƒƒใ‚ฏใ‚น)", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท(ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ)": new MapEntry(12, "้›ป่ฉฑ็•ชๅท(ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ)", valueSpecifiers[17]),
"้›ป่ฉฑ็•ชๅท(ใƒใ‚ฑใƒ™ใƒซ)": new MapEntry(10, "้›ป่ฉฑ็•ชๅท(ใƒใ‚ฑใƒ™ใƒซ)", valueSpecifiers[17]),
"้›ป่ฉฑ็•ชๅท(ไผš็คพ)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(ไผš็คพ)", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท(ๅ€‹ไบบ)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(ๅ€‹ไบบ)", valueSpecifiers[14]),
"้›ป่ฉฑ็•ชๅท(ๅ‹คๅ‹™ๅ…ˆ)": new MapEntry(9, "้›ป่ฉฑ็•ชๅท(ๅ‹คๅ‹™ๅ…ˆ)", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท(ๅ›บๅฎš)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(ๅ›บๅฎš)", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท(ๅคœ้–“)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(ๅคœ้–“)", valueSpecifiers[14]),
"้›ป่ฉฑ็•ชๅท(ๆบๅธฏ)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(ๆบๅธฏ)", valueSpecifiers[16]),
"้›ป่ฉฑ็•ชๅท(ๆ—ฅไธญ)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(ๆ—ฅไธญ)", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท(ๆ˜ผ้–“)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(ๆ˜ผ้–“)", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท(่ทๅ ด)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(่ทๅ ด)", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท(่‡ชๅฎ…)": new MapEntry(8, "้›ป่ฉฑ็•ชๅท(่‡ชๅฎ…)", valueSpecifiers[14]),
"้›ป่ฉฑ็•ชๅทโ€ป": new MapEntry(5, "้›ป่ฉฑ็•ชๅทโ€ป", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท๏ผˆFAX๏ผ‰": new MapEntry(9, "้›ป่ฉฑ็•ชๅท๏ผˆFAX๏ผ‰", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช๏ผ‰": new MapEntry(12, "้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช๏ผ‰", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใ‚ฏใ‚น๏ผ‰": new MapEntry(10, "้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใ‚ฏใ‚น๏ผ‰", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใƒƒใ‚ฏใ‚น๏ผ‰": new MapEntry(11, "้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใƒƒใ‚ฏใ‚น๏ผ‰", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท๏ผˆใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ๏ผ‰": new MapEntry(12, "้›ป่ฉฑ็•ชๅท๏ผˆใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ๏ผ‰", valueSpecifiers[17]),
"้›ป่ฉฑ็•ชๅท๏ผˆใƒใ‚ฑใƒ™ใƒซ๏ผ‰": new MapEntry(10, "้›ป่ฉฑ็•ชๅท๏ผˆใƒใ‚ฑใƒ™ใƒซ๏ผ‰", valueSpecifiers[17]),
"้›ป่ฉฑ็•ชๅท๏ผˆไผš็คพ๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆไผš็คพ๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท๏ผˆๅ€‹ไบบ๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆๅ€‹ไบบ๏ผ‰", valueSpecifiers[14]),
"้›ป่ฉฑ็•ชๅท๏ผˆๅ‹คๅ‹™ๅ…ˆ๏ผ‰": new MapEntry(9, "้›ป่ฉฑ็•ชๅท๏ผˆๅ‹คๅ‹™ๅ…ˆ๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท๏ผˆๅ›บๅฎš๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆๅ›บๅฎš๏ผ‰", valueSpecifiers[12]),
"้›ป่ฉฑ็•ชๅท๏ผˆๅคœ้–“๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆๅคœ้–“๏ผ‰", valueSpecifiers[14]),
"้›ป่ฉฑ็•ชๅท๏ผˆๆบๅธฏ๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆๆบๅธฏ๏ผ‰", valueSpecifiers[16]),
"้›ป่ฉฑ็•ชๅท๏ผˆๆ—ฅไธญ๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆๆ—ฅไธญ๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท๏ผˆๆ˜ผ้–“๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆๆ˜ผ้–“๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท๏ผˆ่ทๅ ด๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆ่ทๅ ด๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ็•ชๅท๏ผˆ่‡ชๅฎ…๏ผ‰": new MapEntry(8, "้›ป่ฉฑ็•ชๅท๏ผˆ่‡ชๅฎ…๏ผ‰", valueSpecifiers[14]),
"้›ป่ฉฑ่™Ÿ็ขผ": new MapEntry(4, "้›ป่ฉฑ่™Ÿ็ขผ", valueSpecifiers[12]),
"้›ป่ฉฑ๏ผˆใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ๏ผ‰": new MapEntry(10, "้›ป่ฉฑ๏ผˆใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ๏ผ‰", valueSpecifiers[17]),
"้›ป่ฉฑ๏ผˆใƒใ‚ฑใƒ™ใƒซ๏ผ‰": new MapEntry(8, "้›ป่ฉฑ๏ผˆใƒใ‚ฑใƒ™ใƒซ๏ผ‰", valueSpecifiers[17]),
"้›ป่ฉฑ๏ผˆไผš็คพ๏ผ‰": new MapEntry(6, "้›ป่ฉฑ๏ผˆไผš็คพ๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ๏ผˆๅ€‹ไบบ๏ผ‰": new MapEntry(6, "้›ป่ฉฑ๏ผˆๅ€‹ไบบ๏ผ‰", valueSpecifiers[14]),
"้›ป่ฉฑ๏ผˆๅ‹คๅ‹™ๅ…ˆ๏ผ‰": new MapEntry(7, "้›ป่ฉฑ๏ผˆๅ‹คๅ‹™ๅ…ˆ๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ๏ผˆๅคœ้–“๏ผ‰": new MapEntry(6, "้›ป่ฉฑ๏ผˆๅคœ้–“๏ผ‰", valueSpecifiers[14]),
"้›ป่ฉฑ๏ผˆๆ—ฅไธญ๏ผ‰": new MapEntry(6, "้›ป่ฉฑ๏ผˆๆ—ฅไธญ๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ๏ผˆๆ˜ผ้–“๏ผ‰": new MapEntry(6, "้›ป่ฉฑ๏ผˆๆ˜ผ้–“๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ๏ผˆ่ทๅ ด๏ผ‰": new MapEntry(6, "้›ป่ฉฑ๏ผˆ่ทๅ ด๏ผ‰", valueSpecifiers[15]),
"้›ป่ฉฑ๏ผˆ่‡ชๅฎ…๏ผ‰": new MapEntry(6, "้›ป่ฉฑ๏ผˆ่‡ชๅฎ…๏ผ‰", valueSpecifiers[14]),
"้›ป้ƒต": new MapEntry(2, "้›ป้ƒต", valueSpecifiers[6]),
"้ ญ้Šœ": new MapEntry(2, "้ ญ้Šœ", valueSpecifiers[5]),
"้ชŒ ่ฏ ็ ": new MapEntry(5, "้ชŒ ่ฏ ็ ", valueSpecifiers[18]),
"้ชŒ่ฏ็ ": new MapEntry(3, "้ชŒ่ฏ็ ", valueSpecifiers[18]),
"๊ฐ€์šด๋ฐ ์ด๋ฆ„": new MapEntry(6, "๊ฐ€์šด๋ฐ ์ด๋ฆ„", valueSpecifiers[2]),
"๊ฐ€์šด๋ฐ ์ด๋ฆ„ ์ฒซ์ž": new MapEntry(9, "๊ฐ€์šด๋ฐ ์ด๋ฆ„ ์ฒซ์ž", valueSpecifiers[2]),
"๊ฐ€์šด๋ฐ์ด๋ฆ„": new MapEntry(5, "๊ฐ€์šด๋ฐ์ด๋ฆ„", valueSpecifiers[2]),
"๊ฐ€์šด๋ฐ์ด๋ฆ„ ์ฒซ์ž": new MapEntry(8, "๊ฐ€์šด๋ฐ์ด๋ฆ„ ์ฒซ์ž", valueSpecifiers[2]),
"๊ตญ๊ฐ€": new MapEntry(2, "๊ตญ๊ฐ€", valueSpecifiers[11]),
"๋‚˜๋ผ": new MapEntry(2, "๋‚˜๋ผ", valueSpecifiers[11]),
"๋‚ฎ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜": new MapEntry(7, "๋‚ฎ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜", valueSpecifiers[15]),
"๋‚ฎ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(13, "๋‚ฎ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜": new MapEntry(6, "๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜", valueSpecifiers[15]),
"๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(11, "๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(10, "๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"๋„": new MapEntry(1, "๋„", valueSpecifiers[9]),
"๋„์‹œ": new MapEntry(2, "๋„์‹œ", valueSpecifiers[8]),
"์‚ฌ์„œํ•จ": new MapEntry(3, "์‚ฌ์„œํ•จ", valueSpecifiers[10]),
"์ƒ์„ธ ์ฃผ์†Œ": new MapEntry(5, "์ƒ์„ธ ์ฃผ์†Œ", valueSpecifiers[7]),
"์ƒ์„ธ์ฃผ์†Œ": new MapEntry(4, "์ƒ์„ธ์ฃผ์†Œ", valueSpecifiers[7]),
"์ƒ๋…„์›”์ผ": new MapEntry(4, "์ƒ๋…„์›”์ผ", valueSpecifiers[4]),
"์ƒ์ผ": new MapEntry(2, "์ƒ์ผ", valueSpecifiers[4]),
"์„ฑ": new MapEntry(1, "์„ฑ", valueSpecifiers[3]),
"์„ฑ ์ด๋ฆ„": new MapEntry(4, "์„ฑ ์ด๋ฆ„", valueSpecifiers[0]),
"์„ฑ, ์ด๋ฆ„": new MapEntry(5, "์„ฑ, ์ด๋ฆ„", valueSpecifiers[0]),
"์„ฑ์ด๋ฆ„": new MapEntry(3, "์„ฑ์ด๋ฆ„", valueSpecifiers[0]),
"์†Œ์†": new MapEntry(2, "์†Œ์†", valueSpecifiers[13]),
"์‹œ": new MapEntry(1, "์‹œ", valueSpecifiers[8]),
"์—…๋ฌด์šฉ ์ „ํ™”": new MapEntry(6, "์—…๋ฌด์šฉ ์ „ํ™”", valueSpecifiers[15]),
"์—…๋ฌด์šฉ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(9, "์—…๋ฌด์šฉ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"์—…๋ฌด์šฉ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(8, "์—…๋ฌด์šฉ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"์—…๋ฌด์šฉ์ „ํ™”": new MapEntry(5, "์—…๋ฌด์šฉ์ „ํ™”", valueSpecifiers[15]),
"์—…๋ฌด์šฉ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(7, "์—…๋ฌด์šฉ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"์—ฐ๋ฝ ๋ฒˆํ˜ธ": new MapEntry(5, "์—ฐ๋ฝ ๋ฒˆํ˜ธ", valueSpecifiers[12]),
"์šฐํŽธ": new MapEntry(2, "์šฐํŽธ", valueSpecifiers[10]),
"์šฐํŽธ ๋ฒˆํ˜ธ": new MapEntry(5, "์šฐํŽธ ๋ฒˆํ˜ธ", valueSpecifiers[10]),
"์šฐํŽธ๋ฒˆํ˜ธ": new MapEntry(4, "์šฐํŽธ๋ฒˆํ˜ธ", valueSpecifiers[10]),
"์ด๋ฆ„": new MapEntry(2, "์ด๋ฆ„", valueSpecifiers[1]),
"์ด๋ฉ”์ผ": new MapEntry(3, "์ด๋ฉ”์ผ", valueSpecifiers[6]),
"์ด๋ฉ”์ผ ์ฃผ์†Œ": new MapEntry(6, "์ด๋ฉ”์ผ ์ฃผ์†Œ", valueSpecifiers[6]),
"์ด๋ฉ”์ผ์ฃผ์†Œ": new MapEntry(5, "์ด๋ฉ”์ผ์ฃผ์†Œ", valueSpecifiers[6]),
"์ €๋… ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜": new MapEntry(9, "์ €๋… ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜", valueSpecifiers[14]),
"์ €๋… ์—ฐ๋ฝ์ฒ˜": new MapEntry(6, "์ €๋… ์—ฐ๋ฝ์ฒ˜", valueSpecifiers[14]),
"์ €๋… ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(12, "์ €๋… ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[14]),
"์ €๋… ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(11, "์ €๋… ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[14]),
"์ €๋…์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜": new MapEntry(8, "์ €๋…์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜", valueSpecifiers[14]),
"์ €๋…์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜": new MapEntry(7, "์ €๋…์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜", valueSpecifiers[14]),
"์ €๋…์—ฐ๋ฝ์ฒ˜": new MapEntry(5, "์ €๋…์—ฐ๋ฝ์ฒ˜", valueSpecifiers[14]),
"์ €๋…์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(11, "์ €๋…์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[14]),
"์ €๋…์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(10, "์ €๋…์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[14]),
"์ €๋…์—ฐ๋ฝ์ฒ˜์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(9, "์ €๋…์—ฐ๋ฝ์ฒ˜์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[14]),
"์ „์ฒด ์ด๋ฆ„": new MapEntry(5, "์ „์ฒด ์ด๋ฆ„", valueSpecifiers[0]),
"์ „ํ™”": new MapEntry(2, "์ „ํ™”", valueSpecifiers[12]),
"์ „ํ™” ๋ฒˆํ˜ธ": new MapEntry(5, "์ „ํ™” ๋ฒˆํ˜ธ", valueSpecifiers[12]),
"์ „ํ™”๋ฒˆํ˜ธ": new MapEntry(4, "์ „ํ™”๋ฒˆํ˜ธ", valueSpecifiers[12]),
"์กฐ์ง": new MapEntry(2, "์กฐ์ง", valueSpecifiers[13]),
"์ฃผ": new MapEntry(1, "์ฃผ", valueSpecifiers[9]),
"์ฃผ์†Œ": new MapEntry(2, "์ฃผ์†Œ", valueSpecifiers[7]),
"์ฃผ์†Œ 1": new MapEntry(4, "์ฃผ์†Œ 1", valueSpecifiers[7]),
"์ฃผ์†Œ1": new MapEntry(3, "์ฃผ์†Œ1", valueSpecifiers[7]),
"์ค‘๊ฐ„ ์ด๋ฆ„": new MapEntry(5, "์ค‘๊ฐ„ ์ด๋ฆ„", valueSpecifiers[2]),
"์ค‘๊ฐ„ ์ด๋ฆ„ ์ฒซ์ž": new MapEntry(8, "์ค‘๊ฐ„ ์ด๋ฆ„ ์ฒซ์ž", valueSpecifiers[2]),
"์ค‘๊ฐ„์ด๋ฆ„": new MapEntry(4, "์ค‘๊ฐ„์ด๋ฆ„", valueSpecifiers[2]),
"์ค‘๊ฐ„์ด๋ฆ„ ์ฒซ์ž": new MapEntry(7, "์ค‘๊ฐ„์ด๋ฆ„ ์ฒซ์ž", valueSpecifiers[2]),
"์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(5, "์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[12]),
"์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(4, "์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[12]),
"์ง์œ„": new MapEntry(2, "์ง์œ„", valueSpecifiers[5]),
"์ง์žฅ ์ „ํ™”": new MapEntry(5, "์ง์žฅ ์ „ํ™”", valueSpecifiers[15]),
"์ง์žฅ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(8, "์ง์žฅ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"์ง์žฅ์ „ํ™”": new MapEntry(4, "์ง์žฅ์ „ํ™”", valueSpecifiers[15]),
"์ง์žฅ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(6, "์ง์žฅ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"์ง์ฑ…": new MapEntry(2, "์ง์ฑ…", valueSpecifiers[5]),
"์งํ•จ": new MapEntry(2, "์งํ•จ", valueSpecifiers[5]),
"์ง‘ ์ „ํ™”": new MapEntry(4, "์ง‘ ์ „ํ™”", valueSpecifiers[14]),
"์ง‘ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(7, "์ง‘ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[14]),
"์ง‘ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(6, "์ง‘ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[14]),
"์ง‘์ „ํ™”": new MapEntry(3, "์ง‘์ „ํ™”", valueSpecifiers[14]),
"์ง‘์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(5, "์ง‘์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[14]),
"์ง•์žฅ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(7, "์ง•์žฅ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"์ถœ์ƒ์ผ": new MapEntry(3, "์ถœ์ƒ์ผ", valueSpecifiers[4]),
"ํƒœ์–ด๋‚œ ๋‚ ": new MapEntry(5, "ํƒœ์–ด๋‚œ ๋‚ ", valueSpecifiers[4]),
"ํƒœ์–ด๋‚œ ๋‚ ์งœ": new MapEntry(6, "ํƒœ์–ด๋‚œ ๋‚ ์งœ", valueSpecifiers[4]),
"ํŒฉ์Šค": new MapEntry(2, "ํŒฉ์Šค", valueSpecifiers[12]),
"ํ˜ธ์ถœ ๋ฒˆํ˜ธ": new MapEntry(5, "ํ˜ธ์ถœ ๋ฒˆํ˜ธ", valueSpecifiers[17]),
"ํ˜ธ์ถœ๊ธฐ": new MapEntry(3, "ํ˜ธ์ถœ๊ธฐ", valueSpecifiers[17]),
"ํ˜ธ์ถœ๊ธฐ ๋ฒˆํ˜ธ": new MapEntry(6, "ํ˜ธ์ถœ๊ธฐ ๋ฒˆํ˜ธ", valueSpecifiers[17]),
"ํ˜ธ์ถœ๊ธฐ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(9, "ํ˜ธ์ถœ๊ธฐ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[17]),
"ํ˜ธ์ถœ๊ธฐ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(8, "ํ˜ธ์ถœ๊ธฐ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[17]),
"ํ˜ธ์ถœ๊ธฐ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(7, "ํ˜ธ์ถœ๊ธฐ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[17]),
"ํšŒ์‚ฌ": new MapEntry(2, "ํšŒ์‚ฌ", valueSpecifiers[13]),
"ํšŒ์‚ฌ ์ „ํ™”": new MapEntry(5, "ํšŒ์‚ฌ ์ „ํ™”", valueSpecifiers[15]),
"ํšŒ์‚ฌ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(8, "ํšŒ์‚ฌ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"ํšŒ์‚ฌ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(7, "ํšŒ์‚ฌ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"ํšŒ์‚ฌ์ „ํ™”": new MapEntry(4, "ํšŒ์‚ฌ์ „ํ™”", valueSpecifiers[15]),
"ํšŒ์‚ฌ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(6, "ํšŒ์‚ฌ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[15]),
"ํœด๋Œ€ ์ „ํ™”": new MapEntry(5, "ํœด๋Œ€ ์ „ํ™”", valueSpecifiers[16]),
"ํœด๋Œ€ ์ „ํ™” ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(11, "ํœด๋Œ€ ์ „ํ™” ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[16]),
"ํœด๋Œ€ ์ „ํ™” ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(10, "ํœด๋Œ€ ์ „ํ™” ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[16]),
"ํœด๋Œ€์ „ํ™”": new MapEntry(4, "ํœด๋Œ€์ „ํ™”", valueSpecifiers[16]),
"ํœด๋Œ€์ „ํ™” ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(10, "ํœด๋Œ€์ „ํ™” ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[16]),
"ํœด๋Œ€์ „ํ™” ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(9, "ํœด๋Œ€์ „ํ™” ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[16]),
"ํœด๋Œ€์ „ํ™”์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(8, "ํœด๋Œ€์ „ํ™”์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[16]),
"ํœด๋Œ€ํฐ": new MapEntry(3, "ํœด๋Œ€ํฐ", valueSpecifiers[16]),
"ํœด๋Œ€ํฐ ์ง€์—ญ ๋ฒˆํ˜ธ": new MapEntry(9, "ํœด๋Œ€ํฐ ์ง€์—ญ ๋ฒˆํ˜ธ", valueSpecifiers[16]),
"ํœด๋Œ€ํฐ ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(8, "ํœด๋Œ€ํฐ ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[16]),
"ํœด๋Œ€ํฐ์ง€์—ญ๋ฒˆํ˜ธ": new MapEntry(7, "ํœด๋Œ€ํฐ์ง€์—ญ๋ฒˆํ˜ธ", valueSpecifiers[16])
},
addressBookFieldLabelPatternMatchers = [new PatternMatcherClass(["ๅง“ๅ", "็œŸๅฎžๅง“ๅ", "ๅ…จๅ", "ะฟะพะฒะฝะตั–ะผ'ั", "ะฟะพะฒะฝะตั–ะผโ€™ั", "ะฟะพะฒะฝะต ั–ะผ'ั", "ะฟะพะฒะฝะต ั–ะผโ€™ั", "tam adฤฑ", "tam isim", "tam ad", "เธŠเธทเนˆเธญเนเธฅเธฐเธ™เธฒเธกเธชเธธเธเธฅ", "เธŠเธทเนˆเธญเน€เธ•เน‡เธก", "fullstรคndigt namn", "hela namnet", "nombre completo", "celรฉ meno", "ะค.ะ˜.ะž.", "ะคะ˜ะž", "ะฟะพะปะฝะพะตะธะผั", "ะฟะพะปะฝะพะต ะธะผั", "nume complet", "nume รฎntreg", "fullt navn", "fulltnavn", "์„ฑ์ด๋ฆ„", "์„ฑ, ์ด๋ฆ„", "์„ฑ ์ด๋ฆ„", "์ „์ฒด ์ด๋ฆ„", "ใƒ•ใƒซใƒใƒผใƒ ", "ๆฐๅ", "ๅๅ‰", "ใŠๅๅ‰", "nome completo", "nome e cognome", "puno ime", "ืฉื ืžืœื", "Voller Name", "Vollstรคndiger Name", "nom entier", "tรคydellinen nimi", "koko nimi", "ฮฟฮฝฮฟฮผฮฑฯ„ฮตฯ€ฯŽฮฝฯ…ฮผฮฟ", "fuldt navn", "fulde navn", "nom complet", "ุงู„ุงุณู… ุงู„ูƒุงู…ู„", "first and last name", "first and last", "full name", "fullname", "ั–ะผโ€™ั", "ั–ะผ'ั", "birinci ad", "birinci adฤฑ", "ad", "เธŠเธทเนˆเธญเธซเธ™เน‰เธฒ", "เธŠเธทเนˆเธญเนเธฃเธ", "เธŠเธทเนˆเธญเธˆเธฃเธดเธ‡", "เธŠเธทเนˆเธญเธ•เธฑเธง", "เธŠเธทเนˆเธญเธ•เน‰เธ™", "เธŠเธทเนˆเธญ", "dopnamn", "fnamn", "fรถrnamn", "fรถrn.", "nombre", "krst. meno", "krst meno", "krstnรฉ meno", "krstnรฉ", "ะ˜ะผั", "pnume", "nume botez", "pre nume", "prenume", "nome de baptismo", "primeironome", "pnome", "primeiro nome", "primeiro", "pierwsze imiฤ™", "imiฤ™", "dรธpenavn", "for-", "์ด๋ฆ„", "ๅ๏ผˆๅ…จ่ง’8ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰", "nome", "ืฉื ืคืจื˜ื™", "ืคืจื˜ื™", "Vorname", "prรฉnom usuel", "petit nom", "nom de baptรชme", "prรฉnom", "kutsumanimi", "etun.", "etu", "etunimi", "ฯŒฮฝฮฟฮผฮฑ", "voornaam", "dรธbenavn", "f-navn", "fnavn", "fornavn", "ุงู„ุงุณู… ุงู„ุฃูˆู„", "ุงู„ุฃูˆู„", "forename", "given name", "firstname", "f name", "namef", "fname", "first name", "first", "ไธญ้–“ๅ", "ไธญ้—ดๅ", "ะฟะพะฑะฐั‚ัŒะบะพะฒั–", "ะฟะพ ะฑะฐั‚ัŒะบะพะฒั–", "gรถbek adฤฑ", "ikinci adฤฑ", "ikinci isim", "ikinci ad", "เธเธฅเธฒเธ‡", "เธŠเธทเนˆเธญเธเธฅเธฒเธ‡เธฃเธฐเธซเธงเนˆเธฒเธ‡", "เธŠเธทเนˆเธญเธเธฅเธฒเธ‡", "เธŠเธทเนˆเธญเธเธฅเธฒเธ‡เธขเนˆเธญ", "เธ•เธฑเธงเธขเนˆเธญเธŠเธทเนˆเธญเธเธฅเธฒเธ‡", "mellan", "andranamn", "mellannamn", "mellan initial", "mellaninitial", "segundo nombre", "strednรฉ", "strednรฉ meno", "iniciรกla strednรฉho", "iniciรกla strednรฉho mena", "ะžั‚ั‡ะตัั‚ะฒะพ", "secundar", "alt prenume", "prenume secundar", "meio", "nomedomeio", "nome do meio", "inicialdomeio", "inicial do meio", "2ยบ nome", "inicial do 2ยบ nome", "inicjaล‚ drugiego imienia", "drugie imiฤ™", "drugie", "mellom-", "m-navn", "mellomnavn", "initial, mellomnavn", "forbokstav, mellomnavn", "๊ฐ€์šด๋ฐ์ด๋ฆ„ ์ฒซ์ž", "๊ฐ€์šด๋ฐ ์ด๋ฆ„ ์ฒซ์ž", "์ค‘๊ฐ„์ด๋ฆ„ ์ฒซ์ž", "์ค‘๊ฐ„ ์ด๋ฆ„ ์ฒซ์ž", "๊ฐ€์šด๋ฐ์ด๋ฆ„", "๊ฐ€์šด๋ฐ ์ด๋ฆ„", "์ค‘๊ฐ„์ด๋ฆ„", "์ค‘๊ฐ„ ์ด๋ฆ„", "ใƒŸใƒ‰ใƒซใƒใƒผใƒ ", "secondo nome", "iniziale secondo nome", "iniziale", "drugo ime", "ืฉื ืืžืฆืขื™", "ืืžืฆืขื™", "Initialen", "Mittelname", "nom matronymique", "matronyme", "second prรฉnom", "initiale autre prรฉnom", "autre prรฉnom", "initiale deuxiรจme prรฉnom", "initiale second prรฉnom", "deuxiรจme prรฉnom", "toinen nimi", "toinen etunimi", "ฮผฮตฯƒฮฑฮฏฮฟ ฯŒฮฝฮฟฮผฮฑ", "initiaal tweede naam", "mellem", "mellem navn", "initial, mellemnavn", "forbogstav, mellemnavn", "segon nom", "ุงู„ุงุณู… ุงู„ุฃูˆุณุท", "ุงู„ุญุฑู ุงู„ุฃูˆู„ ู…ู† ุงู„ุงุณู… ุงู„ุฃูˆุณุท", "middle", "middlename", "middle name", "middleinitial", "middle initial", "ๅง“ๆฐ", "ะฟั€ั–ะทะฒะธั‰ะต", "soyismi", "soyisim", "soyadฤฑ", "soyad", "เธŠเธทเนˆเธญเธชเธเธธเธฅเธ—เน‰เธฒเธข", "เธŠเธทเนˆเธญเธ—เน‰เธฒเธข", "เธŠเธทเนˆเธญเธชเธเธธเธฅ", "เธชเธเธธเธฅ", "เธ™เธฒเธกเธชเธเธธเธฅ", "เธ—เน‰เธฒเธข", "enamn", "familjenamn", "efternamn", "eftern.", "apellidos", "apellido", "ะคะฐะผะธะปะธั", "familie", "nume familie", "apelido", "รบltimonome", "รบnome", "รบltimo nome", "รบltimo", "sobrenome", "nazwisko", "e-navn", "etternavn", "etter-", "์„ฑ", "ๆฐ", "ๅง“", "cognome", "prezime", "ืฉื ืžืฉืคื—ื”", "ืžืฉืคื—ื”", "Familienname", "Nachname", "nom patronymique", "nom patronyme", "patronyme", "nom", "nom de famille", "sukun.", "suku", "sukunimi", "ฮตฯ€ฯŽฮฝฯ…ฮผฮฟ", "achternaam", "familienavn", "enavn", "Efternavn", "efter", "cognoms", "cognom", "ุงุณู… ุงู„ุนุงุฆู„ุฉ", "surname", "lastname", "l name", "namel", "lname", "last name", "last", "ๅ‡บ็”Ÿๅนดๆœˆๆ—ฅ", "ๅ‡บ็”Ÿ", "ๅ‡บ็”Ÿๆ—ฅๆœŸ", "็”Ÿๆ—ฅ", "ะฝะฐั€ะพะดะธะฒัั", "ะดะฐั‚ะฐ ะฝะฐั€ะพะดะถะตะฝะฝั", "ะดะตะฝัŒ ะฝะฐั€ะพะดะถะตะฝะฝั", "doฤŸum tarihi", "doฤŸum", "doฤŸum gรผnรผ", "doฤŸumgรผnรผ", "เน€เธเธดเธ”", "เธงเธฑเธ™เธ—เธตเนˆเน€เธเธดเธ”", "เธงเธฑเธ™เน€เธเธดเธ”", "fรถdd", "fรถdelsedatum", "fรถdelsedag", "cumpleaรฑos", "nacimiento", "fecha de nacimiento", "narodenรฝ/รก", "dรกtum narodenia", "narodeniny", "ั€ะพะดะธะปะฐััŒ", "ั€ะพะดะธะปัั", "ะดะฐั‚ะฐั€ะพะถะดะตะฝะธั", "ะดะตะฝัŒั€ะพะถะดะตะฝะธั", "ะดะฐั‚ะฐ ั€ะพะถะดะตะฝะธั", "ะดะตะฝัŒ ั€ะพะถะดะตะฝะธั", "nascut", "data naศ™terii", "zi naศ™tere", "zi de naศ™tere", "nascido", "nascido(a)", "data de nascimento", "aniversรกrio", "urodzona", "urodzony", "data urodzenia", "urodziny", "bursdag", "ํƒœ์–ด๋‚œ ๋‚ ์งœ", "ํƒœ์–ด๋‚œ ๋‚ ", "์ถœ์ƒ์ผ", "์ƒ๋…„์›”์ผ", "์ƒ์ผ", "ใŠ่ช•็”Ÿๆ—ฅ", "็”Ÿๅนดๆœˆๆ—ฅ", "่ช•็”Ÿๆ—ฅ", "nato/a", "data di nascita", "compleanno", "datum roฤ‘enja", "roฤ‘endan", "ื™ื•ื ื”ื•ืœื“ืช", "ืชืืจื™ืš ืœื™ื“ื”", "Geburtsdatum", "Geburtstag", "anniversaire", "nรฉ(e) le", "naissance", "date de naissance", "syntynyt", "syntymรคpรคivรค", "ฮณฮญฮฝฮฝฮทฯƒฮท", "ฮทฮผฮตฯฮฟฮผฮทฮฝฮฏฮฑ ฮณฮญฮฝฮฝฮทฯƒฮทฯ‚", "ฮณฮตฮฝฮญฮธฮปฮนฮฑ", "geboren", "geboortedatum", "verjaardag", "fรธdt", "fรธdselsdato", "fรธdselsdag", "aniversari", "naixenรงa", "data de naixenรงa", "ู…ูˆู„ูˆุฏ", "ุชุงุฑูŠุฎ ุงู„ู…ูŠู„ุงุฏ", "born", "date of birth", "birth year", "birth month", "birth day", "birthday", "birth date", "้ ญ้Šœ", "่ท้Šœ", "ๅทฅไฝœ่ท้Šœ", "ๅทฅไฝœ่ท็จฑ", "่ทๅ‹™ๅ็จฑ", "่ทๅ‹™", "่ทไฝๅ็จฑ", "่ทไฝ", "่ท็จฑๅ็จฑ", "่ท็จฑ", "ๅทฅไฝœ่Œไฝ", "่ŒๅŠก", "่Œไฝ", "ะฟะพัะฐะดะฐ", "meslek", "mesleฤŸi", "iลŸ รผnvanฤฑ", "รผnvanฤฑ", "รผnvan", "เธŠเธทเนˆเธญเธ•เธณเนเธซเธ™เนˆเธ‡", "เธ•เธณเนเธซเธ™เนˆเธ‡", "yrke", "befattning", "titel", "jobbtitel", "trabajo", "puesto de trabajo", "pozรญcia", "pracovnรก pozรญcia", "ะ”ะพะปะถะฝะพัั‚ัŒ", "ั€ะพะดะดะตัั‚ะตะปัŒะฝะพัั‚ะธ", "ะ ะพะด ะดะตัั‚ะตะปัŒะฝะพัั‚ะธ", "ะฒะธะดะดะตัั‚ะตะปัŒะฝะพัั‚ะธ", "ะ’ะธะด ะดะตัั‚ะตะปัŒะฝะพัั‚ะธ", "ะŸั€ะพั„ะตััะธั", "funcศ›ie", "cargoprofissional", "cargo profissional", "cargo", "stanowisko", "์งํ•จ", "์ง์ฑ…", "์ง์œ„", "่ทๆฅญ", "่ท็จฎ", "ๅฝน่ท", "ruolo professionale", "qualifica", "profesija", "posao", "titula", "ืชืคืงื™ื“", "Tรคtigkeit", "Berufsbezeichnung", "Beruf", "poste", "profession", "activitรฉ", "ammattinimike", "ammatti", "ฮตฯฮณฮฑฯƒฮฏฮฑ", "ฮธฮญฯƒฮท ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚", "werk", "functie", "stilling", "feina", "lloc de treball", "cร rrec", "ุงู„ู…ุณู…ู‰ ุงู„ูˆุธูŠููŠ", "company title", "jobtitle", "job title", "้›ป้ƒต", "้›ปๅญ้ƒต็ฎฑ", "้›ปๅญไฟก็ฎฑ", "้›ปๅญ้ƒตไปถไฟก็ฎฑ", "้›ปๅญ้ƒตไปถๅœฐๅ€", "้›ปๅญ้ƒตไปถไฝๅ€", "้›ปๅญ้ƒตไปถ", "็”ตๅญ้‚ฎไปถๅœฐๅ€", "็”ตๅญ้‚ฎไปถ", "ะตะป. ะฐะดั€ะตัะฐ", "ะตะป.ะฐะดั€ะตัะฐ", "ะตะปะตะบั‚ั€ะพะฝะฝะฐะฐะดั€ะตัะฐ", "ะตะปะตะบั‚ั€ะพะฝะฝะฐ ะฐะดั€ะตัะฐ", "ะตะป. ะฟะพัˆั‚ะฐ", "ะตะป.ะฟะพัˆั‚ะฐ", "ะตะปะตะบั‚ั€ะพะฝะฝะฐะฟะพัˆั‚ะฐ", "ะตะปะตะบั‚ั€ะพะฝะฝะฐ ะฟะพัˆั‚ะฐ", "eposta adresi", "e-posta adresi", "e-posta", "eposta", "เธญเธต-เน€เธกเธฅ", "เธ—เธตเนˆเธญเธขเธนเนˆเธญเธตเน€เธกเธฅ", "เธญเธตเน€เธกเธฅเธ—เธตเนˆเธญเธขเธนเนˆ", "เธญเธตเน€เธกเธฅ", "mejladress", "mejl", "emejl", "epostadress", "e-postadress", "correo electrรณnico", "emailAdr", "emailAdresa", "ะะดั€ะตั email", "ะะดั€ะตั e-mail", "ะญะปะตะบั‚ั€ะพะฝะฝั‹ะน ะฐะดั€ะตั", "ะะดั€ะตั ัะปะตะบั‚ั€ะพะฝะฝะพะน ะฟะพั‡ั‚ั‹", "adresฤƒemail", "mail", "epost", "e-mail์ฃผ์†Œ", "e-mail ์ฃผ์†Œ", "email์ฃผ์†Œ", "email ์ฃผ์†Œ", "์ด๋ฉ”์ผ์ฃผ์†Œ", "์ด๋ฉ”์ผ ์ฃผ์†Œ", "์ด๋ฉ”์ผ", "ใƒกใƒซใ‚ขใƒ‰", "ใƒกใ‚ขใƒ‰", "Eใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น", "้›ปๅญใƒกใƒผใƒซ", "Email ใ‚ขใƒ‰ใƒฌใ‚น", "Emailใ‚ขใƒ‰ใƒฌใ‚น", "ใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น", "ใƒกใƒผใƒซ", "ind. posta elettronica", "posta elettronica", "indirizzo di posta elettronica", "indirizzo e-mail", "ind. e-mail", "e-poลกta", "adresa e-poลกte", "e-mail adresa", "ืžื™ื™ืœ", "ื“ื•ืืดืœ", "E-Mail-Adresse", "E-Mail Adresse", "adel", "mรฉl.", "cรฉ", "c. รฉlec.", "adresse Internet", "adrรฉlec", "adresse e-mail", "adresse courriel", "adresse de courrier รฉlectronique", "adresse de courriel", "courrier รฉlectronique", "adresse รฉlectronique", "adresse de messagerie", "messagerie รฉlectronique", "courriel", "sรคhkรถpostiosoite", "s-posti", "sรคhkรถposti", "e-postadresse", "e-postadr", "e-post", "correu electrรฒnic", "ุงู„ุจุฑูŠุฏ ุงู„ุฅู„ูƒุชุฑูˆู†ูŠ", "e-mail", "emailAddress", "emailAddr", "email", "่ฏฆ็ป†ๅœฐๅ€", "ๅœฐๅ€", "่พ“ๅ…ฅ่ก—้“ๅœฐๅ€่กŒ", "่ก—้“ๅœฐๅ€", "่ก—้“", "ะฐะดั€ะตัะฐ1", "ะฐะดั€ะตัะฐ 1", "ั€ัะดะพะบ ะฐะดั€ะตัะธ", "ะฟั€ะพัะฟะตะบั‚", "ะฟั€ะพะฒัƒะปะพะบ", "ะฒัƒะป.", "ะฒัƒะปะธั†ั", "cad.", "cadde adresi", "cadde", "เธ—เธตเนˆเธญเธขเธนเนˆ 1", "เธ—เธตเนˆเธญเธขเธนเนˆเนเธฃเธ", "เธ›เน‰เธญเธ™เธšเธฃเธฃเธ—เธฑเธ”เธ—เธตเนˆเธญเธขเธนเนˆ", "เธŠเธทเนˆเธญเธ–เธ™เธ™", "เธ–เธ™เธ™เธ—เธตเนˆเธญเธขเธนเนˆ", "เธ—เธตเนˆเธญเธขเธนเนˆเธ–เธ™เธ™", "เธ–เธ™เธ™", "adress 1", "adress1", "adr.", "gatuadr.", "vรคg", "gatuadress", "gata", "direcciรณn1", "direcciรณn 1", "calle", "adresa ul.", "adresa ulice", "ะฃะป.", "ะฃะปะธั†ะฐ", "adresฤƒ stradalฤƒ", "adresฤƒ1", "adresฤƒ 1", "strada", "endereรงo da rua", "endereรงo 1", "endereรงo1", "rua", "angiAdresseAdresselinje", "veiadresse", "vei", "gateadresse", "gate", "์ฃผ์†Œ 1", "์ฃผ์†Œ1", "์ƒ์„ธ ์ฃผ์†Œ", "์ƒ์„ธ์ฃผ์†Œ", "็•ชๅœฐ๏ผš", "ไฝๆ‰€ๅ…ฅๅŠ›ๆฌ„", "ไฝๆ‰€๏ผˆ17ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰", "ใใ‚Œไปฅ้™ใฎไฝๆ‰€", "็•ชๅœฐ", "indirizzo 1", "indirizzo1", "linea indirizzo", "indirizzo postale", "via", "adresa 1", "adresa1", "kuฤ‡na adresa", "ulica", "ืจื—ื•ื‘", "Str.", "Strasse", "StraรŸe", "adresse civique", "adresse municipale", "adresse gรฉographique", "adresse postale 1", "1รจre adresse", "adresse postale", "rue", "osoite 1", "k.", "katu", "katuosoite", "ฮดฮนฮตฯฮธฯ…ฮฝฯƒฮท (ฮณฯฮฑฮผฮผฮฎ 1)", "ฮฟฮดฯŒฯ‚", "adres 1", "adres1", "straat", "adresse 1", "adresse1", "angivAdresseAdresselinje", "vejadresse", "vej", "gadeadresse", "gade", "adreรงa1", "adreรงa 1", "carrer", "ุงู„ุนู†ูˆุงู† ูก", "ุฃุฏุฎู„ ุนู†ูˆุงู† ุณุทุฑ ุงู„ุนู†ูˆุงู†", "ุนู†ูˆุงู† ุงู„ุดุงุฑุน", "ุงู„ุดุงุฑุน", "address 1", "address1", "house name", "enterAddressAddressLine", "addrstreet", "streetaddress", "street address", "street", "็ธฃโˆ•ๅธ‚", "็ธฃ๏ผˆๅธ‚๏ผ‰", "็ธฃๅธ‚", "ๅŸŽๅธ‚", "ะผั–ัั‚ะพ", "il", "ลŸehir", "เน€เธกเธทเธญเธ‡", "hemstad", "bostadsort", "ort", "kommun", "stad", "ciudad", "mesto", "ะณ.", "ะะฐัะตะปะตะฝะฝั‹ะน ะฟัƒะฝะบั‚", "ะ“ะพั€ะพะด", "oraศ™", "cidade", "sted", "poststed", "๋„์‹œ", "์‹œ", "้ƒกๅธ‚ๅŒบ(ๅณถใƒปๅ›ฝๅ)", "ๅทžใพใŸใฏ้ƒก/ๅธ‚ๅŒบ็”บๆ‘", "้ƒกๅธ‚ๅŒบ๏ผˆๅณถใƒปๅ›ฝๅ๏ผ‰", "ๅทžใพใŸใฏ้ƒก๏ผๅธ‚ๅŒบ็”บๆ‘", "ๅธ‚ๅŒบ็”บๆ‘๏ผš", "ๅธ‚ๅŒบ็”บๆ‘๏ผˆ11ๆ–‡ๅญ—ไปฅๅ†…๏ผ‰", "ๅธ‚ๅŒบ้ƒก็”บๆ‘", "ๅธ‚ๅŒบ็”บๆ‘", "cittร ", "grad", "ื™ื™ืฉื•ื‘", "ืขื™ืจ", "Stadt", "ville", "postitoimipaikka", "paikkakunta", "kaupunki", "ฯ€ฯŒฮปฮท", "plaats", "ciutat", "ุงู„ู…ุฏูŠู†ุฉ", "city", "็œ", "ๅทž/็œ", "ะพะฑะป.", "ะพะฑะปะฐัั‚ัŒ", "eyalet", "เธฃเธฑเธ", "lรคn", "provins", "provincia", "ลกtรกt", "ะšั€ะฐะน", "ะ ะตะณะธะพะฝ", "ะ ะตัะฟัƒะฑะปะธะบะฐ", "judeศ›", "stat", "regiรฃo", "estado", "๋„", "์ฃผ", "ๅทž", "้ƒฝ้“ๅบœ็œŒ๏ผš", "้ƒฝ้“ๅบœ็œŒ", "stato", "drลพava", "ืžื“ื™ื ื”", "ืžื—ื•ื–", "Bundesstaat", "Bundesland", "province", "rรฉgion", "รฉtat", "osavaltio", "lรครคni", "ฮฝฮฟฮผฯŒฯ‚", "ฯ€ฮฟฮปฮนฯ„ฮตฮฏฮฑ", "staat", "delstat", "provรญncia", "estat", "ุงู„ูˆู„ุงูŠุฉ", "state", "้ƒต้žๅ€่™Ÿ", "้‚ฎ็ผ–", "้‚ฎๆ”ฟ็ผ–็ ", "ะฟะพัˆั‚ะพะฒะธะน ะบะพะด", "ะฟะพัˆั‚ะพะฒะธะน ั–ะฝะดะตะบั", "ั–ะฝะดะตะบั", "zipkod", "zip kod", "zip kodu", "posta kodu", "เธฃเธซเธฑเธชเธชเนˆเธ‡เธˆเธ”เธซเธกเธฒเธข", "เธฃเธซเธฑเธชเธˆเธ”เธซเธกเธฒเธข", "เธฃเธซเธฑเธชเน„เธ›เธฃเธฉเธ“เธตเธขเนŒ", "เน„เธ›เธฃเธฉเธ“เธตเธขเนŒ", "เธฃเธซเธฑเธช", "smerovacie ฤรญslo", "poลกtovรฉ smerovacie ฤรญslo", "PSฤŒ", "ะ˜ะฝะดะตะบั", "ะŸะพั‡ั‚ะพะฒั‹ะน ะธะฝะดะตะบั", "codpoศ™tal", "cod poศ™tal", "cรณdigopostal", "cp", "cรณdigo postal", "postnummer", "์‚ฌ์„œํ•จ", "์šฐํŽธ", "์šฐํŽธ๋ฒˆํ˜ธ", "์šฐํŽธ ๋ฒˆํ˜ธ", "ใ€’", "้ƒตไพฟ็•ชๅท๏ผš", "้ƒตไพฟ็•ชๅท", "codice postale", "codice avviamento postale", "codice di avviamento postale", "CAP", "poลกtanski br.", "poลกtanski broj", "ืžื™ืงื•ื“", "Postleitzahl", "PLZ", "code postal amรฉricain", "code ZIP", "NPA", "numรฉro postal d'acheminement", "numรฉro postal", "code postal", "postinro", "postinumero", "ฮค.ฮš.", "ฯ„ฮฑฯ‡ฯ…ฮดฯฮฟฮผฮนฮบฯŒฯ‚ ฮบฯ‰ฮดฮนฮบฯŒฯ‚", "postnr.", "codi postal", "ุงู„ุฑู…ุฒ ุงู„ุจุฑูŠุฏูŠ", "post code", "postcode", "postal code", "postalcode", "postal", "zip code", "zipcode", "zip", "ๅœ‹ๅฎถๆˆ–ๅœฐๅ€", "ๅœ‹ๅฎถโˆ•ๅœฐๅ€", "ๅœ‹ๅฎถ", "ๅœฐๅŒบ", "ๅ›ฝๅฎถ", "ๅ›ฝๅฎถ/ๅœฐๅŒบ", "ะบั€ะฐั—ะฝะฐ", "รผlke", "เธ›เธฃเธฐเน€เธ—เธจ", "krajina", "ะกั‚ั€ะฐะฝะฐ", "ศ›arฤƒ", "๋‚˜๋ผ", "๊ตญ๊ฐ€", "ๅ›ฝ๏ผๅœฐๅŸŸๅ๏ผš", "ๅ›ฝ๏ผๅœฐๅŸŸๅ", "ๅ›ฝ/ๅœฐๅŸŸๅ๏ผš", "ๅ›ฝ/ๅœฐๅŸŸๅ", "ๅ›ฝใ€ๅœฐๅŸŸ", "ๅ›ฝ", "paese", "zemlja", "pays", "maa", "ฯ‡ฯŽฯฮฑ", "land", "paรญs", "ุงู„ุจู„ุฏ", "country", "ๆ™šไธŠ้›ป่ฉฑ", "ๆ™š้–“้›ป่ฉฑ", "ๅคœ้–“้›ป่ฉฑ", "ไฝๅฎ…้›ป่ฉฑ", "ๅฎถ่ฃก้›ป่ฉฑ", "ๅฎถ็”จ้›ป่ฉฑ", "ไฝๅฎถ้›ป่ฉฑ", "ๅคœๆ™š็”ต่ฏๅŒบๅท", "ๅฎถๅบญ็”ต่ฏๅŒบๅท", "ๅคœ้—ด็”ต่ฏ", "ๅฎถๅบญ็”ต่ฏ", "ะบะพะด ะฒะตั‡ั–ั€ะฝัŒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ะดะพะผ.", "ะบะพะดะดะพะผ.ั‚ะตะป.", "ะบะพะด ะดะพะผ. ั‚ะตะป.", "ะบะพะด ะดะพะผ.ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ะดะพะผ. ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ะดะพะผะฐัˆะฝัŒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", "ะฒะตั‡ั–ั€ะฝั–ะน ั‚ะตะปะตั„ะพะฝ", "ะดะพะผ.", "ะดะพะผ.ั‚ะตะป.", "ะดะพะผ. ั‚ะตะป.", "ะดะพะผ.ั‚ะตะปะตั„ะพะฝ", "ะดะพะผ. ั‚ะตะปะตั„ะพะฝ", "ะดะพะผะฐัˆะฝั–ะน ั‚ะตะปะตั„ะพะฝ", "akลŸam alan kodu", "ev alan kodu", "akลŸam telefonu", "telefon (ev)", "ev telefonu", "เธฃเธซเธฑเธชเน€เธšเธญเธฃเนŒเธšเน‰เธฒเธ™", "เธฃเธซเธฑเธชเน€เธšเธญเธฃเนŒเธชเนˆเธงเธ™เธ•เธฑเธง", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธชเนˆเธงเธ™เธ•เธฑเธง", "เธฃเธซเธฑเธชเธšเน‰เธฒเธ™", "เธšเน‰เธฒเธ™เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธšเน‰เธฒเธ™", "เน€เธšเธญเธฃเนŒเธชเนˆเธงเธ™เธ•เธฑเธง", "เน€เธšเธญเธฃเนŒเธ•เธดเธ”เธ•เนˆเธญ", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธšเน‰เธฒเธ™", "เน€เธšเธญเธฃเนŒเธšเน‰เธฒเธ™", "riktnummer kvรคllstid", "riktnummer hem", "telefon kvรคllstid", "kvรคllsnummer", "telefon hem", "hemtelefon", "telรฉfono noche", "telรฉfono casa", "telรฉfono de casa", "domรกca predvoฤพba", "telefรณnna predvoฤพba domov", "predvoฤพba domov", "veฤernรฝ telefรณn", "ฤรญslo domov", "telefรณn domov", "domรกci telefรณn", "ะšะพะด ะดะพะผะฐัˆะฝะตะณะพ ั‚ะตะปะตั„ะพะฝะฝะพะณะพ ะฝะพะผะตั€ะฐ", "ะ”ะพะผะฐัˆะฝะธะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€", "ะ”ะพะผะฐัˆะฝะธะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ", "ะ”ะพะผะฐัˆะฝะธะน ะฝะพะผะตั€", "ะ’ะตั‡ะตั€ะพะผ", "ะ’ ะฒะตั‡ะตั€ะฝะธะต ั‡ะฐัั‹", "ะ”ะพะผะฐัˆะฝะธะน", "ะดะพะผะฐัˆะฝะธะน ั‚ะตะปะตั„ะพะฝ", "prefix telefon searฤƒ", "prefix telefon domiciliu", "prefix telefon acasฤƒ", "telefon searฤƒ", "telefon domiciliu", "telefon acasฤƒ", "cรณdigodeรกreanoite", "cรณdigodeรกrea noite", "cรณdigo de รกrea noite", "cรณdigodeรกreadecasa", "cรณdigodeรกrea de casa", "cรณdigo de รกrea de casa", "telefone ร  noite", "telefonenoite", "telefone de casa", "telefonedecasa", "cรณdigo de รกrea (noturno)", "cรณdigo de รกrea (local)", "telefone (noturno)", "telefone (casa)", "kveldsretningsnummer", "retningsnummer, kveldstid", "retningsnummer, kveld", "retningsnummer, hjem", "telefon, kveldstid", "kveldstelefon", "telefon, hjem", "hjemmetelefon", "์ €๋…์—ฐ๋ฝ์ฒ˜์ง€์—ญ๋ฒˆํ˜ธ", "์ €๋…์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ", "์ €๋…์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ", "์ €๋… ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ", "์ €๋… ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ", "์ง‘์ง€์—ญ๋ฒˆํ˜ธ", "์ง‘ ์ง€์—ญ๋ฒˆํ˜ธ", "์ง‘ ์ง€์—ญ ๋ฒˆํ˜ธ", "์ €๋… ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜", "์ €๋…์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜", "์ €๋…์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜", "์ €๋… ์—ฐ๋ฝ์ฒ˜", "์ €๋…์—ฐ๋ฝ์ฒ˜", "์ง‘ ์ „ํ™”", "์ง‘์ „ํ™”", "่‡ชๅฎ…้›ป่ฉฑ๏ผš", "่‡ชๅฎ…้›ป่ฉฑ", "้›ป่ฉฑ๏ผˆๅ€‹ไบบ๏ผ‰", "้›ป่ฉฑ๏ผˆๅคœ้–“๏ผ‰", "้›ป่ฉฑ๏ผˆ่‡ชๅฎ…๏ผ‰", "้›ป่ฉฑ(ๅ€‹ไบบ)", "้›ป่ฉฑ(ๅคœ้–“)", "้›ป่ฉฑ(่‡ชๅฎ…)", "้›ป่ฉฑ็•ชๅท๏ผˆๅ€‹ไบบ๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆๅคœ้–“๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆ่‡ชๅฎ…๏ผ‰", "้›ป่ฉฑ็•ชๅท(ๅ€‹ไบบ)", "้›ป่ฉฑ็•ชๅท(ๅคœ้–“)", "้›ป่ฉฑ็•ชๅท(่‡ชๅฎ…)", "ๅ€‹ไบบ้›ป่ฉฑ็•ชๅท", "ๅคœ้–“้›ป่ฉฑ็•ชๅท", "่‡ชๅฎ…้›ป่ฉฑ็•ชๅท", "่‡ชๅฎ…", "prefisso telefono abitazione", "prefisso telefono di casa", "prefisso ore serali", "prefisso tel. privato", "prefisso telefono casa", "telefono ore serali", "telefono abitazione", "telefono privato", "numero di telefono casa", "telefono casa", "veฤernji telefon", "kuฤ‡ni telefon", "ื‘ื™ืช", "ื˜ืœืคื•ืŸ ื‘ื™ืช", "Rufnummer abends", "Rufnummer (privat)", "Rufnummer privat", "Telefon abends", "Telefon (privat)", "Telefon privat", "numรฉro de tรฉlรฉphone domicile", "tรฉlรฉphone (soirรฉe)", "tรฉlรฉphone de domicile", "tรฉlรฉphone de rรฉsidence", "tรฉlรฉphone (le soir)", "tรฉlรฉphone domicile", "tรฉlรฉphone maison", "tรฉlรฉphone privรฉ", "tรฉlรฉphone rรฉsidentiel", "suuntanumero iltaisin", "suuntanumero koti", "kodin suuntanumero", "iltaisin", "kotipuh.", "kotinro", "koti", "kotinumero", "kotipuhelin", "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮตฮบฯ„ฯŒฯ‚ ฯ‰ฯฯŽฮฝ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚", "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮฟฮนฮบฮฏฮฑฯ‚", "netnummer 's avonds", "netnummer thuis", "netnummer privรฉ", "telefoonnnummer thuis", "telefoon 's avonds", "telefoonnummer privรฉ", "telefoon privรฉ", "telefoon thuis", "omrรฅdenummer, aften", "omrรฅdenummer, privat", "telefon, aften", "privat", "hjemnummer", "telรจfono nit", "telรจfono casa", "telรจfon de casa", "ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ ู„ู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก", "ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ ุงู„ุณูƒู†ูŠุฉ", "ุงู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก ", "ุงู„ู‡ุงุชู ููŠ ุงู„ู…ุณุงุก", "ู‡ุงุชู ุงู„ู…ู†ุฒู„", "eveningareacode", "evening areacode", "evening area code", "homeareacode", "home areacode", "home area code", "evening phone", "eveningphone", "home phone", "homephone", "็™ฝๅคฉ้›ป่ฉฑ", "ๆ—ฅ้–“้›ป่ฉฑ", "ๅ…ฌๅ‹™้›ป่ฉฑ", "่พฆๅ…ฌๅฎค้›ป่ฉฑ", "ๅทฅไฝœ้›ป่ฉฑ", "ๅ•†็”จ้›ป่ฉฑ", "ๅ…ฌๅธ้›ป่ฉฑ", "ๅ…ฌๅธ็”ต่ฏๅŒบๅท", "็™ฝๅคฉ็”ต่ฏๅŒบๅท", "ๅทฅไฝœ็”ต่ฏๅŒบๅท", "ๅ…ฌๅธ็”ต่ฏ", "็™ฝๅคฉ็”ต่ฏ", "ๅทฅไฝœ็”ต่ฏ", "ะบะพะด ะดะตะฝะฝะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ั€ะพะฑ.", "ะบะพะดั€ะพะฑ.ั‚ะตะป.", "ะบะพะด ั€ะพะฑ. ั‚ะตะป.", "ะบะพะด ั€ะพะฑ.ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ั€ะพะฑ. ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ั€ะพะฑะพั‡ะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", "ะดะตะฝะฝะธะน ั‚ะตะปะตั„ะพะฝ", "ั€ะพะฑ.", "ั€ะพะฑ.ั‚ะตะป.", "ั€ะพะฑ. ั‚ะตะป.", "ั€ะพะฑ.ั‚ะตะปะตั„ะพะฝ", "ั€ะพะฑ. ั‚ะตะปะตั„ะพะฝ", "ั€ะพะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝ", "iลŸ alan kodu", "gรผndรผz alan kodu", "gรผndรผz telefonu", "telefon (iลŸ)", "ลŸirket telefonu", "iลŸ telefonu", "เธ˜เธธเธฃเธเธดเธˆเธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ", "เธฃเธซเธฑเธชเธ˜เธธเธฃเธเธดเธˆ", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ˜เธธเธฃเธเธดเธˆ", "เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธชเธšเธฃเธดเธฉเธฑเธ—", "เธฃเธซเธฑเธชเธšเธฃเธดเธฉเธฑเธ—", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธšเธฃเธดเธฉเธฑเธ—", "เธ—เธตเนˆเธตเธฃเธซเธฑเธชเธ—เธณเธ‡เธฒเธ™", "เธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™เธฃเธซเธฑเธช", "เธฃเธซเธฑเธชเธ—เธณเธ‡เธฒเธ™", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ‡เธฒเธ™", "เธฃเธซเธฑเธชเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ˜เธธเธฃเธเธดเธˆ", "เน€เธšเธญเธฃเนŒเธ˜เธธเธฃเธเธดเธˆ", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธšเธฃเธดเธฉเธฑเธ—", "เน€เธšเธญเธฃเนŒเธšเธฃเธดเธฉเธฑเธ—", "เน€เธšเธญเธฃเนŒเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ•เธดเธ”เธ•เนˆเธญเธ‡เธฒเธ™", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ‡เธฒเธ™", "เน€เธšเธญเธฃเนŒเธ‡เธฒเธ™", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธ—เธตเนˆเธ—เธณเธ‡เธฒเธ™", "เน€เธšเธญเธฃเนŒเธ—เธณเธ‡เธฒเธ™", "riktnummer kontoret", "riktnummer fรถretaget", "riktnummer dagtid", "riktnummer arbetet", "telefon fรถretaget", "fรถretagstelefon", "telefon dagtid", "dagstelefon", "telefon kontoret", "kontorstelefon", "telefon arbetet", "arbetstelefon", "telรฉfono del trabajo", "telรฉfono trabajo", "telรฉfono dรญa", "predvoฤพba spoloฤnosti", "predvoฤพba firmy", "dennรก predvoฤพba", "pracovnรก predvoฤพba", "predvoฤพba do prรกce", "firemnรฉ ฤรญslo", "firemnรฝ telefรณn", "dennรฉ ฤรญslo", "dennรฝ telefรณn", "ฤรญslo do prรกce", "telefรณn do prรกce", "pracovnรฝ telefรณn", "ะšะพะด ั€ะฐะฑะพั‡ะตะณะพ ั‚ะตะปะตั„ะพะฝะฝะพะณะพ ะฝะพะผะตั€ะฐ", "ะ ะฐะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€", "ะ ะฐะฑะพั‡ะธะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ", "ะ”ะฝะตะผ", "ะ’ ะดะฝะตะฒะฝั‹ะต ั‡ะฐัั‹", "ะกะปัƒะถะตะฑะฝั‹ะน", "ะกะปัƒะถะตะฑะฝั‹ะน ั‚ะตะปะตั„ะพะฝ", "ะ ะฐะฑ. ั‚ะตะปะตั„ะพะฝ", "ะ ะฐะฑ.", "ะ ะฐะฑะพั‡ะธะน", "ั€ะฐะฑะพั‡ะธะน ั‚ะตะปะตั„ะพะฝ", "prefix telefon zi", "prefix telefon companie", "prefix telefon lucru", "prefix telefon birou", "prefix telefon serviciu", "telefon zi", "telefon companie", "telefon lucru", "telefon birou", "telefon serviciu", "cรณdigodeรกreacomercial", "cรณdigodeรกrea comercial", "cรณdigo de รกrea comercial", "cรณdigodeรกreadaempresa", "cรณdigodeรกrea da empresa", "cรณdigo de รกrea da empresa", "cรณdigodeรกreadedia", "cรณdigodeรกrea de dia", "cรณdigo de รกrea de dia", "cรณdigodeรกreadotrabalho", "cรณdigodeรกrea do trabalho", "cรณdigo de รกrea do trabalho", "telefone comercial", "telefonecomercial", "telefone da empresa", "telefoneempresa", "telefone durante o dia", "telefone de dia", "telefonedia", "telefone do trabalho", "telefonetrabalho", "cรณdigo de รกrea (empresa)", "cรณdigo de รกrea (diurno)", "cรณdigo de รกrea (trabalho)", "telefone (empresa)", "telefone (diurno)", "telefone (trabalho)", "retningsnummer, selskap", "retningsnummer, bedrift", "firmaretningsnummer", "retningsnummer, firma", "dagretningsnummer", "retningsnummer, dag", "retningsnummer, dagtid", "jobbretningsnummer", "retningsnummer, arbeid", "retningsnummer, jobb", "arbeidstelefon", "jobbtelefon", "telefon, jobb", "telefon, arbeid", "์—…๋ฌด์šฉ์ง€์—ญ๋ฒˆํ˜ธ", "์—…๋ฌด์šฉ ์ง€์—ญ๋ฒˆํ˜ธ", "์—…๋ฌด์šฉ ์ง€์—ญ ๋ฒˆํ˜ธ", "ํšŒ์‚ฌ์ง€์—ญ๋ฒˆํ˜ธ", "ํšŒ์‚ฌ ์ง€์—ญ๋ฒˆํ˜ธ", "ํšŒ์‚ฌ ์ง€์—ญ ๋ฒˆํ˜ธ", "๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜์ง€์—ญ๋ฒˆํ˜ธ", "๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ๋ฒˆํ˜ธ", "๋‚ฎ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜ ์ง€์—ญ ๋ฒˆํ˜ธ", "์ง์žฅ์ง€์—ญ๋ฒˆํ˜ธ", "์ง•์žฅ ์ง€์—ญ๋ฒˆํ˜ธ", "์ง์žฅ ์ง€์—ญ ๋ฒˆํ˜ธ", "์—…๋ฌด์šฉ ์ „ํ™”", "์—…๋ฌด์šฉ์ „ํ™”", "ํšŒ์‚ฌ ์ „ํ™”", "ํšŒ์‚ฌ์ „ํ™”", "๋‚ฎ์‹œ๊ฐ„ ์—ฐ๋ฝ์ฒ˜", "๋‚ฎ์‹œ๊ฐ„์—ฐ๋ฝ์ฒ˜", "์ง์žฅ ์ „ํ™”", "์ง์žฅ์ „ํ™”", "ไผš็คพ้›ป่ฉฑ๏ผš", "ไผš็คพ้›ป่ฉฑ", "้›ป่ฉฑ(ๆ˜ผ้–“)", "้›ป่ฉฑ(ๆ—ฅไธญ)", "้›ป่ฉฑ(่ทๅ ด)", "้›ป่ฉฑ(ๅ‹คๅ‹™ๅ…ˆ)", "้›ป่ฉฑ(ไผš็คพ)", "้›ป่ฉฑ๏ผˆๆ˜ผ้–“๏ผ‰", "้›ป่ฉฑ๏ผˆๆ—ฅไธญ๏ผ‰", "้›ป่ฉฑ๏ผˆ่ทๅ ด๏ผ‰", "้›ป่ฉฑ๏ผˆๅ‹คๅ‹™ๅ…ˆ๏ผ‰", "้›ป่ฉฑ๏ผˆไผš็คพ๏ผ‰", "้›ป่ฉฑ็•ชๅท(ๆ˜ผ้–“)", "้›ป่ฉฑ็•ชๅท(ๆ—ฅไธญ)", "้›ป่ฉฑ็•ชๅท(่ทๅ ด)", "้›ป่ฉฑ็•ชๅท(ๅ‹คๅ‹™ๅ…ˆ)", "้›ป่ฉฑ็•ชๅท(ไผš็คพ)", "้›ป่ฉฑ็•ชๅท๏ผˆๆ˜ผ้–“๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆๆ—ฅไธญ๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆ่ทๅ ด๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆๅ‹คๅ‹™ๅ…ˆ๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆไผš็คพ๏ผ‰", "ๆ˜ผ้–“้›ป่ฉฑ็•ชๅท", "ๆ—ฅไธญ้›ป่ฉฑ็•ชๅท", "่ทๅ ด้›ป่ฉฑ็•ชๅท", "ไผš็คพ้›ป่ฉฑ็•ชๅท", "ๅ‹คๅ‹™ๅ…ˆ้›ป่ฉฑ็•ชๅท", "prefisso numero lavoro", "prefisso telefono azienda", "prefisso telefono ufficio", "prefisso ufficio", "prefisso telefono lavoro", "prefisso lavoro", "numero di tel. ufficio", "telefono azienda", "telefono ore ufficio", "numero di telefono lavoro", "tel. ufficio", "telefono ufficio", "tel. lavoro", "telefono lavoro", "telefon tvrtke", "sluลพbeni telefon", "dnevni telefon", "poslovni telefon", "ืžืฉืจื“", "ืขื‘ื•ื“ื”", "ื˜ืœืคื•ืŸ ื‘ืขื‘ื•ื“ื”", "Rufnummer dienstlich", "Rufnummer tagsรผber", "Rufnummer (geschรคftlich)", "Rufnummer geschรคftlich", "Telefon dienstlich", "Telefon tagsรผber", "Telefon (geschรคftlich)", "Telefon geschรคftlich", "tรฉlรฉphone (sociรฉtรฉ)", "tรฉlรฉphone (entreprise)", "tรฉlรฉphone (jour)", "tรฉlรฉphone (journรฉe)", "tรฉlรฉphone de travail", "tรฉlรฉphone bureau", "tรฉlรฉphone professionnel", "suuntanumero yritys", "suuntanumero tyรถ", "tyรถnumeron suuntanumero", "tyรถpuhelimen suuntanumero", "yritysnumero", "yrityksen numero", "pรคivisin", "puhelin pรคivรคsaikaan", "tyรถnumero", "tyรถpuhelin", "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮบฮฑฯ„ฮฌ ฯ„ฮนฯ‚ ฯ€ฯฯ‰ฯŠฮฝฮญฯ‚ ฯŽฯฮตฯ‚", "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮบฮฑฯ„ฮฌ ฯ„ฮนฯ‚ ฯŽฯฮตฯ‚ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚", "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ ฮตฯฮณฮฑฯƒฮฏฮฑฯ‚", "netnummer zakelijk", "netnummer bedrijf", "netnummer overdag", "netnummer werk", "telefoonnummer zakelijk", "telefoon zakelijk", "telefoonnummer bedrijf", "telefoon bedrijf", "telefoonnummer overdag", "telefoon overdag", "telefoonnummer werk", "telefoon werk", "omrรฅdenummer, selskab", "omrรฅdenummer, firma", "omrรฅdenummer, dag", "omrรฅdenummer om dagen", "omrรฅdenummer, arbejde", "arbejdstelefon", "telefon, firma", "firmatelfon", "telefon, dagtid", "telefon, dag", "dagtelefon", "telefon, arbejde", "arbejdsnummer", "telรจfon de la feina", "telรจfon feina", "telรจfon dia", "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ุนู…ู„", "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ุดุฑูƒุฉ", "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ููŠ ุงู„ุตุจุงุญ", "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ู‡ุงุชู ุงู„ุนู…ู„", "ู‡ุงุชู ุงู„ุดุฑูƒุฉ", "ุงู„ู‡ุงุชู ููŠ ุงู„ุตุจุงุญ", "ู‡ุงุชู ุงู„ุนู…ู„", "businessareacode", "business areacode", "business area code", "companyareacode", "company areacode", "company area code", "dayareacode", "day areacode", "day area code", "workareacode", "work areacode", "work area code", "business phone", "businessphone", "company phone", "companyphone", "daytime telephone", "daytime phone", "day phone", "dayphone", "work phone", "workphone", "ๆ‰‹ๆŒ้›ป่ฉฑ", "ๆ‰‹ๆ้›ป่ฉฑ", "ๆ‰‹ๆฉŸ้›ป่ฉฑ", "ๆ‰‹ๆฉŸ", "ๅคงๅ“ฅๅคง้›ป่ฉฑ", "ๅคงๅ“ฅๅคง", "่กŒๅ‹•้›ป่ฉฑ", "่กŒๅ‹•", "ๆ‰‹ๆœบๅŒบๅท", "็งปๅŠจ็”ต่ฏๅŒบๅท", "ๆ‰‹ๆœบ", "็งปๅŠจ็”ต่ฏ", "ะบะพะด ัะพั‚ะพะฒะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ะผะพะฑ.", "ะบะพะดะผะพะฑ.ั‚ะตะป.", "ะบะพะด ะผะพะฑ. ั‚ะตะป.", "ะบะพะด ะผะพะฑ.ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ะผะพะฑ. ั‚ะตะปะตั„ะพะฝัƒ", "ะบะพะด ะผะพะฑั–ะปัŒะฝะพะณะพ ั‚ะตะปะตั„ะพะฝัƒ", "ัะพั‚ะพะฒะธะน ั‚ะตะปะตั„ะพะฝ", "ะผะพะฑ.", "ะผะพะฑ.ั‚ะตะป.", "ะผะพะฑ. ั‚ะตะป.", "ะผะพะฑ.ั‚ะตะปะตั„ะพะฝ", "ะผะพะฑ. ั‚ะตะปะตั„ะพะฝ", "ะผะพะฑั–ะปัŒะฝะธะน ั‚ะตะปะตั„ะพะฝ", "cep numarasฤฑ", "cep", "mobil telefon", "telefon (cep)", "cep telefonu", "เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ", "เธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธกเธทเธญเธ–เธทเธญ", "เธฃเธซเธฑเธชเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธชเนˆเธงเธ™เธ•เธฑเธง", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒเธกเธทเธญเธ–เธทเธญ", "เธกเธทเธญเธ–เธทเธญ", "riktnummer mobiltelefon", "riktnummer mobil", "mobiltel", "mรณvil", "telรฉfono mรณvil", "mobilnรก predvoฤพba", "predvoฤพba mobilnรฉho telefรณnu", "mobilnรฝ telefรณn", "ะœะพะฑะธะปัŒะฝั‹ะน ั‚ะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€", "ะœะพะฑะธะปัŒะฝั‹ะน ะฝะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ", "ะะพะผะตั€ ะพะฟะตั€ะฐั‚ะพั€ะฐ ัะพั‚ะพะฒะพะน ัะฒัะทะธ", "ะะพะผะตั€ ะพะฟะตั€ะฐั‚ะพั€ะฐ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ", "ะšะพะด ะพะฟะตั€ะฐั‚ะพั€ะฐ ัะพั‚ะพะฒะพะน ัะฒัะทะธ", "ะšะพะด ะพะฟะตั€ะฐั‚ะพั€ะฐ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ", "ะขะตะปะตั„ะพะฝ ัะพั‚ะพะฒะพะน ัะฒัะทะธ", "ะขะตะปะตั„ะพะฝ ะผะพะฑะธะปัŒะฝะพะน ัะฒัะทะธ", "ะกะพั‚ะพะฒั‹ะน", "ะกะพั‚ะพะฒั‹ะน ั‚ะตะปะตั„ะพะฝ", "ะœะพะฑะธะปัŒะฝั‹ะน", "ะผะพะฑะธะปัŒะฝั‹ะน ั‚ะตะปะตั„ะพะฝ", "prefix mobil", "celular", "telefon celular", "telefon mobil", "cรณdigodeรกreadocelular", "cรณdigodeรกrea do celular", "cรณdigo de รกrea do celular", "cรณdigodeรกreadotelemรณvel", "cรณdigodeรกrea do telemรณvel", "cรณdigo de รกrea do telemรณvel", "telefone celular", "telefonecelular", "telemรณvel", "cรณdigo de รกrea (celular)", "telefone (celular)", "mobilretningsnummer", "retningsnummer, mobil", "retningsnummer, mobiltelefon", "mobil", "ํœด๋Œ€ํฐ์ง€์—ญ๋ฒˆํ˜ธ", "ํœด๋Œ€ํฐ ์ง€์—ญ๋ฒˆํ˜ธ", "ํœด๋Œ€ํฐ ์ง€์—ญ ๋ฒˆํ˜ธ", "ํœด๋Œ€์ „ํ™”์ง€์—ญ๋ฒˆํ˜ธ", "ํœด๋Œ€ ์ „ํ™” ์ง€์—ญ ๋ฒˆํ˜ธ", "ํœด๋Œ€ ์ „ํ™” ์ง€์—ญ๋ฒˆํ˜ธ", "ํœด๋Œ€์ „ํ™” ์ง€์—ญ ๋ฒˆํ˜ธ", "ํœด๋Œ€์ „ํ™” ์ง€์—ญ๋ฒˆํ˜ธ", "ํœด๋Œ€ํฐ", "ํœด๋Œ€ ์ „ํ™”", "ํœด๋Œ€์ „ํ™”", "ใ‚ฑใƒผใ‚ฟใ‚ค็•ชๅท", "ใ‚ฑใƒผใ‚ฟใ‚ค้›ป่ฉฑ็•ชๅท", "ใ‚ฑใƒผใ‚ฟใ‚ค้›ป่ฉฑ", "ใ‚ฑใƒผใ‚ฟใ‚ค", "ๆบๅธฏ็•ชๅท", "้›ป่ฉฑ็•ชๅท(ๆบๅธฏ)", "้›ป่ฉฑ็•ชๅท๏ผˆๆบๅธฏ๏ผ‰", "ๆบๅธฏ้›ป่ฉฑ็•ชๅท", "ๆบๅธฏ้›ป่ฉฑ", "ๆบๅธฏ", "prefisso cell.", "telefono cell.", "prefisso telefono cellulare", "prefisso cellulare", "cellulare", "telefono cellulare", "mobitel", "mobilni telefon", "ืกืœื•ืœืจื™", "ื ื™ื™ื“", "Vorwahl (Netzbetreiber)", "Vorwahl Netzbetreiber", "Netzbetreiber-Vorwahl", "Vorwahl (Mobilfunk)", "Vorwahl Mobilfunk", "Mobilfunk-Vorwahl", "Mobiltelefon-Vorwahl", "Vorwahl (Mobil)", "Vorwahl (Mobiltelefon)", "Vorwahl Mobil", "Vorwahl Mobiltelefon", "Handy", "numรฉro de mobile", "tรฉlรฉphone cellulaire portable", "tรฉlรฉphone cellulaire portatif", "cell.", "tรฉl. cell.", "cellulaire", "tรฉlรฉphone mobile", "tรฉlรฉphone cellulaire", "tรฉlรฉphone portable", "operaattoritunnus", "matkapuhelimen operaattoritunnus", "mobiili", "matkap.", "matkapuhelin", "ฮบฮนฮฝฮทฯ„ฯŒ", "ฮบฮนฮฝฮทฯ„ฯŒ ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ", "netnummer GSM", "netnummer mobiele telefoon", "netnummer mobiel", "GSM", "mobiele telefoon", "mobiel", "omrรฅdenummer, mobil", "telefon, mobil", "mobiltelefon", "mรฒbil", "telรจfon mรฒbil", "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ุงู„ุฎู„ูˆูŠ", "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุงู„ู‡ุงุชู ุงู„ู…ุญู…ูˆู„", "ุงู„ู‡ุงุชู ุงู„ุฎู„ูˆูŠ", "ุงู„ู‡ุงุชู ุงู„ู…ุญู…ูˆู„", "cellareacode", "cell areacode", "cell area code", "mobileareacode", "mobile areacode", "mobile area code", "cell phone", "cellphone", "mobile phone", "mobilephone", "ๅ‘ผๅซๅ™จ่™Ÿ็ขผ", "ๅ‚ณๅ‘ผๆฉŸ่™Ÿ็ขผ", "ๅ‘ผๅซๅ™จ", "ๅ‚ณๅ‘ผๆฉŸ", "ไผ ๅ‘ผๆœบๅŒบๅท", "ไผ ๅ‘ผๆœบ", "ะบะพะดะฟะตะนะดะถะตั€ะฐ", "ะบะพะด ะฟะตะนะดะถะตั€ะฐ", "ะฟะตะนะดะถะตั€", "รงaฤŸrฤฑ cihazฤฑ numarasฤฑ", "รงaฤŸrฤฑ cihazฤฑ", "เธฃเธซเธฑเธชเน€เธžเธˆเน€เธˆเธญเธฃเนŒ", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเน€เธžเธˆเน€เธˆเธญเธฃเนŒ", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆเธงเธดเธ—เธขเธธเธ•เธดเธ”เธ•เธฒเธกเธ•เธฑเธง", "เธงเธดเธ—เธขเธธเธ•เธดเธ”เธ•เธฒเธกเธ•เธฑเธง", "riktnummer personsรถk", "riktnummer personsรถkare", "personsรถk", "personsรถkare", "buscapersonas", "busca", "predvoฤพba pagera", "ะะพะผะตั€ ะฟะตะนะดะถะตั€ะฐ", "prefix pager", "numฤƒr pager", "telefon pager", "cรณdigodeรกreadopager", "cรณdigodeรกrea do pager", "cรณdigo de รกrea do pager", "telefone pager", "telefonepager", "cรณdigo de รกrea (pager)", "telefone (pager)", "retningsnr., personsรธker", "retningsnummer, personsรธker", "personsรธkernr.", "personsรธkernummer", "ํ˜ธ์ถœ๊ธฐ์ง€์—ญ๋ฒˆํ˜ธ", "ํ˜ธ์ถœ๊ธฐ ์ง€์—ญ๋ฒˆํ˜ธ", "ํ˜ธ์ถœ๊ธฐ ์ง€์—ญ ๋ฒˆํ˜ธ", "ํ˜ธ์ถœ ๋ฒˆํ˜ธ", "ํ˜ธ์ถœ๊ธฐ ๋ฒˆํ˜ธ", "ํ˜ธ์ถœ๊ธฐ", "ใƒใ‚ฑใƒ™ใƒซ้›ป่ฉฑ็•ชๅท", "ใƒใ‚ฑใƒ™ใƒซ็•ชๅท", "ใƒใ‚ฑใƒ™ใƒซ", "้›ป่ฉฑ(ใƒใ‚ฑใƒ™ใƒซ)", "้›ป่ฉฑ(ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ)", "้›ป่ฉฑ๏ผˆใƒใ‚ฑใƒ™ใƒซ๏ผ‰", "้›ป่ฉฑ๏ผˆใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ๏ผ‰", "้›ป่ฉฑ็•ชๅท(ใƒใ‚ฑใƒ™ใƒซ)", "้›ป่ฉฑ็•ชๅท(ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ)", "้›ป่ฉฑ็•ชๅท๏ผˆใƒใ‚ฑใƒ™ใƒซ๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ๏ผ‰", "ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ้›ป่ฉฑ็•ชๅท", "ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ็•ชๅท", "ใƒใ‚ฑใƒƒใƒˆใƒ™ใƒซ", "pref. cercapersone", "prefisso cercapers.", "prefisso cercapersone", "cercapers.", "cercapersone", "dojavnik", "pager", "ื–ื™ืžื•ื ื™ืช", "Pager-Vorwahl", "Vorwahl (Pager)", "Vorwahl Pager", "numรฉro de tรฉlรฉavertisseur", "NDT", "bipeur", "pageur", "bellboy", "pagette", "tรฉlรฉav.", "sรฉmaphone", "messageur", "radiomessageur", "rรฉcepteur de radiomessagerie", "tรฉlรฉavertisseur", "hakulaitenro", "hakulaitteen numero", "hakulaite", "ฮฒฮฟฮผฮฒฮทฯ„ฮฎฯ‚", "netnummer semafoon", "semafoon", "omrรฅdenummer til personsรธger", "omrรฅdenummer, personsรธger", "personsรธger nr.", "personsรธger", "cercapersones", "ูƒูˆุฏ ู…ู†ุทู‚ุฉ ุฌู‡ุงุฒ ุงู„ู†ุฏุงุก", "ู‡ุงุชู ู†ุฏุงุก", "pagerareacode", "pager areacode", "pager area code", "pager phone", "pagerphone", "ๅ€็ขผ", "ๅ€ๅŸŸ็ขผ", "ๅ€ๅŸŸ่™Ÿ็ขผ", "ๅŒบๅท", "ะบะพะดั€ะตะณั–ะพะฝัƒ", "ะบะพะดะพะฑะปะฐัั‚ั–", "ะบะพะด ั€ะตะณั–ะพะฝัƒ", "ะบะพะด ะพะฑะปะฐัั‚ั–", "alan kodu", "เธžเธทเน‰เธ™เธ—เธตเนˆเธฃเธซเธฑเธช", "เธฃเธซเธฑเธชเธžเธทเน‰เธ™เธ—เธตเนˆ", "riktnr", "riktnummer", "prefijo", "telefรณnna predvoฤพba", "predvoฤพba", "ะšะพะด ะฝะฐัะตะปะตะฝะฝะพะณะพ ะฟัƒะฝะบั‚ะฐ", "ะšะพะด ะบั€ะฐั", "ะšะพะด ั€ะตัะฟัƒะฑะปะธะบะธ", "ะšะพะด ะพะฑะปะฐัั‚ะธ", "ะšะพะด ะณะพั€ะพะดะฐ", "prefix zonal", "cรณdigodeรกrea", "cรณdigo de รกrea", "retningsnr.", "retningsnummer", "์ง€์—ญ๋ฒˆํ˜ธ", "์ง€์—ญ ๋ฒˆํ˜ธ", "ใ‚จใƒชใ‚ขใ‚ณใƒผใƒ‰", "ๅธ‚ๅค–ๅฑ€็•ช", "prefisso locale", "prefisso", "pozivni broj", "ืงื™ื“ื•ืžืช", "Vorwahlnummer", "Vorwahl", "ind. rรฉg.", "ir", "indicatif", "code rรฉgional", "indicatif tรฉlรฉphonique", "indicatif de zone", "indicatif rรฉgional", "suuntanro", "suuntanumero", "ฮบฯ‰ฮดฮนฮบฯŒฯ‚ ฯ€ฮตฯฮนฮฟฯ‡ฮฎฯ‚", "netnummer", "omdrรฅdenr.", "omrรฅdenummer", "prefix", "ูƒูˆุฏ ุงู„ู…ู†ุทู‚ุฉ", "areacode", "area code", "ๅ‚ณ็œŸ่™Ÿ็ขผ", "ๅ‚ณ็œŸ", "ไผ ็œŸ", "ั„ะฐะบั", "faks numarasฤฑ", "เน‚เธ—เธฃเธชเธฒเธฃ", "ะขะตะปะตั„ะฐะบั", "ะะพะผะตั€ ั„ะฐะบัะฐ", "ํŒฉ์Šค", "้›ป่ฉฑ็•ชๅท(FAX)", "้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช)", "้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใƒƒใ‚ฏใ‚น)", "้›ป่ฉฑ็•ชๅท(ใƒ•ใ‚กใ‚ฏใ‚น)", "้›ป่ฉฑ็•ชๅท๏ผˆFAX๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใƒƒใ‚ฏใ‚น๏ผ‰", "้›ป่ฉฑ็•ชๅท๏ผˆใƒ•ใ‚กใ‚ฏใ‚น๏ผ‰", "FAX็•ชๅท", "ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช็•ชๅท", "ใƒ•ใ‚กใƒƒใ‚ฏใ‚น็•ชๅท", "ใƒ•ใ‚กใ‚ฏใ‚น็•ชๅท", "ใƒ•ใ‚กใ‚ฏใ‚ทใƒŸใƒช", "ใƒ•ใ‚กใƒƒใ‚ฏใ‚น", "ใƒ•ใ‚กใ‚ฏใ‚น", "faks", "ืคืงืก", "Telefax", "tรฉlรฉcopieur", "tรฉlรฉc.", "tรฉlรฉcopie", "faksi", "ฯ†ฮฑฮพ", "ุงู„ูุงูƒุณ", "fax", "ๆฉŸ้—œ", "ๆฉŸๆง‹", "็ต„็น”โˆ•ๆฉŸๆง‹", "ๅ•ไฝๅ็งฐ", "ๅ•ไฝ", "ๅ…ฌๅธๅ็จฑ", "ๅ…ฌๅธ", "็ป„็ป‡", "ๆœบๆž„", "ๆœบๆž„/็ป„็ป‡", "ัƒัั‚ะฐะฝะพะฒะฐ", "ะพั€ะณะฐะฝั–ะทะฐั†ั–ั", "ะบะพะผะฟะฐะฝั–ั", "organizasyon", "ลŸirket", "kuruluลŸ", "kurum", "เธšเธฃเธดเธฉเธฑเธ—", "เธญเธ‡เธ„เนŒเธเธฃ", "kontor", "bolag", "fรถretag", "organizaciรณn", "firmenname", "firma", "spoloฤnosลฅ", "organizรกcia", "ะคะธั€ะผะฐ", "ะšะพะผะฟะฐะฝะธั", "ะžั€ะณะฐะฝะธะทะฐั†ะธั", "ะŸั€ะตะดะฟั€ะธัั‚ะธะต", "organizaศ›ie", "companie", "organizaรงรฃo", "selskap", "organisasjon", "์†Œ์†", "ํšŒ์‚ฌ", "์กฐ์ง", "ๆ‰€ๅฑž็ต„็น”ๅ", "ๆ‰€ๅฑž็ต„็น”", "ๅ‹คๅ‹™ๅ…ˆไผš็คพๅ", "ๅ‹คๅ‹™ๅ…ˆไผš็คพ", "ๅ‹คๅ‹™ๅ…ˆ", "็ต„็น”ๅ", "ไผš็คพๅ", "่ทๅ ด", "็ต„็น”", "ไผš็คพ", "ๆ‰€ๅฑž", "azienda", "societร ", "organizzazione", "tvrtka", "organizacija", "ื—ื‘ืจื”", "ืืจื’ื•ืŸ", "corporation", "compagnie", "sociรฉtรฉ", "entreprise", "organisme", "yritys", "organisaatio", "ฮตฯ„ฮฑฮนฯฮตฮฏฮฑ", "ฮฟฯฮณฮฑฮฝฮนฯƒฮผฯŒฯ‚", "bedrijf", "organisatie", "selskak", "organisation", "companyia", "organitzaciรณ", "empresa", "ุงู„ุดุฑูƒุฉ", "ุงู„ู…ุคุณุณุฉ", "business", "company", "organization", "้ชŒ ่ฏ ็ ", "้ชŒ่ฏ็ ", "verification code", "่บซไปฝ่ฏ", "nick", "aim", "icq", "jabber", "msn", "qq", "skype", "ไธชไบบ็ฝ‘้กต", "ไธชไบบ็ฝ‘็ซ™", "ไธชไบบไธป้กต", "homepage"]), new PatternMatcherClass(["้›ป่ฉฑ่™Ÿ็ขผ", "้€ฃ็ตก้›ป่ฉฑ", "่ฏ็ตก้›ป่ฉฑ", "็”ต่ฏๅท็ ", "็”ต่ฏ", "ั‚ะตะป", "ั‚ะตะป.", "ั‚ะตะปะตั„ะพะฝ", "telefon no", "telefon numarasฤฑ", "เธซเธกเธฒเธขเน€เธฅเธ‚เน‚เธ—เธฃเธฏ", "เธซเธกเธฒเธขเน€เธฅเธ‚เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ", "เน€เธšเธญเธฃเนŒเน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ", "เน‚เธ—เธฃเธจเธฑเธžเธ—เนŒ", "nummer", "nรบmero de telรฉfono", "telรฉfono", "tel. ฤรญslo", "telefรณnne ฤรญslo", "telefรณn", "ะขะตะปะตั„ะพะฝะฝั‹ะน ะฝะพะผะตั€", "ะะพะผะตั€ ั‚ะตะปะตั„ะพะฝะฐ", "numฤƒr de telefon", "numฤƒr telefon", "nรบmero de telefone", "telefone", "์—ฐ๋ฝ ๋ฒˆํ˜ธ", "์ „ํ™” ๋ฒˆํ˜ธ", "์ „ํ™”๋ฒˆํ˜ธ", "์ „ํ™”", "tel", "้›ป่ฉฑ็•ชๅท(ๅ›บๅฎš)", "้›ป่ฉฑ็•ชๅท๏ผˆๅ›บๅฎš๏ผ‰", "ๅ›บๅฎš้›ป่ฉฑ็•ชๅท", "ๅ›บๅฎš้›ป่ฉฑ", "้›ป่ฉฑ็•ชๅทโ€ป", "้›ป่ฉฑ็•ชๅท", "้›ป่ฉฑ", "numero di telefono", "tel.", "numero telefono", "telefono", "telefonski broj", "broj telefona", "ื˜ืœืคื•ืŸ", "Fon", "numรฉro de tรฉl.", "tรฉl.", "numรฉro de tรฉlรฉphone", "tรฉlรฉphone", "puh.num.", "puhelinnro", "puhelinnumero", "puhelin", "ฮฑฯฮนฮธฮผฯŒฯ‚ ฯ„ฮทฮปฮตฯ†ฯŽฮฝฮฟฯ…", "ฯ„ฮทฮปฮญฯ†ฯ‰ฮฝฮฟ", "telefon", "telefonnr.", "telefonnummer", "tlf.", "nรบmero de telรจfon", "telรจfon", "ุงู„ุชู„ูŠููˆู†", "ุฑู‚ู… ุงู„ู‡ุงุชู", "ุงู„ู‡ุงุชู", "exchange", "telephone", "phone number", "phonenumber", "phone"]), new PatternMatcherClass(["่”็ณปไบบ", "็œŸๅฏฆๅง“ๅ", "ๅ็จฑ", "adฤฑ", "isim", "namn", "meno", "nume", "imiฤ™ i nazwisko", "ๅๅญ—", "ime", "ืฉื", "nimi", "naam", "navn", "ุงู„ุงุณู…", "name"]), new PatternMatcherClass(["้€š่จŠๅœฐๅ€", "่ฏ็ตกๅœฐๅ€", "้€ฃ็ตกๅœฐๅ€", "ไฝๅ€", "ะฐะดั€ะตัะฐ", "adresi", "เธ—เธตเนˆเธญเธขเธนเนˆ", "adress", "direcciรณn", "ะะดั€ะตั", "adresฤƒ", "endereรงo", "์ฃผ์†Œ", "ใ‚ขใƒ‰ใƒฌใ‚น", "ใ”ไฝๆ‰€", "ไฝๆ‰€", "indirizzo", "adresa", "ื›ืชื•ื‘ืช", "addresse", "osoite", "ฮดฮนฮตฯฮธฯ…ฮฝฯƒฮท", "adres", "adresse", "adreรงa", "ุงู„ุนู†ูˆุงู†", "address"])],
FormMetadataJSControllerObject = function() {
this.mapOfKeywordsIndicatingLoginFormTypeToScoreForMatching = {
login: 1,
"log in": 1,
log_on: 1,
signin: 1,
"sign in": 1,
signon: 1,
"sign on": 1,
"็™ปๅฝ•": 1,
"็™ปๅ…ฅ": 1,
"welcome back": 1,
anmelden: 1,
absenden: 1,
reauth: 2,
"forgot user": 1,
"@me": 1,
"enter your password": 2
}, this.mapOfKeywordsIndicatingNewAccountFormTypeToScoreForMatching = {
reg: 1,
enrollment: 1,
setup: 1,
"set up": 1,
signup: 1,
"sign up": 1,
create: 1,
"ๆณจๅ†Œ": 1,
activate: 1
}, this.mapOfKeywordsIndicatingChangePasswordFormTypeToScoreForMatching = {
change: 1,
forgotpassword: 1,
"forgot-password": 1,
update: 1,
reset: 1,
"ๅ†่จญๅฎš": 1
}, this.keywordsIndicatingNonAutoFillableFormType = ["import"], this.regularExpressionsForForgotPasswordAffordance = ["^forgot.*password"], this.regularExpressionsForForgotUserNameAffordance = ["^forgot.*user.*name"], this.regularExpressionsForForgotEmailAffordance = ["^forgot.*email", "email?$"], this.shouldShowAdditionalUI = !0, this.nonUsernameFieldLabelPatternMatchers = function nonUsernameFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["login code", "otpcode", "password", "captcha", "recaptcha", "sound", "answer", "confirmation code", "verification code", "zip code", "stock symbol", "chart", "table", "certificate", "cash card number"])]
}(), this.nonEmailFieldLabelPatternMatchers = function nonEmailFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["็ขบ่ชใ‚ณใƒผใƒ‰"])]
}(), this.passwordFieldLabelPatternMatchers = function passwordFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["password", "passwd", "่ฎพ็ฝฎๅฏ†็ ", "passwort"])]
}(), this.confirmPasswordFieldLabelPatternMatchers = function confirmPasswordFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["repeat", "retype", "confirm", "verify", "new"])]
}(), this.confirmEmailFieldLabelPatternMatchers = function confirmEmailFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["confirm"])]
}(), this.oldPasswordFieldLabelPatternMatchers = function oldPasswordFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["current", "old", "original"])]
}(), this.usernameFieldLabelPatternMatchers = function usernameFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["username", "user name", "screenname", "screen name", "loginname", "login name", "account name", "userID", "loginID", "accountID", "Online ID", "GmailAddress", "Gmail Address", "usuario", "Library Card Number", "E-Mail-Adresse"])]
}(), this.loginFormTypePatternMatchers = new PatternMatcherClass(Object.keys(this.mapOfKeywordsIndicatingLoginFormTypeToScoreForMatching)), this.newAccountFormTypePatternMatchers = new PatternMatcherClass(Object.keys(this.mapOfKeywordsIndicatingNewAccountFormTypeToScoreForMatching)), this.emailFieldLabelPatternMatchers = function emailFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["email", "emailAddr", "emailAddress", "e-mail", "ุงู„ุจุฑูŠุฏ ุงู„ุฅู„ูƒุชุฑูˆู†ูŠ", "correu electrรฒnic", "e-post", "e-postadr", "e-postadresse", "sรคhkรถposti", "s-posti", "sรคhkรถpostiosoite", "courriel", "messagerie รฉlectronique", "adresse de messagerie", "adresse รฉlectronique", "courrier รฉlectronique", "adresse de courriel", "adresse de courrier รฉlectronique", "adresse courriel", "adresse e-mail", "adrรฉlec", "adresse Internet", "c. รฉlec.", "cรฉ", "mรฉl.", "adel", "E-Mail Adresse", "E-Mail-Adresse", "ื“ื•ืืดืœ", "ืžื™ื™ืœ", "e-mail adresa", "adresa e-poลกte", "e-poลกta", "ind. e-mail", "indirizzo e-mail", "indirizzo di posta elettronica", "posta elettronica", "ind. posta elettronica", "ใƒกใƒผใƒซ", "ใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น", "Emailใ‚ขใƒ‰ใƒฌใ‚น", "Email ใ‚ขใƒ‰ใƒฌใ‚น", "้›ปๅญใƒกใƒผใƒซ", "Eใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚น", "ใƒกใ‚ขใƒ‰", "ใƒกใƒซใ‚ขใƒ‰", "์ด๋ฉ”์ผ", "์ด๋ฉ”์ผ ์ฃผ์†Œ", "์ด๋ฉ”์ผ์ฃผ์†Œ", "email ์ฃผ์†Œ", "email์ฃผ์†Œ", "e-mail ์ฃผ์†Œ", "e-mail์ฃผ์†Œ", "epost", "mail", "adresฤƒemail", "ะะดั€ะตั ัะปะตะบั‚ั€ะพะฝะฝะพะน ะฟะพั‡ั‚ั‹", "ะญะปะตะบั‚ั€ะพะฝะฝั‹ะน ะฐะดั€ะตั", "ะะดั€ะตั e-mail", "ะะดั€ะตั email", "emailAdresa", "emailAdr", "correo electrรณnico", "e-postadress", "epostadress", "emejl", "mejl", "mejladress", "เธญเธตเน€เธกเธฅ", "เธญเธตเน€เธกเธฅเธ—เธตเนˆเธญเธขเธนเนˆ", "เธ—เธตเนˆเธญเธขเธนเนˆเธญเธตเน€เธกเธฅ", "เธญเธต-เน€เธกเธฅ", "eposta", "e-posta", "e-posta adresi", "eposta adresi", "ะตะปะตะบั‚ั€ะพะฝะฝะฐ ะฟะพัˆั‚ะฐ", "ะตะปะตะบั‚ั€ะพะฝะฝะฐะฟะพัˆั‚ะฐ", "ะตะป.ะฟะพัˆั‚ะฐ", "ะตะป. ะฟะพัˆั‚ะฐ", "ะตะปะตะบั‚ั€ะพะฝะฝะฐ ะฐะดั€ะตัะฐ", "ะตะปะตะบั‚ั€ะพะฝะฝะฐะฐะดั€ะตัะฐ", "ะตะป.ะฐะดั€ะตัะฐ", "ะตะป. ะฐะดั€ะตัะฐ", "็”ตๅญ้‚ฎไปถ", "็”ตๅญ้‚ฎไปถๅœฐๅ€", "้›ปๅญ้ƒตไปถ", "้›ปๅญ้ƒตไปถไฝๅ€", "้›ปๅญ้ƒตไปถๅœฐๅ€", "้›ปๅญ้ƒตไปถไฟก็ฎฑ", "้›ปๅญไฟก็ฎฑ", "้›ปๅญ้ƒต็ฎฑ", "้›ป้ƒต"])]
}(), this.addressBookFieldLabelPatternMatchers = function addressBookFieldLabelPatternMatchers() {
return [new PatternMatcherClass([])]
}(), this.nonAccountPasswordSecureTextEntryFieldLabelPatternMatchers = function nonAccountPasswordSecureTextEntryFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["debit", "answer", "account number", "routing number"])]
}(), this.showHideButtonLabelPatternMatchers = function showHideButtonLabelPatternMatchers() {
return [new PatternMatcherClass(["show", "hide"])]
}(), this.nonCreditCardCardNumberFieldLabelPatternMatchers = function nonCreditCardCardNumberFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["gift card", "giftcard", "rewards card", "rewardscard", "loyalty card", "loyaltycard", "health card", "library card"])]
}(), this.creditCardNumberFieldLabelPatternMatchers = function creditCardNumberFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["card number", "cardnumber", "cardnum", "ccnum", "ccnumber", "cc num", "creditcardnumber", "credit card number", "newcreditcardnumber", "new credit card", "creditcardno", "credit card no", "card#", "card #"])]
}(), this.creditCardSecurityCodeFieldLabelPatternMatchers = function creditCardSecurityCodeFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["cvv", "cvc", "cvc2", "cvv2", "ccv2", "cid", "cvn", "security code", "card verification"])]
}(), this.creditCardCardholderFieldLabelPatternMatchers = function creditCardCardholderFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["name on credit card", "name on card", "nameoncard", "cardholder", "card holder", "name des karteninhabers"])]
}(), this.creditCardCompositeExpirationDateFieldLabelPatternMatchers = function creditCardCompositeExpirationDateFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["expiration date", "expirationdate", "expdate"])]
}(), this.creditCardTypeFieldLabelPatternMatchers = function creditCardTypeFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["card type", "cardtype", "cc type", "cctype", "payment type"])]
}(), this.dayFieldLabelPatternMatchers = function dayFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["day"])]
}(), this.monthFieldLabelPatternMatchers = function monthFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["month", "date m", "date mo"])]
}(), this.yearFieldLabelPatternMatchers = function yearFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["year", "date y", "date yr"])]
}(), this.oneTimeCodeFieldLabelPatternMatchers = function oneTimeCodeFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["security code", "login code", "enter the code", "enter code", "otp", "onetimecode", "onetimepasscode", "one time password", "one time passcode", "verification code", "verificationCode", "confirmation code", "identification code", "identificationCode", "activation code", "access code", "SMS", "digit code", "2fa", "twofactor token", "two factor auth", "two factor authentication", "two-factor authentication", "6-digit authentication code", "two step sign in", "two-step sign in", "MFA code", "้ชŒ่ฏ็ ", "ๆ ก้ชŒ็ ", "้ฉ—่ญ‰็ขผ", "้ฉ—่จผ็ขผ", "็ขบ่ช็ขผ", "่ช่ญ‰็ขผ", "็ขบ่ชใ‚ณใƒผใƒ‰", "่ช่จผใ‚ณใƒผใƒ‰", "์ธ์ฆ๋ฒˆํ˜ธ", "ํ™•์ธ์ฝ”๋“œ", "code de sรฉcuritรฉ", "code de vรฉrification", "code de validation", "code d'identification", "code d'authentification", "code d'autorisation", "code de confirmation", "code SMS de vรฉrification", "Authorisierungscode", "Sicherheitscode", "รœberprรผfungscode", "Bestรคtigungscode", "Bestatigungscode", "Verifizierungscode", "Aktivierungscode", "Codice di sicurezza", "Codice attivazione", "codice di attivazione", "codice di conferma", "codice di verifica", "Kod bezpieczeล„stwa", "Kod autoryzacyjny", "Kod weryfikacyjny", "cรณdigo de seguridad", "cรณdigo de confirmaciรณn", "cรณdigo de seguranca", "digite o codigo", "cรณdigo de verificaciรณn", "cรณdigo de verificaรงรฃo", "cรณdigo de confirmacao", "ะšะพะด ะฟั€ะพะฒะตั€ะบะธ", "ะบะพะด ะฑะตะทะพะฟะฐัะฝะพัั‚ะธ", "ะบะพะด ะฟะพะดั‚ะฒะตั€ะถะดะตะฝะธั", "ะšะพะด ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ", "ะบะพะด ะฟั–ะดั‚ะฒะตั€ะดะถะตะฝะฝั", "dogrulama kodu", "mรฃ bแบฃo mแบญt", "Mรฃ Xรกc Minh", "mรฃ kรญch hoแบกt", "เธฃเธซเธฑเธชเธ„เธงเธฒเธกเธ›เธฅเธญเธ”เธ เธฑเธข", "เธฃเธซเธฑเธชเธขเธทเธ™เธขเธฑเธ™", "เธฃเธซเธฑเธชOTP", "เธฃเธซเธฑเธชเธเธฒเธฃเธ•เธฃเธงเธˆเธชเธญเธšเธขเธทเธ™เธขเธฑเธ™", "เธฃเธซเธฑเธชเธเธฒเธฃเธขเธทเธ™เธขเธฑเธ™", "Kode keamanan", "Kode konfirmasi", "Kode verifikasi", "เคธเคคเฅเคฏเคพเคชเคจ เค•เฅ‹เคก", "Kod pengesahan", "Masukkan Kod", "Codul de confirmare"])]
}(), this.weakOneTimeCodeFieldLabelPatternMatchers = function weakOneTimeCodeFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["code", "passcode", "PIN", "cรณdigo", "์ฝ”๋“œ", "ใ‚ณใƒผใƒ‰", "ะบะพะด"])]
}(), this.ignoredDataTypeFieldLabelPatternMatchers = function ignoredDataTypeFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["search", "social security", "socialsecurity", "ssn", "ssno", "ssnum", "airport", "gate code", "relationship"])]
}(), this.searchFieldLabelPatternMatchers = function searchFieldLabelPatternMatchers() {
return [new PatternMatcherClass(["search"])]
}(), this.shouldIncludeNonEmptyFields = !1, this.nextFormUniqueIDValue = 0;
let e = Object.create(null);
e.get = function getNextFormUniqueID() {
return this.nextFormUniqueIDValue++, this.nextFormUniqueIDValue
}, Object.defineProperty(FormMetadataJSControllerObject.prototype, "nextFormUniqueID", e), this.nextControlUniqueIDValue = 0, e = Object.create(null), e.get = function getNextControlUniqueID() {
return this.nextControlUniqueIDValue++, this.nextControlUniqueIDValue
}, Object.defineProperty(FormMetadataJSControllerObject.prototype, "nextControlUniqueID", e)
};
FormMetadataJSControllerObject.prototype = {
setInputElementSpellCheckEnabled: function(e, r) {},
setInputElementAutofilled: function(e, r) {},
finishedAutoFillingControlsInForm: function(e, r) {},
finishedAutoFillingOneTimeCode: function(e) {},
categorySpecifierForFormControl: function(e) {
if (!e) return null;
let r = e.AutocompleteTokens;
if (r && Array.isArray(r))
for (let e of r) {
let r = specifierForAutocompleteToken(e);
if (r) return r.category
}
return specifier = specifierForFieldLabel(e.AddressBookLabel), specifier ? specifier.category : null
}
};
var FormMetadataJSController = new FormMetadataJSControllerObject;
const WBSAutoFillFormTypeUndetermined = 0,
WBSAutoFillFormTypeAutoFillableStandard = 1,
WBSAutoFillFormTypeNonAutoFillable = 2,
WBSAutoFillFormTypeAutoFillableLogin = 3,
WBSAutoFillFormTypeNewAccount = 4,
WBSAutoFillFormTypeChangePassword = 5,
WBSFormMetadataRequestNormal = 0,
WBSFormMetadataRequestPreFill = 1,
WBSFormMetadataRequestTesting = 2,
WBSFormMetadataRequestTextChange = 3,
WBSFormMetadataRequestCollectMetadataFromDebugMenu = 4,
ShouldStopAfterFirstMatch = {
CollectAllMatches: 0,
StopAfterFirstMatch: 1
},
ShouldFocusAndBlur = {
No: 0,
Yes: 1
},
ForceNonFormElementAsLogicalBackingElement = {
No: !1,
Yes: !0
},
LogicalFormCreationIsProvisional = {
No: !1,
Yes: !0
},
MatchCriteria = {
Property: 0,
Category: 1,
Literal: 2
},
PageScanCharactersSearchedThreshold = 500,
PageScanMaxCharactersSearched = 600,
MaximumNumberOfCharactersToCollectForLanguageIdentification = 300,
MinValueForMaxLengthAttributeToTreatAsPasswordField = 4,
UsernameCandidateScoreForPlainTextField = 1,
UsernameCandidateScoreForPlainTextFieldDirectlyBeforePasswordField = 2,
UsernameCandidateScoreForEmailLabeledFieldBelowPasswordField = 3,
UsernameCandidateScoreForUsernameLabeledFieldBelowPasswordField = 4,
UsernameCandidateScoreForEmailLabeledFieldAbovePasswordField = 5,
UsernameCandidateScoreForUsernameLabeledFieldAbovePasswordField = 6,
UsernameCandidateScoreBonusForVisibleElement = .5,
UsernameCandidateScorePenaltyForReadOnlyElement = .5,
UsernameCandidateScorePenaltyForMatchingNonUsernameFieldLabelPattern = 2,
UsernameCandidateScorePenaltyForMatchingSearchFieldLabelPattern = 1.5,
UsernameCandidateScorePenaltyForAnonymousElement = 1,
LowestScoreForUsernameFieldCandidate = 1,
LowestScoreForLabeledUsernameFieldCandidate = 3,
MaxLengthForFieldAboveWhichToTreatPotentialOneTimeCodeFieldAsRequiringHigherScrutiny = 10,
DateTimeInputTypes = ["date", "datetime-local", "month", "time", "week"],
DateTimeInputTypeFormats = {
date: "yyyy-MM-dd",
"datetime-local": "yyyy-MM-dd'T'hh:mm",
month: "yyyy-MM",
time: "hh:mm",
week: "yyyy-'W'ww"
},
numberOfConsecutiveElementsWithoutSuccessfulPageScanAfterWhichPageScanIsAbandoned = 40;
var mapOfFormTypeToProducerOfAssociatedKeywords = function() {
var e = {
4: function() {
return FormMetadataJSController.mapOfKeywordsIndicatingNewAccountFormTypeToScoreForMatching
},
3: function() {
return FormMetadataJSController.mapOfKeywordsIndicatingLoginFormTypeToScoreForMatching
},
5: function() {
return FormMetadataJSController.mapOfKeywordsIndicatingChangePasswordFormTypeToScoreForMatching
}
};
return e
}(),
visibilityCacheGeneration = 0;
function legacyPlaceholderInfoForInputElement(e) {
if ("text" !== e.type) return null;
var r = e.value.trim();
if (!r) return null;
for (var t = !1, n = !0, a = e.attributes, i = a.length, o = 0; o < i; ++o) {
var l = a[o];
if (r === l.value.trim() && (t = !0, "value" !== l.name.toLowerCase())) {
n = !1;
break
}
}
return t ? {
Text: r,
AttributeMatchedWasValue: n
} : null
}
function placeholderInfoForElement(e) {
var r = e.getAttribute("placeholder");
if (r) return {
Text: r,
AttributeMatchedWasValue: !1
};
var t = e.getAttribute("data-placeholder");
return t && t.length ? {
Text: t,
AttributeMatchedWasValue: !1
} : isInputElement(e) ? legacyPlaceholderInfoForInputElement(e) : null
}
function sharedPrefixLength(e, r) {
for (var t = 0, n = 0, a = e.length; n < a && e[n] === r[n]; ++n) t++;
return t
}
function rowContainingLabelAboveRow(e) {
for (var r = e.getBoundingClientRect(), t = e.previousElementSibling; t instanceof HTMLTableRowElement; t = t.previousElementSibling) {
if (t.querySelector("input, select, textarea")) return null;
var n = t.getBoundingClientRect();
if (r.top - n.bottom > r.height / 2) return null;
if (t.innerText.match(/\S/)) return t
}
return null
}
function cellVisuallyAbove(e) {
let r = e.parentElementIncludingShadowDOMHost();
if (!(r && r instanceof HTMLTableRowElement)) return null;
var t = rowContainingLabelAboveRow(r);
if (!t) return null;
for (var n = e.getBoundingClientRect(), a = t.children, i = a.length, o = null, l = 0, s = 0; s < i; ++s) {
var c = a[s],
u = c.getBoundingClientRect(),
p = Math.min(u.right, n.right) - Math.max(u.left, n.left);
(!o || p > l) && (l = p, o = c)
}
return o
}
function couldBeFormSubmissionControl(e) {
if (e instanceof HTMLButtonElement) return !0;
if (e instanceof HTMLInputElement) {
var r = e.type;
return "submit" === r || "image" === r
}
return !1
}
function isInputElement(e) {
return e instanceof HTMLInputElement
}
function isDateTimeInputElement(e) {
return !!isInputElement(e) && DateTimeInputTypes.includes(e.type)
}
function isRadioButtonElement(e) {
return !!isInputElement(e) && "radio" === e.type
}
function anchorWithURLString(e) {
var r = document.createElement("a");
return r.href = e, r
}
function pathComponentsForLocation(e) {
var r = e.pathname.substring(1).split("/");
return r[r.length - 1] || r.pop(), r
}
function lastPathComponentFromAnchor(e) {
var r = pathComponentsForLocation(e);
return r.length ? r[r.length - 1] : null
}
function lastPathComponentForURLString(e) {
return lastPathComponentFromAnchor(anchorWithURLString(e))
}
function urlEncode(e) {
return encodeURIComponent(e).replace(/%20/g, "+")
}
function isCheckboxOrRadioButtonInDefaultState(e) {
return e.checked === e.defaultChecked
}
function isSelectInDefaultState(e) {
for (var r = e.options, t = r.length, n = 0; n < t; ++n) {
var a = r[n];
if (a.selected !== a.defaultSelected) {
if (a.defaultSelected) return !1;
if (e.multiple || n) return !1
}
}
return !0
}
function formActionAsAnchorElement(e, r) {
if (!(e instanceof HTMLFormElement)) return null;
let t = e.getAttribute("action");
if (!t && r) return null;
var n = document.createElement("a");
return n.href = t || "", n
}
function eventThatBubbles(e) {
return new CustomEvent(e, {
bubbles: !0
})
}
function formControlHasBeenClassifiedInAnInterestingWay(e) {
return e.ControlIsActiveElement || e.ControlIsSecureTextField || e.ControlLooksLikePasswordCredentialField || e.ControlLooksLikeCreditCardNumberField || e.ControlLooksLikeCreditCardSecurityCodeField || e.ControlLooksLikeCreditCardCardholderField || e.ControlLooksLikeCreditCardTypeField || e.AddressBookLabel || e.ControlLooksLikeDayField || e.ControlLooksLikeMonthField || e.ControlLooksLikeYearField || e.ControlLooksLikeOneTimeCodeField || e.ControlLooksLikeCreditCardCompositeExpirationDateField
}
function isValidUsernameOrEmail(e) {
return !(!e || e.length < 3 || "true" === e || "false" === e) && (/^[a-z_][a-z0-9_.]{2,30}$/i.test(e) || /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i.test(e))
}
function selectorForElement(e) {
let r = e.localName,
t = e.getAttribute("id");
t && (r += `#${t}`);
let n = e.classList,
a = n.length;
for (let e = 0; e < a; e++) r += "." + n[e];
return r
}
function hasOwnProperties(e) {
return Object.getOwnPropertyNames(e).length > 0
}
function defaultOptionForSelectElement(e) {
for (var r = e.options, t = r.length, n = 0; n < t; ++n) {
var a = r[n];
if (a.defaultSelected) return a
}
return r[0]
}
function selectElementOptionsSequenceAnalysis(e, r) {
for (var t = e.options, n = t.length, a = 0, i = -1, o = -1, l = 0, s = 0; s < n; ++s) {
var c = t[s],
u = parseInt(c[r]);
isNaN(u) ? (l >= a && (a = l, i = o), o = -1, l = 0) : -1 === o ? (o = u, l = 1) : u === o + 1 && (o = u, l++)
}
return l >= a && (a = l, i = o), {
lengthOfLongestSequence: a,
lastNumberInSequence: i
}
}
function isElementPositionedToBeEffectivelyInvisible(e) {
var r = !1;
for (let t = e; t; t = t.parentElementIncludingShadowDOMHost())
if ("fixed" === getComputedStyle(t).position) {
r = !0;
break
} var t, n, a, i = e.getBoundingClientRect();
if (r) t = i, n = window.innerWidth, a = window.innerHeight;
else {
var o = window.scrollY,
l = window.scrollX;
t = {
top: i.top + o,
right: i.right + l,
bottom: i.bottom + o,
left: i.left + l,
width: i.width,
height: i.height
}, n = document.documentElement.scrollWidth, a = Math.max(document.documentElement.scrollHeight, window.innerHeight)
}
return t.top >= a || t.right <= 0 || t.bottom <= 0 || t.left >= n
}
function rectIsWithinDocumentViewport(e) {
return e.right >= 0 && e.bottom >= 0 && e.left <= window.innerWidth && e.top <= window.innerHeight
}
function isCredentialElementUniqueID(e, r) {
return r === e.UsernameElementUniqueID || r === e.PasswordElementUniqueID || r === e.ConfirmPasswordElementUniqueID || r === e.OldPasswordElementUniqueID
}
function autocompleteTokens(e) {
const r = ["autocomplete", "autocompletetype", "x-autocompletetype"];
let t = [];
for (const n of r) e.hasAttribute(n) && t.push(e.getAttribute(n).trim().toLowerCase());
if (!t.length) return null;
let n = t.join(" ").split(/\s+/).filter((function(e) {
return e.length && "off" !== e && "on" !== e
}));
return n.length ? n : null
}
function controlAppearsToBePartOfPhotoTaggingInterface(e) {
const r = /photo.*tag/i;
for (let t = e.parentElementIncludingShadowDOMHost(); t; t = t.parentElementIncludingShadowDOMHost())
if (r.test(t.className)) return !0;
return !1
}
function levenshteinDistance(e, r) {
for (var t = e.length, n = r.length, a = new Array(t + 1), i = 0; i < t + 1; ++i) a[i] = new Array(n + 1), a[i][0] = i;
for (var o = 0; o < n + 1; ++o) a[0][o] = o;
for (o = 1; o < n + 1; ++o)
for (i = 1; i < t + 1; ++i)
if (e[i - 1] === r[o - 1]) a[i][o] = a[i - 1][o - 1];
else {
var l = a[i - 1][o] + 1,
s = a[i][o - 1] + 1,
c = a[i - 1][o - 1] + 1;
a[i][o] = Math.min(l, s, c)
} return a[t][n]
}
function stringSimilarity(e, r) {
var t = Math.max(e.length, r.length);
return t ? (t - levenshteinDistance(e, r)) / t : 0
}
function articleTitleAndSiteNameFromTitleString(e, r) {
const t = [" - ", " โ€“ ", " โ€” ", ": ", " | ", " ยป "],
n = t.length;
for (var a, i, o = e.replace(/^(www|m|secure)\./, ""), l = o.replace(/\.(com|info|net|org|edu|gov)$/, "").toLowerCase(), s = 0; s < n; ++s) {
var c = r.split(t[s]);
if (2 === c.length) {
var u = c[0].trim(),
p = c[1].trim(),
d = u.toLowerCase(),
f = p.toLowerCase(),
m = Math.max(stringSimilarity(d, o), stringSimilarity(d, l)),
v = Math.max(stringSimilarity(f, o), stringSimilarity(f, l)),
w = Math.max(m, v);
(!i || w > i) && (i = w, a = m > v ? {
siteName: u,
articleTitle: p
} : {
siteName: p,
articleTitle: u
})
}
}
return a && i >= .6 ? a : null
}
function documentTitleWithoutHostNamePrefix() {
const e = document.title,
r = articleTitleAndSiteNameFromTitleString(window.location.host, e);
return r ? r.articleTitle : e
}
function querySelectorAllIncludingWithinShadowRoots(e, r) {
let t = [];
for (let n of e.querySelectorAll("*"))
if (n.shadowRoot) {
let e = querySelectorAllIncludingWithinShadowRoots(n.shadowRoot, r);
e.length && (t = t.concat(e))
} else n.matches(r) && t.push(n);
return t
}
function queryAllBySelector(e, r) {
try {
return window.collectMatchingElementsInFlatTree ? window.collectMatchingElementsInFlatTree(e, r) : querySelectorAllIncludingWithinShadowRoots(e, r)
} catch (e) {
return []
}
}
function getElementByID(e) {
let r = queryAllBySelector(document, `[id='${e}']`);
return r.length ? r[0] : null
}
function siblingsIncludingSelfForElement(e) {
let r = e.parentElement;
if (r) return r.children;
let t = e;
for (; t.previousElementSibling;) t = t.previousElementSibling;
let n = [],
a = t;
for (; a;) n.push(a), a = a.nextElementSibling;
return n
}
function regularExpressionsFromStrings(e) {
return e.map((e => new RegExp(e)))
}
function stringsMatchAnyRegularExpressions(e, r) {
for (let t of r)
for (let r of e)
if (t.test(r.toLowerCase())) return !0;
return !1
}
function pathFromAnchorWithoutLeadingSlash(e) {
let r = /\/(.*)/.exec(e.pathname);
return r && 2 === r.length ? r[1] : null
}
function innermostActiveElement() {
let e = document.activeElement,
r = e;
for (; r;) r = r?.shadowRoot?.activeElement, r && (e = r);
return e
}
console.autofillDebugLog = function(e, ...r) {
FormMetadataJSController.isDebugConsoleLoggingEnabled
}, Node.prototype.traversePreviousNode = function(e) {
if (this) {
var r = this.previousSibling;
if (e(r)) return null;
for (; r && r.lastChild;)
if (e(r = r.lastChild)) return null;
return r || this.parentNode
}
}, Node.prototype.traverseNextNode = function(e) {
if (this) {
var r = this.firstChild;
if (r) return r;
if (e && this === e) return null;
if (r = this.nextSibling) return r;
for (r = this; r && !r.nextSibling && (!e || !r.parentNode || r.parentNode !== e);) r = r.parentNode;
return r ? r.nextSibling : null
}
}, Node.prototype.isVisible = function() {
let e = this;
if (e._isVisible === visibilityCacheGeneration) return !0;
if (e._isVisible === -visibilityCacheGeneration) return !1;
let r = e.nodeType == Node.TEXT_NODE ? e.parentElementIncludingShadowDOMHost() : e,
t = getComputedStyle(r, null);
return e._isVisible = -visibilityCacheGeneration, "none" !== t.display && "visible" === t.visibility && (!(r.offsetWidth < 2) && (!(r.offsetHeight < 2) && (e._isVisible = visibilityCacheGeneration, !0)))
}, Object.defineProperty(Array.prototype, "joinFirstItems", {
value: function(e, r) {
r > this.length && (r = this.length);
for (var t = "", n = 0; n < r; ++n) n > 0 && (t += e), t += this[n];
return t
}
}), DOMRect.prototype.isZeroRect = function() {
return !(this.top || this.right || this.bottom || this.left)
}, DOMRect.prototype.distanceToRect = function(e) {
var r = [{
x: this.left,
y: this.top
}, {
x: this.right,
y: this.top
}],
t = [{
x: this.right,
y: this.top
}, {
x: this.right,
y: this.bottom
}],
n = [{
x: this.left,
y: this.bottom
}, {
x: this.right,
y: this.bottom
}],
a = [{
x: this.left,
y: this.top
}, {
x: this.left,
y: this.bottom
}],
i = [{
x: e.left,
y: e.top
}, {
x: e.right,
y: e.top
}],
o = [{
x: e.right,
y: e.top
}, {
x: e.right,
y: e.bottom
}],
l = [{
x: e.left,
y: e.bottom
}, {
x: e.right,
y: e.bottom
}],
s = [{
x: e.left,
y: e.top
}, {
x: e.left,
y: e.bottom
}],
c = [
[a, s],
[a, o],
[r, i],
[r, l],
[t, s],
[t, o],
[n, i],
[n, l]
].map((function distanceBetweenTwoParallelLineSegments(e) {
var r = e[0],
t = e[1];
if (r[0].x >= t[0].x && r[0].x < t[1].x || t[0].x >= r[0].x && t[0].x < r[1].x) return Math.abs(r[0].y - t[0].y);
if (r[0].y >= t[0].y && r[0].y < t[1].y || t[0].y >= r[0].y && t[0].y < r[1].y) return Math.abs(r[0].x - t[0].x);
function distanceBetweenTwoPointsSquared(e, r) {
return Math.pow(e.x - r.x, 2) + Math.pow(e.y - r.y, 2)
}
return Math.sqrt(Math.min(distanceBetweenTwoPointsSquared(r[0], t[1]), distanceBetweenTwoPointsSquared(r[1], t[0])))
}));
return Math.min.apply(Math, c)
}, Node.prototype.parentElementIncludingShadowDOMHost = function() {
let e = this.parentElement;
if (e) return e;
let r = this.getRootNode();
return r && r.host ? r.host : null
}, Node.prototype.allAncestorsAndSelfIncludingShadowDOMHosts = function() {
let e = [],
r = this;
for (; r;) e.push(r), r = r.parentElementIncludingShadowDOMHost();
return e
}, HTMLElement.prototype.closestCommonAncestor = function(e) {
let r = this.parentElement;
for (; r;) {
if (r.contains(e)) return r;
r = r.parentElement
}
let t = this.allAncestorsAndSelfIncludingShadowDOMHosts().reverse(),
n = e.allAncestorsAndSelfIncludingShadowDOMHosts().reverse(),
a = Math.min(t.length, n.length),
i = null;
for (let e = 0; e < a; ++e) {
if (!(t[e] === n[e])) break;
i = t[e]
}
return i || null
}, HTMLElement.prototype.isHiddenFromAccessibilityTree = function() {
for (let r = 0, t = this; r <= 2 && t; ++r, t = t.parentElementIncludingShadowDOMHost()) {
var e = t.getAttribute("aria-hidden");
if (e && "true" === e.toLowerCase()) return !0
}
return !1
}, HTMLFormElement.prototype.isVisible = function() {
if (Node.prototype.isVisible.call(this)) return !0;
for (var e = this.elements, r = e.length, t = 0; t < r; ++t)
if (e[t].isVisible()) return !0;
return !1
}, RegExp.prototype.testMatchesEntireString = function(e) {
if (!e) return !1;
let r = this.exec(e);
return !(!r || r[0] !== e)
}, LogicalForm = function(e, r, t) {
var n = e.length;
this._formElement = e[0].form, this._backingElement = this._formElement, !r && this._backingElement || (this._backingElement = 1 === n ? e[0] : e[0].closestCommonAncestor(e[n - 1])), this._formElement && this._formElement.contains(e[n - 1]) || (this._formElement = this._backingElement), this._controls = Array.prototype.slice.call(e), t || this.markElementsAsPartOfLogicalForm(), this._backingElement._logicalFormUniqueID || (this._backingElement._logicalFormUniqueID = FormMetadataJSController.nextFormUniqueID)
}, LogicalForm.prototype = {
get elements() {
return this._controls
},
get formElement() {
return this._formElement
},
get backingElement() {
return this._backingElement
},
get formUniqueID() {
return this._backingElement._logicalFormUniqueID
},
containsControl: function(e) {
return e._logicalForm ? e._logicalForm === this : e.form === this._formElement
},
radioButtonsWithName: function(e) {
let r = queryAllBySelector(document.documentElement, `*[name="${e}"]`);
return Array.prototype.filter.call(r, (function(e) {
return (e.form === this._formElement || this._formElement.contains(e)) && isRadioButtonElement(e)
}), this)
},
annotate: function(e) {
var r = this._formElement,
t = r._annotations;
if (t) {
for (var n in e) {
var a = e[n];
a ? t[n] = a : delete t[n]
}
hasOwnProperties(t) || delete r._annotations
} else r._annotations = e
},
markElementsAsPartOfLogicalForm: function() {
let e = this._controls,
r = e.length;
for (let t = 0; t < r; t++) e[t]._logicalForm = this, t + 1 < r && (e[t]._nextControlInLogicalForm = e[t + 1]), t > 0 && (e[t]._previousControlInLogicalForm = e[t - 1])
},
get annotations() {
return this._formElement._annotations
},
get isAnnotated() {
return !!this._formElement._annotations
}
}, FormMetadata = function() {
this._forms = [], this._formMetadata = [], this._elementsWithGeneratedPasswords = [], this._generatedPasswords = [], this._labels = queryAllBySelector(document, "label"), this._controlUniqueIDToControlMap = [], this._mapOfFormTypeToExtraScoreProducer = function() {
let e = {
4: function(e) {
return 0
}
};
return e[3] = function(e) {
return 1 === e._controls.filter((e => function(e) {
return "checkbox" === e.type && FormMetadataJS._labelsForElement(e).some((e => /(remember|keep) me/i.test(e.innerText.trim()) && e.isVisible()))
}(e))).length ? 2 : 0
}, e[5] = function(e) {
return 0
}, e
}(), this._requiredFormatForDateTimeInput = DateTimeInputTypes.reduce((function(e, r) {
let t = document.createElement("input");
t.type = r;
return t.value = "a", e[r] = "" === t.value ? DateTimeInputTypeFormats[r] : "", e
}), {})
}, FormMetadata.prototype = {
_getTagName: function(e) {
var r = e.tagName;
return "string" == typeof r || "string" == typeof(r = e.nodeName) ? r : void 0
},
_getNameOrId: function(e) {
return e.name && e.name.length ? e.name : e.id
},
controlUniqueID: function(e) {
if (e._controlUniqueID) return e._controlUniqueID;
var r = "ControlID-" + FormMetadataJSController.nextControlUniqueID;
return e._controlUniqueID = r, this._controlUniqueIDToControlMap[r] = e, FormMetadataJSController.shouldShowAdditionalUI && e.setAttribute("control-id", r), e._controlUniqueID
},
controlCategory: function(e) {
return e._controlCategory || (e._controlCategory = e.getAttribute("category")), e._controlCategory
},
_searchForLabelsAboveCell: function(e, r) {
var t = window.getComputedStyle(r, null);
if (!t || "table-cell" !== t.getPropertyValue("display")) return null;
var n = cellVisuallyAbove(r);
if (!n) return null;
for (var a = 0, i = n.firstChild; i; i = i.traverseNextNode(n))
if (i.nodeType == Node.TEXT_NODE && i.isVisible()) {
var o = i.nodeValue,
l = e.searchReverse(o);
if (l) return {
Distance: a,
Match: l[0],
Property: l[1],
Category: l[2],
ParentProperty: l[3]
};
a += o.length
} return null
},
_collectStringFromNodeForPageScan: function(e, r, t) {
var n = e.nodeValue,
a = n.length;
return t + a > 600 && (n = n.substr(-(500 - t)), a = 500 - t), (n = n.trim()).length && r.push(n), t
},
_dataForComputingMatchFromPageScanBeforeElement: function(e, r) {
function shouldStopScan(e) {
return e && e.nodeType == Node.ELEMENT_NODE && e.matches("nav")
}
var t, n = [],
a = 0,
i = this._logicalFormForControl(e).formElement,
o = i && i.isVisible();
r || (r = i);
for (var l = e.traversePreviousNode(shouldStopScan); l && a < 500; l = l.traversePreviousNode(shouldStopScan)) {
var s = l.localName;
if (l === r) break;
if (this._isRenderedFormControl(l)) {
if (l.isVisible() || !o) break
} else {
if (this._isLabelElement(l) && l.isVisible()) break;
if ("td" !== s || t) {
if ("tr" === s && t) break;
if ("ul" === s || "ol" === s || "dl" === s) break;
if ("li" === s) {
if (!l.parentNode.contains(e)) break
} else l.nodeType == Node.TEXT_NODE && l.isVisible() && (a += this._collectStringFromNodeForPageScan(l, n, a))
} else t = l
}
}
return [n, t]
},
_matchFromPageScanBeforeElement: function(e, r, t) {
var n = this._pageScanContext ? this._pageScanContext.backwardScanCache : null,
a = this._pageScanDataForElementWithCacheAndDataProducer(r, n, this._dataForComputingMatchFromPageScanBeforeElement.bind(this), t),
i = a[0],
o = this._matchFromPatternMatcherAndStringsFromPageScan(e, i);
if (o) return o;
var l = a[1];
if (l) {
var s = this._searchForLabelsAboveCell(e, l);
if (s) return s.IsInCellAbove = !0, s
}
return null
},
_isElementFollowedByForgotUserNameOrEmailAffordance: function(e, r) {
this._forgotUserNameRegularExpressions || (this._forgotUserNameRegularExpressions = regularExpressionsFromStrings(FormMetadataJSController.regularExpressionsForForgotUserNameAffordance)), this._forgotEmailRegularExpressions || (this._forgotEmailRegularExpressions = regularExpressionsFromStrings(FormMetadataJSController.regularExpressionsForForgotEmailAffordance));
let t = this._stringsToEvaluateToDetermineIfElementIsFollowedByAffordance(e, r);
return !!stringsMatchAnyRegularExpressions(t, this._forgotUserNameRegularExpressions) || !!stringsMatchAnyRegularExpressions(t, this._forgotEmailRegularExpressions)
},
_isElementFollowedByForgotPasswordAffordance: function(e, r) {
return this._forgotPasswordRegularExpressions || (this._forgotPasswordRegularExpressions = regularExpressionsFromStrings(FormMetadataJSController.regularExpressionsForForgotPasswordAffordance)), stringsMatchAnyRegularExpressions(this._stringsToEvaluateToDetermineIfElementIsFollowedByAffordance(e, r), this._forgotPasswordRegularExpressions)
},
_numberOfForgotUserNameEmailOrPasswordAffordancesFollowingElement: function(e, r) {
this._forgotEmailRegularExpressions || (this._forgotEmailRegularExpressions = regularExpressionsFromStrings(FormMetadataJSController.regularExpressionsForForgotEmailAffordance)), this._forgotPasswordRegularExpressions || (this._forgotPasswordRegularExpressions = regularExpressionsFromStrings(FormMetadataJSController.regularExpressionsForForgotPasswordAffordance)), this._forgotUserNameRegularExpressions || (this._forgotUserNameRegularExpressions = regularExpressionsFromStrings(FormMetadataJSController.regularExpressionsForForgotUserNameAffordance));
let t = this._stringsToEvaluateToDetermineIfElementIsFollowedByAffordance(e, r),
n = 0;
return stringsMatchAnyRegularExpressions(t, this._forgotUserNameRegularExpressions) && n++, stringsMatchAnyRegularExpressions(t, this._forgotEmailRegularExpressions) && n++, stringsMatchAnyRegularExpressions(t, this._forgotPasswordRegularExpressions) && n++, n
},
_stringsToEvaluateToDetermineIfElementIsFollowedByAffordance: function(e, r) {
let t = this._dataForComputingMatchFromPageScanAfterElement(e, "A");
if (!t.length) {
const r = e.traverseNextNode();
if (r) {
let e = r;
r instanceof Node && (e = r.parentElementIncludingShadowDOMHost());
const n = e.querySelector("a");
if (n) {
t.push(n.innerText);
const e = pathFromAnchorWithoutLeadingSlash(n);
e && t.push(e)
}
}
}
if (!t.length)
for (let n of queryAllBySelector(r, "a")) {
if (e.compareDocumentPosition(n) & Node.DOCUMENT_POSITION_FOLLOWING) {
t.push(n.innerText);
const e = pathFromAnchorWithoutLeadingSlash(n);
e && t.push(e)
}
}
const n = e._nextControlInLogicalForm;
return n && "button" === n.type && t.push(n.innerText), t
},
_dataForComputingMatchFromPageScanAfterElement: function(e, r, t) {
var n = [],
a = 0,
i = this._logicalFormForControl(e).formElement,
o = i && i.isVisible();
let l = void 0 !== r;
t || (t = i);
for (var s = e.traverseNextNode(); s && a < 500; s = s.traverseNextNode()) {
var c = s.localName;
if (s === t) {
var u = this._pageScanContext;
u && !a && (u.forwardScanIsFutile = !0);
break
}
if (this._isRenderedFormControl(s)) {
if (s.isVisible() || !o) break
} else {
if (this._isLabelElement(s) && s.isVisible()) break;
if ("tr" === c) break;
if ("ul" === c || "ol" === c || "dl" === c) break;
if (s.nodeType == Node.TEXT_NODE && s.isVisible()) {
if (void 0 !== r && (!s.parentNode || s.parentNode.tagName !== r)) continue;
if (a += this._collectStringFromNodeForPageScan(s, n, a), l) break
}
}
}
return n
},
_matchFromPageScanAfterElement: function(e, r, t) {
var n = this._pageScanContext ? this._pageScanContext.forwardScanCache : null,
a = this._pageScanDataForElementWithCacheAndDataProducer(r, n, this._dataForComputingMatchFromPageScanAfterElement.bind(this), t);
return this._matchFromPatternMatcherAndStringsFromPageScan(e, a)
},
_pageScanDataForElementWithCacheAndDataProducer: function(e, r, t, n) {
if (!r) return t(e, n);
if (a = r.get(e)) return a;
var a = t(e, n);
return r.set(e, a), a
},
_matchFromPatternMatcherAndStringsFromPageScan: function(e, r) {
for (var t = r.length, n = 0, a = 0; a < t; ++a) {
var i = r[a];
n += i.length;
var o = e.searchReverse(i);
if (o) return {
Distance: n,
Match: o[0],
Property: o[1],
Category: o[2],
ParentProperty: o[3]
}
}
return null
},
_matchPatternAgainstString: function(e, r) {
if (!r) return null;
var t = r.replace(/[\d_.-]/g, " ");
return t = t.replace(/[a-z][A-Z]/g, (function(e) {
return e[0] + " " + e[1]
})), e.longestMatch(t)
},
_controlsAreAllButtons: function(e) {
for (var r = e.length, t = 0; t < r; ++t) {
if (!(e[t] instanceof HTMLButtonElement)) return !1
}
return !0
},
_createLogicalFormsForControls: function(e, r, t) {
if (this._controlsAreAllButtons(e)) return [];
let n, a, i = e.map((function(e) {
return e.getBoundingClientRect()
})),
o = e.length,
l = 0;
i[0].isZeroRect() ? (n = 0, a = null) : (n = 1, a = i[0]);
for (let p = 1; p < o; ++p) {
let d = i[p];
if (!d.isZeroRect()) {
if (a) {
let f = a.distanceToRect(d);
f && (++n, l += f)
}
a = d
}
}
if (1 === n) {
function closestSectioningElementForControl(e) {
return e.closest("header, footer, aside")
}
let m = [],
v = 0;
for (; v < o;) {
let w = [e[v]],
y = closestSectioningElementForControl(e[v]);
for (let h = v + 1; h < o; ++h) {
let E = e[h];
if (y !== closestSectioningElementForControl(e[h])) break;
w.push(E)
}
m.push(new LogicalForm(w, r, t)), v += w.length
}
return m
}
let s = n ? l / n : 0,
c = [],
u = 0;
for (; u < o;) {
let M = [e[u]],
S = !1,
g = i[u].isZeroRect() ? null : i[u];
for (let k = u + 1; k < o; ++k) {
let C = e[k],
b = i[k];
if (!b.isZeroRect()) {
if (S) {
if (g && g.distanceToRect(b) > s) break
} else S = couldBeFormSubmissionControl(C);
g = b
}
M.push(C)
}
c.push(new LogicalForm(M, r, t)), u += M.length
}
return c
},
_formLooksLikeAspnetForm: function(e) {
var r = 0;
"aspnetForm" === e.getAttribute("id") && ++r, "aspnetForm" === e.getAttribute("name") && ++r;
for (var t = queryAllBySelector(e, "input"), n = 0, a = t.length; n < a; ++n) {
var i = t[n],
o = i.getAttribute("id"),
l = i.getAttribute("name");
/ctl\d\d_/.test(o) && ++r, /ctl\d\d\$/.test(l) && ++r, "hidden" === i.getAttribute("type") && ("__VIEWSTATE" === l && "__VIEWSTATE" === o || "__EVENTTARGET" === l && "__EVENTTARGET" === o || "__EVENTARGUMENT" === l && "__EVENTARGUMENT" === o || "__LASTFOCUS" === l && "__LASTFOCUS" === o) && ++r
}
for (var s = queryAllBySelector(document, "script"), c = s.length, u = 0; u < c; ++u) {
var p = anchorWithURLString(s[u].src);
if (p.host === window.location.host) {
var d = lastPathComponentFromAnchor(p);
"WebResource.axd" !== d && "ScriptResource.axd" !== d || ++r
}
}
return r >= 3
},
_anchorLooksLikeSubmitButton: function(e) {
return /submit|button/i.test(e.getAttribute("id"))
},
_visibleInputAndSelectElementsInForm: function(e) {
let r = queryAllBySelector(e, "input:not([type='hidden']), select"),
t = [];
for (var n = 0, a = r.length; n < a; ++n) {
let e = r[n];
e.isVisible() && t.push(e)
}
return t
},
_elementsActingAsButtonsInForm: function(e) {
let r = Array.prototype.slice.call(queryAllBySelector(e, "input[type='submit'], input[type='image']")),
t = queryAllBySelector(e, "a");
for (var n = 0, a = t.length; n < a; ++n) {
let e = t[n];
this._anchorLooksLikeSubmitButton(e) && e.isVisible() && r.push(e)
}
return r
},
_logicalFormsForAspnetForm: function(e) {
for (var r = this._visibleInputAndSelectElementsInForm(e), t = r.length, n = this._elementsActingAsButtonsInForm(e), a = n.length, i = 0; i < a; ++i) {
(l = n[i]).getAttribute("id") && (l._aspNetIDComponents = l.getAttribute("id").split("_"))
}
n.sort((function(e, r) {
var t = e._aspNetIDComponents || [];
return (r._aspNetIDComponents || []).length - t.length
}));
var o = [];
function groupElementsIntoLogicalFormsBasedOnTableLayout(e) {
var r = e.length;
if (r <= 1) o.push(new LogicalForm(e, ForceNonFormElementAsLogicalBackingElement.Yes));
else {
var t = r - 1,
n = e[t];
if (e[0].closestCommonAncestor(n) instanceof HTMLTableRowElement) {
for (var a = 0; a < t; ++a) {
if (!(e[a].closestCommonAncestor(n) instanceof HTMLTableRowElement)) return groupElementsIntoLogicalFormsBasedOnTableLayout(e.slice(0, a)), void groupElementsIntoLogicalFormsBasedOnTableLayout(e.slice(a))
}
o.push(new LogicalForm(e, ForceNonFormElementAsLogicalBackingElement.Yes))
} else o.push(new LogicalForm(e, ForceNonFormElementAsLogicalBackingElement.Yes))
}
}
for (i = 0; i < a; ++i) {
var l, s = (l = n[i])._aspNetIDComponents;
if (s) {
var c = s.length;
if (!(c < 2)) {
for (var u = s.joinFirstItems("_", c - 1) + "_", p = [], d = t - 1; d >= 0; --d) {
var f = r[d],
m = f.getAttribute("id");
m && (m.startsWith(u) && (p.push(f), r.splice(d, 1)))
}
if (p.length && groupElementsIntoLogicalFormsBasedOnTableLayout(p.reverse()), !(t = r.length)) break
}
}
}
return t && groupElementsIntoLogicalFormsBasedOnTableLayout(r), o
},
_logicalFormsInPage: function(e, r) {
let t = [],
n = {},
a = queryAllBySelector(document, "form"),
i = 0,
o = a.length,
l = new Set;
for (var s = 0; s < o; ++s) {
let o = a[s],
c = o.elements;
if (!c.length) {
c = queryAllBySelector(o, "input, select, textarea, button");
for (let e of c) l.add(e)
}
if (c.length) {
if (i++, e && i >= e) return t;
if (r) {
let e = [o.method, o.name, o.action, o.className].join("|"),
t = n[e] || 0;
if (t > r) continue;
n[e] = t + 1
}
this._formLooksLikeAspnetForm(o) ? t = t.concat(this._logicalFormsForAspnetForm(o)) : t.push(new LogicalForm(c))
}
}
let c = [],
u = queryAllBySelector(document, "input, select, textarea, button"),
p = u.length;
for (let e = 0; e < p; ++e) {
let r = u[e];
if (r.form || l.has(r)) {
if (!c.length) continue;
t = t.concat(this._createLogicalFormsForControls(c)), c = []
} else(this._isRenderedFormControl(r) || autocompleteTokens(r)) && c.push(r)
}
c.length && (t = t.concat(this._createLogicalFormsForControls(c)));
let d = t.length;
for (s = 0; s < d - 1; ++s) {
let e = t[s],
r = e.backingElement,
n = r.getBoundingClientRect(),
a = t[s + 1],
i = a.backingElement,
o = i.getBoundingClientRect();
const l = 40;
if (r.nextElementSibling === i && r.action === i.action && n.height && o.height && n.x === o.x && n.width === o.width && n.bottom + l >= o.top) {
let r = 1 === e.elements.filter((function(e) {
return e.isVisible()
})).length,
n = e.elements.includes((function(e) {
return e.matches("input[type=submit], button") && e.isVisible()
}));
if (r && !n) {
let r = e.elements.concat(a.elements),
n = this._createLogicalFormsForControls(r, ForceNonFormElementAsLogicalBackingElement.Yes, LogicalFormCreationIsProvisional.Yes);
if (1 === n.length) {
let e = n[0];
e.markElementsAsPartOfLogicalForm(), t.splice(s, 2, e), d--
}
}
}
}
return t
},
_indexInCacheOfLogicalFormContainingControl: function(e) {
for (var r = 0; r < this._forms.length; ++r)
if (this._forms[r].containsControl(e)) return r;
return -1
},
_logicalFormForControl: function(e) {
var r = this._indexInCacheOfLogicalFormContainingControl(e);
return -1 === r ? null : this._forms[r]
},
_matchPatternAgainstElement: function(e, r, t) {
this._logicalFormForControl(t);
var n = t._previousControlInLogicalForm,
a = t._nextControlInLogicalForm;
function attributeValueWithoutPrefixSharedWithSiblingElement(e, r) {
if (!e) return null;
var n = t[r],
a = sharedPrefixLength(n, e[r]);
return a ? n.substr(a) : null
}
const i = ["name", "id"],
o = i.length;
for (var l = new Array(o), s = new Array(o), c = 0; c < o; ++c) {
var u = i[c];
l[c] = attributeValueWithoutPrefixSharedWithSiblingElement(n, u), s[c] = attributeValueWithoutPrefixSharedWithSiblingElement(a, u)
}
var p = "select" === this._getTagName(t).toLowerCase(),
d = p ? defaultOptionForSelectElement(t) : null;
const f = r.length;
for (var m = 0; m < f; ++m) {
var v, w = r[m];
for (c = 0; c < o && !(v = this._matchPatternAgainstString(w, l[c])) && !(v = this._matchPatternAgainstString(w, s[c])) && !(v = this._matchPatternAgainstString(w, t[i[c]])); ++c);
if (!v && p && d) {
var y = d.text;
if (/^-.+-$/.test(y)) v = this._matchPatternAgainstString(w, y);
else if (!d.value.length && y.length) {
for (var h = t.options, E = h.length, M = !0, S = 0; S < E; ++S) {
var g = h[S];
if (g !== d && !g.value.length) {
M = !1;
break
}
}
M && (v = this._matchPatternAgainstString(w, y))
}
}
v && e.push({
FoundByPageScan: !1,
Match: v[0].toLowerCase(),
Property: v[1],
Category: v[2],
ParentProperty: v[3],
Priority: m
})
}
},
_labelsForElement: function(e) {
if (e._cachedLabels) return e._cachedLabels;
e._cachedLabels = [];
let r = e.getAttribute("aria-labelledby");
if (r && r.length) {
let n = r.split(" ");
for (var t = 0; t < n.length; t++) {
let r = getElementByID(n[t]);
r && e._cachedLabels.push(r)
}
}
if (e._cachedLabels.length) return e._cachedLabels;
let fuzzyName = function(e) {
return e.replace(/[^a-zA-Z0-9]+/g, "")
};
for (let r of [e.getAttribute("id"), e.getAttribute("name")]) {
if (!r || !r.length) continue;
let t = [],
n = e.form;
for (let a of this._labels) {
if (n === a.closest("form")) {
let n = a.getAttribute("for");
if (n === r) e._cachedLabels.push(a);
else if (n) {
let e = fuzzyName(n);
e.length > 0 && e === fuzzyName(r) && t.push(a)
}
}
}
if (0 === e._cachedLabels.length && 1 === t.length && (e._cachedLabels = t), e._cachedLabels.length) return e._cachedLabels
}
var n = this._logicalFormForControl(e).formElement;
for (let r = e.parentElementIncludingShadowDOMHost(); r && r !== n; r = r.parentElementIncludingShadowDOMHost())
if (this._isLabelElement(r)) {
e._cachedLabels.push(r);
break
} return e._cachedLabels
},
_matchesForElement: function(e, r, t = !1) {
var n = [],
a = r.length;
function addMatchesFromText(e, t) {
for (var i = 0; i < a; ++i) {
var o = r[i].searchReverse(e);
if (o && (n.push({
FoundByPageScan: !1,
Match: o[0].toLowerCase(),
Property: o[1],
Category: o[2],
ParentProperty: o[3],
Priority: i
}), t === ShouldStopAfterFirstMatch.StopAfterFirstMatch)) return
}
}
this._matchPatternAgainstElement(n, r, e);
for (var i = !1, o = this._labelsForElement(e), l = 0; l < o.length; ++l) {
var s = o[l].innerText;
s && (i = !0, addMatchesFromText(s, ShouldStopAfterFirstMatch.StopAfterFirstMatch))
}
let c = placeholderInfoForElement(e);
c && !c.AttributeMatchedWasValue && addMatchesFromText(c.Text, ShouldStopAfterFirstMatch.StopAfterFirstMatch);
var u = e.getAttribute("title");
u && addMatchesFromText(u, ShouldStopAfterFirstMatch.StopAfterFirstMatch);
var p = this._labelForElementIfElementAndLabelAreOnlyElementsOfTheirKindAmongSiblingElements(e);
p && addMatchesFromText(p.innerText, ShouldStopAfterFirstMatch.CollectAllMatches);
let d = this._ariaLabelForElementOrParentOfElement(e);
d && addMatchesFromText(d, ShouldStopAfterFirstMatch.StopAfterFirstMatch);
var f = e.getAttribute("formcontrolname");
f && f.length && addMatchesFromText(f, ShouldStopAfterFirstMatch.StopAfterFirstMatch);
var m = this._pageScanContext,
v = !0,
w = !1;
if (m && (m.shouldUsePageScan && (v = m.shouldUsePageScan()), m.reportPageScanUsedSuccessfully && (w = !0)), !v) return n;
if (i) return w && m.reportPageScanUsedSuccessfully(!1), n;
if (!0 === t) return n;
var y, h = null,
E = null;
function betterMatchOfNewAndCurrentBestMatch(e, r) {
return e && e.Match.length && (!r || !e.IsInCellAbove && r.IsInCellAbove || e.IsInCellAbove == r.IsInCellAbove && e.Distance < r.Distance) ? {
FoundByPageScan: !0,
Match: y.Match.toLowerCase(),
Property: y.Property,
Category: y.Category,
ParentProperty: y.ParentProperty,
Priority: M
} : r
}
for (var M = 0; M < a; ++M) h = betterMatchOfNewAndCurrentBestMatch(y = this._matchFromPageScanBeforeElement(r[M], e), h), m && m.forwardScanIsFutile || (E = betterMatchOfNewAndCurrentBestMatch(y = this._matchFromPageScanAfterElement(r[M], e), E));
var S = !1;
if (h && (n.push(h), S = !0), E)
for (var g = 0, k = n.length; g < k; ++g) {
var C = n[g];
if (E.Priority === C.Priority) {
n.push(E), S = !0;
break
}
}
return w && m.reportPageScanUsedSuccessfully(S), n.length && c && c.AttributeMatchedWasValue && addMatchesFromText(c.Text, ShouldStopAfterFirstMatch.StopAfterFirstMatch), n
},
_bestMatchFromMatches: function(e, r, t) {
function firstMatchOfMostFrequentlyOccurringStringFromMatches(e, r) {
for (var t = e.length, n = {}, a = 0; a < t; ++a) {
var i, o = e[a];
switch (r) {
case MatchCriteria.Property:
i = o.Property || o.Match;
break;
case MatchCriteria.Category:
i = o.Category || o.Match;
break;
case MatchCriteria.Literal:
i = o.Match
}
n[i] ? n[i].Frequency += 1 : n[i] = {
Frequency: 1,
FirstMatchObject: o
}
}
var l = [];
for (var s in n) l.push(n[s]);
var c = l.sort((function(e, r) {
return r.Frequency - e.Frequency
})),
u = c.length;
if (u <= 1) return null;
if (r === MatchCriteria.Property)
for (a = 0; a < u; ++a) {
if (c[a].FirstMatchObject.ParentProperty in n) return c[a].FirstMatchObject
}
return c[0].Frequency > c[1].Frequency ? c[0].FirstMatchObject : void 0
}
var n = e.length;
if (0 === n) return null;
if (1 === n) return e[0];
var a = firstMatchOfMostFrequentlyOccurringStringFromMatches(e, MatchCriteria.Property);
return a || ((a = firstMatchOfMostFrequentlyOccurringStringFromMatches(e, MatchCriteria.Category)) ? a : e.sort((function(e, r) {
return e.Priority - r.Priority
}))[0])
},
_bestMatchForElement: function(e, r, t = !1) {
if (!e) return null;
var n = this._matchesForElement(e, r, t);
return this._bestMatchFromMatches(n, e, r)
},
_labelForElementIfElementAndLabelAreOnlyElementsOfTheirKindAmongSiblingElements: function(e) {
for (var r = null, t = e.tagName, n = siblingsIncludingSelfForElement(e), a = n.length, i = 0; i < a; ++i) {
var o = n[i];
if (e !== o) {
if (t === o.tagName) return null;
if (this._isLabelElement(o)) {
if (r) return null;
r = o
}
}
}
return r
},
_ariaLabelForElementOrParentOfElement: function(e) {
var r = e;
for (var t = 0; t < 3 && r; ++t) {
let e = r.getAttribute("aria-label");
if (e && !r.isHiddenFromAccessibilityTree()) return e;
r = r.parentElementIncludingShadowDOMHost()
}
return null
},
_cachedOneTimeCodePatternMatcher: function() {
return this._cachedPatternMatchers("oneTimeCodeFieldLabelPatternMatchers")[0]
},
_cachedPatternMatchers: function(e) {
let r = "_" + e,
t = this[r];
return t || (this[r] = FormMetadataJSController[e], t = this[r]), t
},
_cachedElementPatternMatch: function(e, r, t) {
var n = r + "_wasVisible",
a = e[n];
if (!0 === a) return e[r];
var i = e.isVisible();
if (a === i) return e[r];
e[n] = i;
let o = this._cachedPatternMatchers(t);
return e[r] = this._bestMatchForElement(e, o), e[r]
},
_isLabeledUsernameField: function(e) {
return !!this._isAutoFillableTextField(e) && null !== this._cachedElementPatternMatch(e, "_usernameFieldPatternMatch", "usernameFieldLabelPatternMatchers")
},
_isLabeledLoginField: function(e) {
return !!this._isAutoFillableTextField(e) && null !== this._cachedElementPatternMatch(e, "_loginFieldPatternMatch", "loginFormTypePatternMatchers")
},
_isLabeledSignUpField: function(e) {
return !!this._isAutoFillableTextField(e) && null !== this._cachedElementPatternMatch(e, "_signUpFieldPatternMatch", "newAccountFormTypePatternMatchers")
},
_isLabeledEmailField: function(e) {
return !!this._isAutoFillableTextField(e) && ("email" === e.type || null !== this._cachedElementPatternMatch(e, "_emailFieldPatternMatch", "emailFieldLabelPatternMatchers"))
},
_addressBookLabelForElement: function(e) {
if (!this._isAutoFillableTextField(e) && !this._isAutoFillableSelectElement(e) && !this._isAutoFillableTextAreaElement(e)) return null;
var r = this._cachedElementPatternMatch(e, "_addressBookPatternMatch", "addressBookFieldLabelPatternMatchers");
return r ? r.Match : null
},
_elementDisallowsAutocomplete: function(e) {
var r = e.getAttribute("autocomplete");
return r && "off" === r.toLowerCase()
},
_isTextArea: function(e) {
return e instanceof HTMLTextAreaElement
},
_isSelectElement: function(e) {
return e instanceof HTMLSelectElement
},
_isLabelElement: function(e) {
return e instanceof HTMLLabelElement
},
_isRenderedFormControl: function(e) {
var r = e.localName;
if (!r) return !1;
return r in {
button: !0,
isindex: !0,
fieldset: !0,
legend: !0,
meter: !0,
optgroup: !0,
option: !0,
progress: !0,
select: !0,
textarea: !0
} || e instanceof HTMLInputElement && (!!this._isElementAHiddenUsername(e) || (!e.type || "hidden" !== e.type))
},
_isEditablePlainTextField: function(e) {
return !!isInputElement(e) && (!e.disabled && !e.readOnly && (!e.type || "text" === e.type))
},
_isTextField: function(e) {
if (this._isTextArea(e)) return !0;
if (!isInputElement(e)) return !1;
var r = e.type;
return !r || r in {
date: !0,
"datetime-local": !0,
email: !0,
isindex: !0,
month: !0,
number: !0,
password: !0,
search: !0,
tel: !0,
telephone: !0,
text: !0,
time: !0,
url: !0,
week: !0
}
},
_isAutofocusedTextField: function(e) {
return !!this._isTextField(e) && !0 === e.autofocus
},
_isAutoFilledTextField: function(e) {
return !!this._isTextField(e) && e.matches(":-webkit-autofill")
},
_isSecureTextField: function(e) {
if (!isInputElement(e)) return !1;
if (e._wasPreviouslySecureTextField) return !0;
try {
if (e.matches(":-webkit-autofill-strong-password")) return e._wasPreviouslySecureTextField = !0, !0
} catch (e) {}
const r = getComputedStyle(e, null).getPropertyValue("-webkit-text-security"),
t = e.type;
if ("none" !== r || "password" === t) return e._wasPreviouslySecureTextField = !0, !0;
if (t && "text" !== t) return !1;
const n = e._nextControlInLogicalForm;
return !(!n || !this._looksLikeShowHidePasswordButton(n)) && (!!this._matchesPasswordFieldLabelPattern(e) && (e._wasPreviouslySecureTextField = !0, !0))
},
_looksLikePasswordCredentialField: function(e, r) {
if (!this._isSecureTextField(e)) return !1;
var t = e.getAttribute("maxlength");
return !(t && parseInt(t) < 4) && null === this._cachedElementPatternMatch(e, "_nonAccountPasswordSecureTextEntryFieldPatternMatch", "nonAccountPasswordSecureTextEntryFieldLabelPatternMatchers")
},
_looksLikeShowHidePasswordButton: function(e) {
return !(!this._isCustomFormButton(e) && !this._isCheckboxInputElement(e)) && !!this._cachedElementPatternMatch(e, "_showHideButtonPatternMatch", "showHideButtonLabelPatternMatchers")
},
_isAutoFillable: function(e) {
return !e.disabled && !e.readOnly
},
_isAutoFillableSelectElement: function(e) {
return this._isAutoFillable(e) && this._isSelectElement(e)
},
_isAutoFillableTextAreaElement: function(e) {
return this._isAutoFillable(e) && this._isTextArea(e)
},
_isAutoFillableTextField: function(e) {
return this._isAutoFillable(e) && this._isTextField(e)
},
_looksLikeCreditCardNumberField: function(e, r) {
if (!this._isAutoFillableTextField(e)) return !1;
if (this._cachedElementPatternMatch(e, "_nonCreditCardNumberPatternMatch", "nonCreditCardCardNumberFieldLabelPatternMatchers")) return !1;
if (r && -1 !== r.indexOf("cc-number")) return !0;
const t = e.placeholder;
let n = new RegExp("[0-9]{4}[ -][0-9]{4}[ -][0-9]{4}[ -][0-9]{4}");
if (t && n.test(t)) return !0;
let a = e.getAttribute("data-val-regex-pattern");
if (a) {
if (!new RegExp(a).test("12345")) return !1
}
return null !== this._cachedElementPatternMatch(e, "_creditCardNumberPatternMatch", "creditCardNumberFieldLabelPatternMatchers")
},
_looksLikeCreditCardSecurityCodeField: function(e, r) {
return !!this._isAutoFillableTextField(e) && (!(!r || -1 === r.indexOf("cc-csc")) || null !== this._cachedElementPatternMatch(e, "_creditCardSecurityCodePatternMatch", "creditCardSecurityCodeFieldLabelPatternMatchers"))
},
_looksLikeCreditCardCardholderField: function(e, r) {
return !!this._isEditablePlainTextField(e) && (!(!r || -1 === r.indexOf("cc-name")) || null !== this._cachedElementPatternMatch(e, "_creditCardCardholderPatternMatch", "creditCardCardholderFieldLabelPatternMatchers"))
},
_looksLikeCreditCardCompositeExpirationDateField: function(e, r) {
return !(!this._isAutoFillableTextField(e) || this._isSecureTextField(e)) && (!(!r || -1 === r.indexOf("cc-exp")) || null !== this._cachedElementPatternMatch(e, "_creditCardCompositeExpirationDateFieldPatternMatch", "creditCardCompositeExpirationDateFieldLabelPatternMatchers"))
},
_looksLikeCreditCardTypeField: function(e, r) {
return !(!this._isSelectElement(e) && !isRadioButtonElement(e)) && (!(!r || -1 === r.indexOf("cc-type")) || null !== this._cachedElementPatternMatch(e, "_creditCardTypePatternMatch", "creditCardTypeFieldLabelPatternMatchers"))
},
_looksLikeDayField: function(e) {
return !(!this._isAutoFillableTextField(e) && !this._isAutoFillableSelectElement(e)) && null !== this._cachedElementPatternMatch(e, "_dayFieldPatternMatch", "dayFieldLabelPatternMatchers")
},
_looksLikeMonthField: function(e, r) {
if (!this._isAutoFillableTextField(e) && !this._isAutoFillableSelectElement(e)) return !1;
if (r && -1 !== r.indexOf("cc-exp-month")) return !0;
if (null !== this._cachedElementPatternMatch(e, "_monthFieldPatternMatch", "monthFieldLabelPatternMatchers")) return !0;
if ("select" !== this._getTagName(e).toLowerCase()) return !1;
var t = e.options.length;
if (12 === t || 13 === t)
for (var n = [selectElementOptionsSequenceAnalysis(e, "text"), selectElementOptionsSequenceAnalysis(e, "value")], a = n.length, i = 0; i < a; i++) {
var o = n[i],
l = o.lengthOfLongestSequence,
s = o.lastNumberInSequence;
if (l >= 11 && 12 === s) return !0
}
return !1
},
_looksLikeYearField: function(e, r) {
if (!this._isAutoFillableTextField(e) && !this._isAutoFillableSelectElement(e)) return !1;
if (r && -1 !== r.indexOf("cc-exp-year")) return !0;
if (null !== this._cachedElementPatternMatch(e, "_yearFieldPatternMatch", "yearFieldLabelPatternMatchers")) return !0;
if ("select" !== this._getTagName(e).toLowerCase()) return !1;
var t = selectElementOptionsSequenceAnalysis(e, "text"),
n = t.lengthOfLongestSequence,
a = t.lastNumberInSequence;
return n >= e.options.length - 3 && 1e3 < a && a < 3e3
},
_looksLikeOneTimeCodeField: function(e, r, t, n, a, i) {
if (!this._isAutoFillableTextField(e) && !this._isAutoFillableSelectElement(e)) return !1;
if (r && -1 !== r.indexOf("one-time-code")) return !0;
const o = e.type;
if ("password" === o) {
if (/^(.+\.)?chase\.com\.?$/.test(document.location.hostname)) return !1;
if (this._matchesPasswordFieldLabelPattern(e)) return !1
}
if (/^(.+\.)?amazon\.(com|ae|com\.au|com\.br|ca|fr|de|in|it|com\.mx|nl|es|com\.tr|co\.uk|sa|sg|se|pl)\.?$/.test(document.location.hostname)) {
const r = /claim|promo/i;
if (r.test(e.id) || r.test(e.name)) return !1
}
if (null !== this._cachedElementPatternMatch(e, "_oneTimeCodePatternMatch", "oneTimeCodeFieldLabelPatternMatchers")) return !0;
var l = e.getAttribute("maxlength");
if (l && parseInt(l) > 10) {
if (!a) return !1;
if (i.ControlLooksLikeIgnoredDataTypeField || i.ControlLooksLikeCreditCardCardholderField || i.ControlLooksLikeCreditCardNumberField || i.ControlLooksLikeCreditCardSecurityCodeField || i.ControlLooksLikeCreditCardTypeField || i.AddressBookLabel) return !1
}
let s = e.pattern;
if (s) {
let e = new RegExp(s);
if ((e.testMatchesEntireString("1234") || e.testMatchesEntireString("123456") || e.testMatchesEntireString("12345678")) && !e.testMatchesEntireString("a") && !e.testMatchesEntireString("A")) return !0
}
const c = "number" === o || "tel" === o,
u = l ? parseInt(l) : void 0;
if (1 === u && (c || t || n)) return !0;
const p = null !== this._cachedElementPatternMatch(e, "_weakOneTimeCodePatternMatch", "weakOneTimeCodeFieldLabelPatternMatchers");
if (c && p) return !0;
const d = e.placeholder;
if (d && p && /^[#]+$/.test(d.replace(/ /g, ""))) return !0;
if ((4 === u || 6 === u) && p) return !0;
if (7 === u && d && /\d{3} \d{3}/.test(d)) return !0;
if (this._isAutofocusedTextField(e)) {
if (p) return !0;
if ("0" === e.min && "9" === e.max) return !0
}
if (a) {
let r = 0;
p && r++, t && r++, n && r++;
const a = this._cachedOneTimeCodePatternMatcher(),
i = this._logicalFormForControl(e);
if (i) {
const e = i.backingElement;
if (e) {
const t = e.querySelector("h1, h2, h3");
t && this._matchPatternAgainstString(a, t.innerText) && r++
}
}
if (r >= 2) return !0;
const o = function(e) {
if (this._matchPatternAgainstString(a, e)) return !0;
const r = e.replaceAll("-", " ");
return e !== r && this._matchPatternAgainstString(a, r)
}.bind(this),
l = window.location.protocol,
s = "http:" === l || "https:" === l,
c = lastPathComponentFromAnchor(window.location);
if (s && c && o(c)) return !0;
{
const e = document.querySelector("link[rel=canonical]"),
r = e ? lastPathComponentForURLString(e.href) : null;
if (r && o(r)) return !0
}
if (this._matchFromPageScanBeforeElement(a, e, document.body)) return !0
}
return !1
},
_looksLikeIgnoredDataTypeField: function(e) {
return !!this._isAutoFillableTextField(e) && null !== this._cachedElementPatternMatch(e, "_ignoredDataTypePatternMatch", "ignoredDataTypeFieldLabelPatternMatchers")
},
_collectTextSample: function(e) {
if (!e) return "";
var r, t = "",
n = e;
do {
r = (t = n.innerText.replace(/\s+/g, " ").trim()).length, n = n.parentElementIncludingShadowDOMHost()
} while (r < 300 && n);
return r > 300 && (t = t.substr(0, 300)), t
},
_explicitMaxLength: function(e) {
var r = e.getAttribute("maxlength");
return r ? parseInt(r) : void 0
},
_explicitMinLength: function(e) {
let r = e.getAttribute("minlength");
return r ? parseInt(r) : void 0
},
_observedMaxLength: function(e) {
if ("password" !== e.type) return null;
const r = e.getAttribute("ng-pattern");
if (!r) return null;
if (!r.startsWith("/") || !r.endsWith("/")) return null;
let t;
try {
t = new RegExp(r.substr(1, r.length - 2))
} catch (e) {
return null
}
if (!t || "/(?:)/" === t.toString()) return null;
let n, a = "a1Abbb",
i = !1;
for (; a.length <= 20;) {
let e = t.test(a);
if (i && !e) return n;
e && (i = !0, n = a.length), a += "b"
}
return null
},
_collectControlMetadata: function(e, r, t, n, a, i, o) {
var l = {
ControlTagName: this._getTagName(e),
ControlFieldName: this._getNameOrId(e),
ControlUniqueID: this.controlUniqueID(e)
};
e === innermostActiveElement() && (l.ControlIsActiveElement = !0), this._isAutoFilledTextField(e) && (l.ControlIsAutoFilledTextField = !0), e.disabled && (l.ControlIsDisabled = !0), e.readOnly && (l.ControlIsReadOnly = !0), this._isTextField(e) && (l.ControlIsTextField = !0), this._isSecureTextField(e) && (l.ControlIsSecureTextField = !0), this._isLabeledUsernameField(e) && (l.ControlIsLabeledUsernameField = !0), this._elementDisallowsAutocomplete(e) && (l.DisallowsAutocomplete = !0), this._isAutofocusedTextField(e) && (l.ControlIsAutofocusedTextField = !0);
const s = e.className;
s && s.length && (l.ControlFieldClass = s);
const c = e.id;
c && c.length && (l.ControlFieldID = c);
const u = e.value;
u && (l.ControlValue = u);
const p = this._associatedUsernameForControl(e);
p && (l.ControlAssociatedUsername = p);
const d = e.maxLength;
if (-1 !== d) l.ControlMaxLength = d;
else {
const r = this._observedMaxLength(e);
r && (l.ControlMaxLength = r)
}
const f = this._explicitMinLength(e);
f && f > 0 && (l.ControlMinLength = f);
const m = e.size;
m > 0 && (l.ControlSize = m), e.isVisible() && (l.IsVisible = !0);
const v = this.controlCategory(e);
v && v.length && (l.ControlCategory = v), isDateTimeInputElement(e) && (l.ControlRequiredFormatForDateTimeInput = this._requiredFormatForDateTimeInput[e.type]);
var w = autocompleteTokens(e);
if (w && (l.AutocompleteTokens = w, -1 !== w.indexOf("username") ? l.ControlClaimsToBeUsernameViaAutocompleteAttribute = !0 : -1 !== w.indexOf("current-password") ? l.ControlClaimsToBeCurrentPasswordViaAutocompleteAttribute = !0 : -1 !== w.indexOf("new-password") && (l.ControlClaimsToBeNewPasswordViaAutocompleteAttribute = !0)), this._looksLikePasswordCredentialField(e) && (l.ControlLooksLikePasswordCredentialField = !0, "function" == typeof this._collectExtraControlMetadata && this._collectExtraControlMetadata(e, l), l.IsVisible && !t && (l.IsVisible = !isElementPositionedToBeEffectivelyInvisible(e))), l.ControlIsActiveElement || 1 !== r) {
const r = this._collectSelectElementInfo(e);
r && (l.SelectElementInfo = r);
var y = placeholderInfoForElement(e);
y && !y.AttributeMatchedWasValue && (l.ControlPlaceholder = y.Text), this._looksLikeIgnoredDataTypeField(e) ? l.ControlLooksLikeIgnoredDataTypeField = !0 : this._looksLikeCreditCardCardholderField(e, w) ? l.ControlLooksLikeCreditCardCardholderField = !0 : this._looksLikeCreditCardNumberField(e, w) ? l.ControlLooksLikeCreditCardNumberField = !0 : this._looksLikeCreditCardSecurityCodeField(e, w) ? l.ControlLooksLikeCreditCardSecurityCodeField = !0 : this._looksLikeCreditCardTypeField(e, w) && (l.ControlLooksLikeCreditCardTypeField = !0), this._looksLikeMonthField(e, w) ? l.ControlLooksLikeMonthField = !0 : this._looksLikeYearField(e, w) ? l.ControlLooksLikeYearField = !0 : this._looksLikeDayField(e) ? l.ControlLooksLikeDayField = !0 : !l.ControlLooksLikeCreditCardSecurityCodeField && this._looksLikeCreditCardCompositeExpirationDateField(e, w) && (l.ControlLooksLikeCreditCardCompositeExpirationDateField = !0)
}
if (1 === r || l.ControlLooksLikeIgnoredDataTypeField || l.ControlIsSecureTextField || l.ControlLooksLikeCreditCardNumberField || l.ControlLooksLikeCreditCardSecurityCodeField || l.ControlLooksLikeCreditCardTypeField || (l.AddressBookLabel = this._addressBookLabelForElement(e)), l.ControlIsActiveElement || 2 === r || o) {
let r = i && l.IsVisible;
this._looksLikeOneTimeCodeField(e, w, n, a, r, l) && (l.ControlLooksLikeOneTimeCodeField = !0)
}
return l
},
_usesGeneratedPassword: function(e) {
for (var r = !1, t = this._elementsWithGeneratedPasswords.length, n = 0; n < t; ++n) {
var a = this._elementsWithGeneratedPasswords[n];
if (e.containsControl(a)) {
if (a.value !== this._generatedPasswords[n]) return !1;
r = !0
}
}
return r
},
_associatedUsernameForControl: function(e) {
return this._isAutoFillableTextField(e) ? e.getAttribute("data-username") : null
},
_collectSelectElementInfo: function(e) {
if (!this._isAutoFillableSelectElement(e)) return null;
if (!e.options.length) return null;
for (var r = [], t = e.options, n = t.length, a = 0; a < n; ++a) {
var i = t[a];
i.disabled || (i.label || i.text) && r.push([a, i.label ? i.label : i.text])
}
return r.length ? r : null
},
_stringsToInspectForDeterminingFormType: function(e) {
let r = [],
t = e.formElement,
n = t.getAttribute("id"),
a = t.getAttribute("name");
n && r.push(n), a && r.push(a);
let i = queryAllBySelector(t, "legend");
1 === i.length && r.push(i[0].innerText);
let o = 0;
for (let e of this._forms) e.formElement.isVisible() && o++;
if (1 === o && t.isVisible() && !t.ownerDocument.defaultView.frameElement && t.getBoundingClientRect().top < .8 * document.documentElement.clientHeight) {
let e = documentTitleWithoutHostNamePrefix();
e && r.push(e);
const t = lastPathComponentFromAnchor(window.location);
t && t.length && r.push(t)
}
let l = [];
if (t.isVisible()) {
let e = t.getBoundingClientRect(),
n = !1;
for (let a = 0, i = t; a <= 2 && i; ++a, i = i.parentElementIncludingShadowDOMHost()) {
let t = Array.prototype.slice.call(queryAllBySelector(i, "h1, h2, h3, [class*='header' i]")),
a = [
[],
[],
[],
[]
];
for (headerElement of t) {
let e = headerElement.tagName;
"H1" === e ? a[0].push(headerElement) : "H2" === e ? a[1].push(headerElement) : "H3" === e ? a[2].push(headerElement) : a[3].push(headerElement)
}
let o = !0;
for (headerElementsOfType of a) {
let t = headerElementsOfType.length;
if (0 === t) {
o = !1;
continue
}
if (t > 1) break;
let a = headerElementsOfType[0];
if (!a.isVisible()) break;
let i = a.getBoundingClientRect();
e.left <= i.left && i.right <= e.right && i.distanceToRect(e) < 100 && (r.push(a.innerText), n = !0);
break
}
if (o) break
}
if (!n) {
let t = queryAllBySelector(document.documentElement, "h1");
if (1 === t.length) {
let n = t[0],
a = n.getBoundingClientRect();
e.left <= a.left && a.right <= e.right && a.distanceToRect(e) < 100 && r.push(n.innerText)
}
}
for (let r = 0, n = t; r <= 2 && n; ++r, n = n.parentElementIncludingShadowDOMHost()) {
let r = Array.prototype.slice.call(queryAllBySelector(n, "button, input[type=submit]")).filter((function(r) {
if (!r.isVisible()) return !1;
let n = r.getBoundingClientRect();
return n.top > e.bottom && !t.contains(r) && e.left <= n.left && n.right <= e.right && n.distanceToRect(e) < 100
}));
if (r.length) {
l = r;
break
}
}
}
let s = !1,
c = [],
u = e.elements.concat(l);
for (const e of u) {
const t = e.type;
"password" === t && (s = !0), "submit" !== t && "button" !== t || s && (e.isVisible() ? this._addInterestingStringsForButton(e, r) : c.push(e))
}
if (0 === r.length)
for (control of c) this._addInterestingStringsForButton(control, r);
return r
},
_addInterestingStringsForButton: function(e, r) {
const t = e.getAttribute("id");
t && r.push(t);
const n = e.getAttribute("value");
n && r.push(n);
const a = e.innerText;
a && a.length > 0 && r.push(a)
},
_autoFillFormTypeOfTypesUsingKeywordMatching: function(e, r, t, n) {
for (var a = r.length, i = [], o = 0; o < a; ++o) {
var l = (0, mapOfFormTypeToProducerOfAssociatedKeywords[r[o]])();
i.push(l)
}
var s = this._stringsToInspectForDeterminingFormType(e),
c = this._keywordsIndicatingNonAutoFillableFormType;
c || (c = FormMetadataJSController.keywordsIndicatingNonAutoFillableFormType, this._keywordsIndicatingNonAutoFillableFormType = c);
var u = c.length,
p = [];
for (o = 0; o < a; ++o) p.push(0);
if (n)
for (const [e, t] of Object.entries(n)) p[r.indexOf(parseInt(e))] += t;
for (var d = s.length, f = 0; f < d; ++f) {
for (var m = s[f].toLowerCase(), v = 0; v < u; ++v)
if (-1 !== m.indexOf(c[v])) return 2;
for (o = 0; o < a; ++o) {
l = i[o];
for (var w in l) - 1 !== m.indexOf(w) && (p[o] += l[w])
}
}
for (let t = 0; t < a; ++t) {
const n = this._mapOfFormTypeToExtraScoreProducer[r[t]];
p[t] += n(e)
}
for (o = 0; o < a; ++o) 0 !== p[o] && 0;
var y = formActionAsAnchorElement(e.formElement, !0);
if (y) {
var h = y.pathname.toLowerCase() + y.search.toLowerCase();
for (o = 0; o < a; ++o) {
l = i[o];
for (var w in l) - 1 !== h.indexOf(w) && (p[o] += l[w])
}
}
var E = [],
M = 0;
for (o = 0; o < a; ++o) {
var S = p[o];
S > 0 && (S >= M ? (M = S, E.unshift(o)) : E.push(o))
}
if (1 === E.length) return r[E[0]];
if (E.length > 1) {
var g = E[0];
if (p[g] > p[E[1]]) return r[g]
}
return t
},
_matchesNonUsernameFieldLabelPattern: function(e) {
if (this._nonUsernameFieldPatternMatchers || (this._nonUsernameFieldPatternMatchers = FormMetadataJSController.nonUsernameFieldLabelPatternMatchers), this._bestMatchForElement(e, this._nonUsernameFieldPatternMatchers)) return !0;
const r = e.value;
if (!e.id && !e.name && r && e.disabled)
for (const e of this._nonUsernameFieldPatternMatchers)
if (this._matchPatternAgainstString(e, r)) return !0;
return !1
},
_matchSearchFieldLabelPattern: function(e) {
if (this._searchFieldLabelPatternMatchers || (this._searchFieldLabelPatternMatchers = FormMetadataJSController.searchFieldLabelPatternMatchers), this._bestMatchForElement(e, this._searchFieldLabelPatternMatchers, !0)) return !0;
const r = e.value;
if (!e.id && !e.name && r && e.disabled)
for (const e of this._searchFieldLabelPatternMatchers)
if (this._matchPatternAgainstString(e, r)) return !0;
return !1
},
_matchesNonEmailFieldLabelPattern: function(e) {
return this._nonEmailFieldPatternMatchers || (this._nonEmailFieldPatternMatchers = FormMetadataJSController.nonEmailFieldLabelPatternMatchers), !!this._bestMatchForElement(e, this._nonEmailFieldPatternMatchers)
},
_scoreForUsernameFieldCandidateFromLabelingAndPositionOfField: function(e, r, t) {
return this._isLabeledUsernameField(e) ? r ? 4 : 6 : this._isLabeledEmailField(e) && !this._matchesNonEmailFieldLabelPattern(e) ? r ? 3 : 5 : t ? 2 : 1
},
_scoreForUsernameFieldCandidate: function(e, r, t) {
var n = this._scoreForUsernameFieldCandidateFromLabelingAndPositionOfField(e, r, t);
return e.isVisible() && (n += .5), this._matchesNonUsernameFieldLabelPattern(e) && (n -= 2), this._matchSearchFieldLabelPattern(e) && (n -= 1.5), e.readOnly && (n -= .5), e.id || e.name || (n -= 1), n
},
_matchesPasswordFieldLabelPattern: function(e) {
return this._passwordFieldPatternMatchers || (this._passwordFieldPatternMatchers = FormMetadataJSController.passwordFieldLabelPatternMatchers), !!this._bestMatchForElement(e, this._passwordFieldPatternMatchers)
},
_matchesConfirmPasswordFieldLabelPattern: function(e, r = !1) {
return this._confirmPasswordFieldPatternMatchers || (this._confirmPasswordFieldPatternMatchers = FormMetadataJSController.confirmPasswordFieldLabelPatternMatchers), !!this._bestMatchForElement(e, this._confirmPasswordFieldPatternMatchers, r)
},
_matchesConfirmEmailFieldLabelPattern: function(e) {
return !!this._isLabeledEmailField(e) && (this._confirmEmailFieldPatternMatchers || (this._confirmEmailFieldPatternMatchers = FormMetadataJSController.confirmEmailFieldLabelPatternMatchers), !!this._bestMatchForElement(e, this._confirmEmailFieldPatternMatchers))
},
_collectRadioButtonInfo: function(e, r) {
var t = e.radioButtonsWithName(r),
n = t.length;
function addTrimmedStringToArray(e, r) {
var t = e.trim();
t && r.push(t)
}
function addImageInfoToRadioButtonInfo(e, r) {
addTrimmedStringToArray(e.alt, r), addTrimmedStringToArray(e.title, r), addTrimmedStringToArray(lastPathComponentForURLString(e.src), r)
}
function radioButtonInfoFromLabelElement(e) {
let r = [];
addTrimmedStringToArray(e.innerText, r);
let t = queryAllBySelector(e, "img"),
n = t.length;
for (let e = 0; e < n; ++e) addImageInfoToRadioButtonInfo(t[e], r);
return r.length ? r : null
}
for (var a = !1, i = {}, o = 0; o < n; ++o) {
i[(p = t[o]).value] = [p.value];
for (var l = this._labelsForElement(p), s = l.length, c = 0; c < s; ++c) {
a = !0;
var u = radioButtonInfoFromLabelElement(l[c]);
u && (i[p.value] = i[p.value].concat(u))
}
}
if (a) return i;
for (o = 0; o < n; ++o) {
for (var p, d = "", f = (p = t[o]).traverseNextNode(); f && !this._isRenderedFormControl(f); f = f.traverseNextNode()) {
var m = f.localName;
if ("td" === m || "tr" === m || "ul" === m || "ol" === m || "dl" === m) break;
if (f instanceof HTMLImageElement) addImageInfoToRadioButtonInfo(f, i[p.value]);
else if (f.nodeType === Node.TEXT_NODE) {
var v = f.nodeValue.trim();
if (v && (d += v.substr(0, 64 - d.length)), d.length >= 64) break
}
}
d && i[p.value].push(d)
}
return i
},
_bestUsernameFieldCandidate: function(e, r, t) {
var n = r.FormControls,
a = n.filter((function(e) {
return e.ControlClaimsToBeUsernameViaAutocompleteAttribute
}));
if (1 === a.length) return a[0];
for (var i = 0, o = [], l = !1, s = n.indexOf(t), c = n.length, u = 0; u < c; ++u) {
var p = n[u];
if (p === t) {
l = !0;
continue
}
if (!p.ControlIsTextField || p.ControlIsSecureTextField) continue;
if (r.IsVisible && !n[u].IsVisible && !p.ControlValue) continue;
const a = 100;
let m = e[u];
if (!(m.value.length > a)) {
var d = u + 1 < c && u + 1 === s,
f = this._scoreForUsernameFieldCandidate(m, l, d);
f > i ? (o = [u], i = f) : f === i && o.push(u)
}
}
var m = o.length;
if (i < 3 && m > 1) return null;
if (i < 1) return null;
switch (m) {
case 0:
return null;
case 1:
return n[o[0]];
default:
var v = e[s].getBoundingClientRect(),
w = {};
return o.forEach((function(r) {
w[r] = v.distanceToRect(e[r].getBoundingClientRect())
})), n[o.sort((function(e, r) {
return w[e] - w[r]
}))[0]]
}
},
_autoFillFormTypeFromCandidateFormTypes: function(e, r, t) {
switch (r.length) {
case 1:
return r[0];
case 2:
return this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [r[0], r[1]], t);
default:
return 1
}
},
_shouldTrustElementThatClaimsToBeCurrentPasswordViaAutocompleteAttribute: function(e) {
return !e.dataset.valRegexPattern
},
_identifyFormTypeAndPasswordFieldIndicesFromAutocompleteAttributes: function(e, r) {
const t = [null, null];
var n = r.length;
if (n > 3) return t;
for (var a = [], i = [], o = 0; o < n; ++o) {
var l = r[o];
l.ControlClaimsToBeCurrentPasswordViaAutocompleteAttribute && this._shouldTrustElementThatClaimsToBeCurrentPasswordViaAutocompleteAttribute(e[o]) ? a.push(o) : l.ControlClaimsToBeNewPasswordViaAutocompleteAttribute && i.push(o)
}
var s = a.length,
c = i.length;
if (s + c !== n) return t;
switch (n) {
case 0:
return t;
case 1:
if (s) return [
[3], {
PasswordFieldIndex: a[0]
}
];
if (c) return [null, null, 4];
case 2:
if (1 === s && 1 === c) return [
[5], {
OldPasswordFieldIndex: a[0],
PasswordFieldIndex: i[0]
}
];
if (0 === s && 2 === c) return [
[4, 5], {
PasswordFieldIndex: i[0],
ConfirmationFieldIndex: i[1]
}
];
break;
case 3:
if (1 === s && 2 === c) return [
[5], {
OldPasswordFieldIndex: a[0],
PasswordFieldIndex: i[0],
ConfirmationFieldIndex: i[1]
}
]
}
return t
},
_identifyPasswordFieldIndices: function(e, r) {
var t = e.length;
if (0 === t) return {};
if (1 === t) return {
PasswordFieldIndex: 0
};
if (this._oldPasswordPatternMatchers || (this._oldPasswordPatternMatchers = FormMetadataJSController.oldPasswordFieldLabelPatternMatchers), 2 === t) {
return this._bestMatchForElement(r[0], this._oldPasswordPatternMatchers) ? {
OldPasswordFieldIndex: 0,
PasswordFieldIndex: 1
} : this._bestMatchForElement(r[1], this._oldPasswordPatternMatchers) ? {
OldPasswordFieldIndex: 1,
PasswordFieldIndex: 0
} : {
PasswordFieldIndex: 0,
ConfirmationFieldIndex: 1
}
}
return this._bestMatchForElement(r[t - 1], this._oldPasswordPatternMatchers) ? {
PasswordFieldIndex: t - 3,
ConfirmationFieldIndex: t - 2,
OldPasswordFieldIndex: t - 1
} : {
PasswordFieldIndex: t - 2,
ConfirmationFieldIndex: t - 1,
OldPasswordFieldIndex: t - 3
}
},
_removePlaceholderTextForFormMetadata: function(e, r) {
for (var t = e.length, n = 0; n < t; ++n) {
var a = r.FormControls[n];
if (a.ControlValue && a.ControlIsTextField && !a.ControlIsSecureTextField && !a.ControlIsReadOnly) {
var i = legacyPlaceholderInfoForInputElement(e[n]);
i && (i.AttributeMatchedWasValue && a.ControlUniqueID === r.UsernameElementUniqueID || (a.ControlValue = ""))
}
}
},
_isPasswordConfirmPair: function(e, r) {
var t = this._matchesPasswordFieldLabelPattern(e),
n = this._matchesConfirmPasswordFieldLabelPattern(r);
return t && n
},
_trailingArgumentsForCollectControlMetadataFunction: function(e, r, t) {
let n = isElementPositionedToBeEffectivelyInvisible(e.backingElement),
a = !1,
i = !1;
if (innermostActiveElement() || 2 === r) {
let e = this._cachedOneTimeCodePatternMatcher();
a = !!this._matchPatternAgainstString(e, documentTitleWithoutHostNamePrefix()), i = t && !!this._matchPatternAgainstString(e, t.pathname)
}
let o = !1;
for (let r of e.elements)
if (this._isTextField(r) && r.isVisible()) {
if (o) {
o = !1;
break
}
o = !0
} return [n, i, a, o]
},
_collectFormMetadata: function(e, r) {
var t, n, a = (n = 0, {
backwardScanCache: new WeakMap,
forwardScanCache: new WeakMap,
shouldUsePageScan: function() {
return n < 40
},
willStartCollectingMetadataForControl: function() {
t = null
},
reportPageScanUsedSuccessfully: function(e) {
t = !(!e && !t)
},
didFinishCollectingMetadataForControl: function() {
!0 === t ? n = 0 : !1 === t && n++
}
});
this._pageScanContext = a;
var i = e.formElement,
o = {
FormID: e.formUniqueID,
ContainsActiveElement: !1,
FormControls: [],
AutoFillFormType: 1,
UsernameElementUniqueID: void 0,
OldPasswordElementUniqueID: void 0,
PasswordElementUniqueID: void 0,
ConfirmPasswordElementUniqueID: void 0,
UsesGeneratedPassword: this._usesGeneratedPassword(e),
FirstCreditCardCardholderFieldOrCreditCardNumberFieldUniqueID: void 0,
IsVisible: i.isVisible(),
TextSample: void 0,
RequestType: r
};
this._elementDisallowsAutocomplete(i) && (o.DisallowsAutocomplete = !0), i instanceof HTMLFormElement && (o.FormIsSearchForm = this._isSearchForm(i, !0)), e.isAnnotated && (o.Annotations = e.annotations);
var l = i.getAttribute("rel");
l && "async" === l.toLowerCase() && (o.FormUsesRelAsync = !0);
let s = formActionAsAnchorElement(i);
if (s && s.href && (o.FormAction = s.href), 4 == r || 2 == r) {
let e = selectorForElement(i);
e && e.length && (o.LogicalFormElementSelector = e)
}
var c = e.elements,
u = !c.some(this._isSecureTextField.bind(this));
let [p, d, f, m] = this._trailingArgumentsForCollectControlMetadataFunction(e, r, s);
var v = 0,
w = !1,
y = [],
h = [],
E = [],
M = [],
S = void 0,
g = void 0,
k = void 0,
C = void 0,
b = !1,
F = !1,
P = {},
B = [];
let _ = !1;
for (var L = c.length, I = 0; I < L; ++I) {
var A = c[I];
if (u && !A.isVisible() && !A._relatesToCredentials) continue;
var T = isRadioButtonElement(A),
x = A.name;
if (T && P[x]) continue;
a.willStartCollectingMetadataForControl();
const t = !_;
var U = this._collectControlMetadata(A, r, p, d, f, m, t);
if (a.didFinishCollectingMetadataForControl(), _ = !0, I + 1 < L && (U.ControlNextFieldUniqueID = this.controlUniqueID(c[I + 1])), o.FormControls.push(U), B.push(A), U.IsVisible || !o.IsVisible || A._relatesToCredentials)
if (U.ControlIsActiveElement && (o.ContainsActiveElement = !0), x && T) P[x] = 1, U.ControlValue = "", U.RadioButtonInfo = this._collectRadioButtonInfo(e, x);
else if (U.ControlIsTextField || U.SelectElementInfo)
if (!F && U.ControlLooksLikeCreditCardSecurityCodeField && (F = !0), b || !U.ControlLooksLikeCreditCardCardholderField && !U.ControlLooksLikeCreditCardNumberField) {
if (!(U.ControlLooksLikeDayField || U.ControlLooksLikeMonthField || U.ControlLooksLikeYearField || U.ControlLooksLikeCreditCardCompositeExpirationDateField)) {
if (U.ControlLooksLikePasswordCredentialField) {
if (U.ControlLooksLikeCreditCardSecurityCodeField || U.ControlLooksLikeIgnoredDataTypeField) continue;
A.isHiddenFromAccessibilityTree() ? (E.push(A), M.push(U)) : (y.push(A), h.push(U))
}
if (this._isLabeledEmailField(A)) {
if (++v > 2) {
w = !1;
continue
}
if (!(I + 1 < L && this._matchesConfirmEmailFieldLabelPattern(c[I + 1]))) continue;
w = !0
}
}
} else b = !0, o.FirstCreditCardCardholderFieldOrCreditCardNumberFieldUniqueID = U.ControlUniqueID
}!y.length && E.length && (y = E, h = M);
var O, D, R = this._identifyFormTypeAndPasswordFieldIndicesFromAutocompleteAttributes(y, h),
N = R[0],
q = R[1],
z = R[2],
j = q || this._identifyPasswordFieldIndices(h, y);
if (void 0 !== j.PasswordFieldIndex && (S = h[j.PasswordFieldIndex], o.PasswordElementUniqueID = S.ControlUniqueID, g = this._explicitMaxLength(y[j.PasswordFieldIndex])), void 0 !== j.ConfirmationFieldIndex && (k = h[j.ConfirmationFieldIndex], o.ConfirmPasswordElementUniqueID = k.ControlUniqueID, C = this._explicitMaxLength(y[j.ConfirmationFieldIndex])), void 0 !== j.OldPasswordFieldIndex) {
var V = h[j.OldPasswordFieldIndex];
o.OldPasswordElementUniqueID = V.ControlUniqueID
}
if (S && (O = this._bestUsernameFieldCandidate(B, o, S)), O ? o.UsernameElementUniqueID = O.ControlUniqueID : D = this._findHiddenUsernameElement(e, o, B), N) o.AutoFillFormType = this._autoFillFormTypeFromCandidateFormTypes(e, N, N[0]);
else if (1 === y.length && w) o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 5], 4);
else if (o.UsernameElementUniqueID) switch (y.length) {
case 0:
break;
case 1:
if (F && o.UsernameElementUniqueID === o.FirstCreditCardCardholderFieldOrCreditCardNumberFieldUniqueID && h[0].ControlLooksLikeCreditCardNumberField) break;
if (this._matchesConfirmPasswordFieldLabelPattern(y[0])) o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 5], z || 3);
else {
let r = y[0],
t = {},
n = 2 * this._numberOfForgotUserNameEmailOrPasswordAffordancesFollowingElement(r, i);
n && (t[3] = n), o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 3], z || 3, t)
}
break;
case 2:
g === C ? o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 5], 4) : C ? this._isPasswordConfirmPair(y[0], y[1]) ? o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 5], 2) : o.AutoFillFormType = 2 : o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 5], 2);
break;
case 3:
g === C || !C || this._isPasswordConfirmPair(y[j.PasswordFieldIndex], y[j.ConfirmationFieldIndex]) ? o.AutoFillFormType = 5 : o.AutoFillFormType = 2;
break;
default:
o.AutoFillFormType = 2
} else if (2 === y.length || 3 === y.length)
if (g !== C && C) 2 === y.length ? this._isPasswordConfirmPair(y[0], y[1]) ? o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 5], 2) : o.AutoFillFormType = 2 : this._isPasswordConfirmPair(y[j.PasswordFieldIndex], y[j.ConfirmationFieldIndex]) ? o.AutoFillFormType = 5 : o.AutoFillFormType = 2;
else {
let r = {};
this._isPasswordConfirmPair(y[j.PasswordFieldIndex], y[j.ConfirmationFieldIndex]) && (r[5] = 2), o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 5], 5, r)
}
else if (1 === y.length) {
var W = y[0];
if (this._matchesConfirmPasswordFieldLabelPattern(W, !0)) o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [3, 5], 5);
else if (this._matchesPasswordFieldLabelPattern(W))
if (this._isElementFollowedByForgotPasswordAffordance(W, i)) o.AutoFillFormType = 3;
else {
var H = [4, 3, 5];
o.AutoFillFormType = this._autoFillFormTypeOfTypesUsingKeywordMatching(e, H, 2), 2 === o.AutoFillFormType && D && (o.AutoFillFormType = 4)
}
else o.AutoFillFormType = 2
} else 0 !== y.length && (o.AutoFillFormType = 2);
if (1 === o.AutoFillFormType) {
var G = null,
J = null,
X = 0,
$ = B.length;
for (I = 0; I < $; ++I) {
A = B[I];
var Q = o.FormControls[I],
K = Q.IsVisible;
if (K && Q.ControlIsTextField && X++, X > 1) break;
var Z = this._isLabeledEmailField(A);
if (K && (Q.ControlClaimsToBeUsernameViaAutocompleteAttribute || Q.ControlIsLabeledUsernameField || Z || this._isLabeledLoginField(A)) && !this._matchesNonUsernameFieldLabelPattern(A) && !this._matchSearchFieldLabelPattern(A) && !A.readOnly && "INPUT" === A.tagName && !this._isLabeledSignUpField(A)) {
let r = {};
this._isElementFollowedByForgotUserNameOrEmailAffordance(A, i) && (r[3] = 2), 3 === this._autoFillFormTypeOfTypesUsingKeywordMatching(e, [4, 3], Z ? 4 : 3, r) && (G = A, J = Q)
}
const r = Q.AutocompleteTokens;
if (r) {
const e = r.includes("username"),
t = r.includes("webauthn"),
n = e || Z;
(e && t || n) && (G = A, J = Q)
}
}
1 === X && J && !controlAppearsToBePartOfPhotoTaggingInterface(G) && (o.AutoFillFormType = 3, o.UsernameElementUniqueID = J.ControlUniqueID)
}
4 === o.AutoFillFormType && o.FirstCreditCardCardholderFieldOrCreditCardNumberFieldUniqueID === o.UsernameElementUniqueID && (o.UsernameElementUniqueID = void 0), !o.UsernameElementUniqueID && D && this._extractMetadataForHiddenUsernameElement(D, o, B), 3 != o.AutoFillFormType && 4 != o.AutoFillFormType && 5 != o.AutoFillFormType && (o.UsernameElementUniqueID = void 0, o.OldPasswordElementUniqueID = void 0, o.PasswordElementUniqueID = void 0, o.ConfirmPasswordElementUniqueID = void 0), o.IsVisible || 3 == o.AutoFillFormType || 4 == o.AutoFillFormType || 5 == o.AutoFillFormType || (o.AutoFillFormType = 2), 1 !== r && (o.TextSample = this._collectTextSample(e._formElement)), o.FormIsEligibleForAutomaticLogin = this._formIsEligibleForAutomaticLogin(o, e.backingElement);
for (let e of o.FormControls)
if (e.ControlLooksLikeOneTimeCodeField && this._oneTimeCodeIsEligibleForAutomaticLogin(e, o)) {
e.OneTimeCodeIsEligibleForAutomaticLogin = !0;
break
} var Y = FormMetadataJSController.shouldIncludeNonEmptyFields;
if (o.IsVisible)
for (I = ($ = B.length) - 1; I >= 0; --I) this._shouldIncludeControlMetadata(Y, o, B[I], o.FormControls[I]) || (4 !== r ? (o.FormControls.splice(I, 1), B.splice(I, 1)) : o.FormControls[I].WOULD_NORMALLY_NOT_BE_SENT_TO_UI_PROCESS = !0);
return this._removePlaceholderTextForFormMetadata(B, o), delete this._pageScanContext, o
},
_formIsEligibleForAutomaticLogin: function(e, r) {
if (3 !== e.AutoFillFormType) return !1;
let t = !1;
for (const r of e.FormControls) {
const n = r.ControlUniqueID;
if (n === e.UsernameElementUniqueID || n === e.PasswordElementUniqueID) continue;
if (r.ControlIsDisabled) continue;
if (r.ControlIsReadOnly) continue;
if (!r.IsVisible) continue;
const a = this.formControlWithUniqueID(n);
if (!a) continue;
if (this._isTextArea(a)) return !1;
if (this._isSelectElement(a)) return !1;
if (this._isSubmitButton(a)) continue;
if (this._looksLikeShowHidePasswordButton(a)) continue;
if (!isInputElement(a)) continue;
const i = a.type;
if ("button" !== i && "reset" !== i && "submit" !== i) {
if (!this._isCheckboxInputElement(a)) return !1;
if (t) return !1;
t = !0
}
}
return !r || !r.querySelector("iframe[title*=captcha i]")
},
_oneTimeCodeIsEligibleForAutomaticLogin: function(e, r) {
for (const e of r.FormControls) {
if (e.ControlLooksLikeOneTimeCodeField) continue;
if (e.ControlIsDisabled) continue;
if (e.ControlIsReadOnly) continue;
if (!e.IsVisible) continue;
const r = this.formControlWithUniqueID(e.ControlUniqueID);
if (!r) continue;
if (this._isTextArea(r)) return !1;
if (this._isSelectElement(r)) return !1;
if (this._isSubmitButton(r)) continue;
if (this._looksLikeShowHidePasswordButton(r)) continue;
if (!isInputElement(r)) continue;
const t = r.type;
if ("button" !== t && "reset" !== t && "submit" !== t) return !1
}
return !0
},
_shouldIncludeControlMetadata: function(e, r, t, n) {
if (t._relatesToCredentials) return !0;
if (n.IsVisible) {
if (formControlHasBeenClassifiedInAnInterestingWay(n)) return !0;
if (e && n.ControlValue) return !0
}
return !(!r.UsernameElementUniqueID || n.ControlUniqueID !== r.UsernameElementUniqueID)
},
_isElementAHiddenUsername: function(e) {
const r = /user|email/i;
return "hidden" === e.type && (!(!r.test(e.getAttribute("id")) && !r.test(e.getAttribute("name"))) && !!isValidUsernameOrEmail(e.value))
},
_findHiddenUsernameElement: function(e, r, t) {
var n = e.formElement;
if (!(n instanceof HTMLElement)) return;
let a = queryAllBySelector(n, "input"),
i = a.length;
for (let e = 0; e < i; ++e) {
let r = a[e];
if (this._isElementAHiddenUsername(r)) return r
}
return null
},
_extractMetadataForHiddenUsernameElement: function(e, r, t) {
var n = {
ControlTagName: this._getTagName(e),
ControlFieldName: this._getNameOrId(e),
ControlUniqueID: this.controlUniqueID(e),
ControlIsReadOnly: !0,
ControlValue: e.value
};
r.UsernameElementUniqueID = n.ControlUniqueID, r.FormControls.push(n), t.push(e)
},
_usernameFieldForPasswordField: function(e) {
var r = FormMetadataJS._cachedMetadataForLogicalForm(this._logicalFormForControl(e));
return r && r.UsernameElementUniqueID ? FormMetadataJS.formControlWithUniqueID(r.UsernameElementUniqueID) : null
},
_cachedMetadataForLogicalForm: function(e) {
for (var r = -1, t = 0; t < this._forms.length; ++t)
if (this._forms[t].formUniqueID === e.formUniqueID) {
r = t;
break
} if (-1 === r) return null;
var n = this._formMetadata[r],
a = n.FormControls,
i = a.length;
for (t = 0; t < i; ++t) {
var o = a[t],
l = this.formControlWithUniqueID(o.ControlUniqueID);
l && (o.ControlValue = l.value, o.ControlIsAutoFilledTextField = this._isAutoFilledTextField(l))
}
return n.UsesGeneratedPassword = this._usesGeneratedPassword(e), n.Annotations = e.annotations, n
},
_markFormIsBestForPageLevelAutoFill: function() {
var e = this._indexOfFormWithHighestScoreIfGreaterThanZero((function(e) {
var r = e.PasswordElementUniqueID ? 0 : -1;
return function scoreForFormType(e) {
switch (e) {
case 3:
return 30;
case 4:
case 5:
return 20;
case 1:
return 10;
case 0:
case 2:
return 0
}
return -100
}(e.AutoFillFormType) + function scoreForVisibility(e) {
return e ? 50 : 0
}(e.IsVisible) + r
}));
null !== e && (this._formMetadata[e].FormIsBestForPageLevelAutoFill = !0)
},
_markFormIsBestForStreamlinedLogin: function() {
let e = this._indexOfFormWithHighestScoreIfGreaterThanZero((function(e, r) {
if (!e.IsVisible) return 0;
let t = r.getBoundingClientRect();
if (!rectIsWithinDocumentViewport(t)) return 0;
if (t.bottom + window.scrollY < 80) {
let e = !(location.hash || location.pathname && "/" !== location.pathname || location.search),
r = t.width / t.height;
if (!e && r > 4) return 0
}
if (r.closest("footer")) return 0;
let n = 3 === e.AutoFillFormType,
a = 0,
i = e.FormControls,
o = i.length;
for (var l = 0; l < o; ++l) {
let r = i[l];
if (n) {
r.ControlIsAutofocusedTextField && (a += 1);
let t = r.ControlUniqueID;
if (t === e.UsernameElementUniqueID || t === e.PasswordElementUniqueID) {
a += 10;
continue
}
}
r.OneTimeCodeIsEligibleForAutomaticLogin && (a += 5)
}
return a
}));
null !== e && (this._formMetadata[e].FormIsBestForStreamlinedLogin = !0)
},
_indexOfFormWithHighestScoreIfGreaterThanZero: function(e) {
for (var r = null, t = null, n = this._formMetadata.length, a = 0; a < n; ++a) {
var i = e(this._formMetadata[a], this._forms[a].backingElement);
(null === t || i > t) && (r = a, t = i)
}
return t > 0 ? r : null
},
isAnyFormAnnotated: function() {
var e = this._forms;
if (!e) return !1;
for (var r = e.length, t = 0; t < r; ++t)
if (e[t].isAnnotated) return !0;
return !1
},
_logicalFormWithID: function(e) {
for (var r = this._forms, t = r.length, n = 0; n < t; ++n) {
var a = r[n];
if (a.formUniqueID === e) return a
}
return null
},
_indexOfLogicalFormWithID: function(e) {
return this._forms.findIndex((function(r) {
return r.formUniqueID === e
}))
},
clearAnnotationsForFormWithID: function(e) {
var r = this._logicalFormWithID(e);
r && r.clearAnnotations()
},
annotateFormWithID: function(e, r) {
var t = this._logicalFormWithID(e);
t && t.annotate(r)
},
_collectMetadata: function(e) {
var r = this._logicalFormsInPage(100, 10);
this._forms = r, this._formMetadata = [];
for (var t = r.length, n = 0; n < t; ++n) {
2 === e && "function" == typeof willCollectFormMetadata && willCollectFormMetadata();
let t = this._collectFormMetadata(r[n], e);
2 === e && "function" == typeof evaluateCustomJavaScript && (t.ResultFromEvaluatingCustomJavaScript = evaluateCustomJavaScript(r[n], t)), this._formMetadata.push(t)
}
this._markFormIsBestForPageLevelAutoFill(), 0 !== e && this._markFormIsBestForStreamlinedLogin()
},
_collectAndCacheFormMetadata: function(e, r) {
for (var t = this._collectFormMetadata(e, r), n = -1, a = this._forms.length, i = 0; i < a; ++i)
if (this._forms[i].formUniqueID === e.formUniqueID) {
n = i;
break
} return -1 === n ? (this._forms.push(e), this._formMetadata.push(t)) : this._formMetadata[n] = t, t
},
_metadataForFormWithID: function(e) {
for (var r = 0; r < this._formMetadata.length; ++r) {
var t = this._formMetadata[r];
if (t.FormID == e) return t
}
return null
},
_recollectMetadataForFormWithID: function(e) {
const r = this._logicalFormWithID(e);
return r ? this._collectAndCacheFormMetadata(r, 0) : null
},
_fillControlWithGeneratedPassword: function(e, r) {
var t = this._elementsWithGeneratedPasswords.indexOf(e); - 1 === t && (this._elementsWithGeneratedPasswords.push(e), t = this._elementsWithGeneratedPasswords.length - 1), this._generatedPasswords[t] = r, this._autoFillControlWithValue(e, r, !0)
},
fillFormWithPassword: function(e, r, t) {
var n = this._metadataForFormWithID(e);
if (null === n) return null;
const a = n.PasswordElementUniqueID,
i = a ? this.formControlWithUniqueID(a) : void 0,
o = t ? this.formControlWithUniqueID(t) : void 0;
var l = i || o;
const s = a || t;
if (!l) return null;
this._fillControlWithGeneratedPassword(l, r);
let c = n.ConfirmPasswordElementUniqueID;
c || 5 !== n.AutoFillFormType && 4 !== n.AutoFillFormType || (c = (n = this._recollectMetadataForFormWithID(e) || n).ConfirmPasswordElementUniqueID);
let u = c ? this.formControlWithUniqueID(c) : null;
return u ? (this._fillControlWithGeneratedPassword(u, r), [s, c]) : [s]
},
fillFieldWithGeneratedPassword: function(e, r) {
var t = this.formControlWithUniqueID(e);
t && this._isTextField(t) && this._fillControlWithGeneratedPassword(t, r)
},
clearField: function(e) {
var r = this.formControlWithUniqueID(e);
this._clearFormField(r)
},
_clearFormField: function(e) {
if (e)
if (this._isSelectElement(e)) e.selectedIndex = 0;
else if (isDateTimeInputElement(e)) e.value = "";
else if (isRadioButtonElement(e)) {
let r = this._logicalFormForControl(e).radioButtonsWithName(e.name),
t = r.length;
for (let e = 0; e < t; ++e) r[e].checked = !1
} else if (this._isTextField(e) && e.value.length) {
var r = e.matches(":focus");
r || e.dispatchEvent(new Event("focus")), e.dispatchEvent(eventThatBubbles("keydown")), e.value = "", e.dispatchEvent(eventThatBubbles("input")), e.dispatchEvent(eventThatBubbles("keyup")), e.dispatchEvent(eventThatBubbles("change")), r || e.dispatchEvent(new Event("blur"))
}
},
focusFormForStreamlinedLogin: function(e) {
var r = this._metadataForFormWithID(e);
if (null !== r) {
var t = function uniqueControlIDToFocus(e) {
for (const r of e.FormControls) {
const t = r.ControlUniqueID;
if (t === e.UsernameElementUniqueID || t === e.PasswordElementUniqueID || r.ControlLooksLikeOneTimeCodeField) return t
}
}(r);
if (t) {
var n = this.formControlWithUniqueID(t);
rectIsWithinDocumentViewport(n.getBoundingClientRect()) && n.focus()
}
}
},
formsAndMetadata: function(e) {
return visibilityCacheGeneration++, this._collectMetadata(e), [this._forms.map((function(e) {
return e.formElement
})), this._formMetadata]
},
formControlWithUniqueID: function(e) {
return this._controlUniqueIDToControlMap[e]
},
formElementWithFormID: function(e) {
for (var r = 0; r < this._formMetadata.length; ++r) {
if (this._formMetadata[r].FormID === e) return this._forms[r].formElement
}
return null
},
selectIfTextField: function(e) {
this._isTextField(e) && e.select()
},
_getOrCreateCachedMetadataForLogicalForm: function(e, r) {
var t = this._cachedMetadataForLogicalForm(e);
return !t || null != r && 1 === t.RequestType && 1 !== r ? this._collectAndCacheFormMetadata(e, r) : t
},
_getOrCreateLogicalFormForTextFieldOrSelectElement: function(e) {
var r = this._indexInCacheOfLogicalFormContainingControl(e);
if (-1 === r) r = this._forms.length;
else
for (var t = this._formMetadata[r].FormControls, n = t.length, a = e._controlUniqueID, i = 0; i < n; ++i)
if (t[i].ControlUniqueID === a) return this._forms[r];
var o = this._logicalFormsInPage(),
l = o.length;
for (i = 0; i < l; ++i) {
var s = o[i];
if (s.containsControl(e)) {
var c = this._indexOfLogicalFormWithID(s.formUniqueID);
return -1 !== c && (r = c), this._forms[r] = s, this._formMetadata[r] = this._collectFormMetadata(s, 0), this._forms[r]
}
}
return null
},
_cachedMetadataForFormWithTextFieldOrSelectElement: function(e, r) {
if (!this._isTextField(e) && !this._isSelectElement(e)) return null;
var t = this._getOrCreateLogicalFormForTextFieldOrSelectElement(e);
return t ? this._getOrCreateCachedMetadataForLogicalForm(t, r) : null
},
_isAnyPasswordElementUniqueID: function(e, r) {
return e.PasswordElementUniqueID === r || e.ConfirmPasswordElementUniqueID === r || e.OldPasswordElementUniqueID === r
},
_isCurrentPasswordElementUniqueID: function(e, r) {
switch (e.AutoFillFormType) {
case 4:
case 5:
return e.OldPasswordElementUniqueID === r;
default:
return e.PasswordElementUniqueID === r
}
},
_isNewPasswordElementUniqueID: function(e, r) {
switch (e.AutoFillFormType) {
case 4:
case 5:
return e.PasswordElementUniqueID === r || e.ConfirmPasswordElementUniqueID === r;
default:
return !1
}
},
_updateAnnotationsForField: function(e) {
var r = this._getOrCreateLogicalFormForTextFieldOrSelectElement(e);
if (r) {
var t = this._getOrCreateCachedMetadataForLogicalForm(r);
if (t) {
var n = e._controlUniqueID;
this._isCurrentPasswordElementUniqueID(t, n) ? r.annotate({
CurrentPassword: e.value
}) : this._isNewPasswordElementUniqueID(t, n) ? r.annotate({
NewPassword: e.value
}) : t.UsernameElementUniqueID === n && r.annotate({
Username: e.value
}), isCredentialElementUniqueID(t, n) && (e._relatesToCredentials = "" !== e.value)
}
}
},
_removeUnparentedLogicalFormsFromCache() {
for (let e = this._forms.length - 1; e >= 0; --e) this._forms[e].formElement.isConnected || (this._forms.splice(e, 1), this._formMetadata.splice(e, 1))
},
textFieldOrSelectElementMetadata: function(e, r) {
visibilityCacheGeneration++, this._removeUnparentedLogicalFormsFromCache();
var t = [null, null],
n = this._cachedMetadataForFormWithTextFieldOrSelectElement(e, r);
if (!n) return t;
this._pageScanContext = {
backwardScanCache: new WeakMap,
forwardScanCache: new WeakMap
};
let a = this._logicalFormWithID(n.FormID),
i = formActionAsAnchorElement(a.formElement),
[o, l, s, c] = this._trailingArgumentsForCollectControlMetadataFunction(a, r, i);
var u = this._collectControlMetadata(e, 0, o, l, s, c, !0);
return delete this._pageScanContext, u.ControlLooksLikeOneTimeCodeField && this._oneTimeCodeIsEligibleForAutomaticLogin(u, n) && (u.OneTimeCodeIsEligibleForAutomaticLogin = !0), u.SelectionStart = e.selectionStart, u.SelectionLength = e.selectionEnd - e.selectionStart, 3 === r && (!n.UsernameElementUniqueID && this._isAnyPasswordElementUniqueID(n, u.ControlUniqueID) && a.isAnnotated && a.annotate({
Username: null
}), this._updateAnnotationsForField(e)), t[0] = u, t[1] = n, t
},
disableSpellCheckInFieldIfNeeded: function(e) {
if (e) {
var r = this.formControlWithUniqueID(e);
r && this._isAutoFillableTextField(r) && FormMetadataJSController.setInputElementSpellCheckEnabled(r, !1)
}
},
selectionRangeInField: function(e) {
var r = this.formControlWithUniqueID(e);
return r && this._isTextField(r) ? [r.selectionStart, r.selectionEnd - r.selectionStart] : null
},
setFormFieldSelection: function(e, r, t) {
var n = this.formControlWithUniqueID(e);
n && this._isTextField(n) && (n.selectionStart = r, n.selectionEnd = r + t)
},
replaceFormFieldRangeAndSelectTail: function(e, r, t, n, a) {
var i = this.formControlWithUniqueID(e);
if (i && this._isTextField(i)) {
var o = i.value,
l = o.substr(0, r) + n + o.substr(r + t);
i.value = l, i.selectionStart = a, i.selectionEnd = l.length, i.dispatchEvent(eventThatBubbles("input")), i.dispatchEvent(eventThatBubbles("change"))
}
},
_collectVisibleNonEmptyTextFieldsAndTextAreasInForm: function(e, r, t) {
visibilityCacheGeneration++;
for (var n = e.elements, a = n.length, i = 0; i < a; ++i) {
var o = n[i];
o.isVisible() && (null != o.value && o.value.length && (this._isTextField(o) ? r.push(o) : this._isTextArea(o) && t.push(o)))
}
},
visibleNonEmptyFormTextControls: function() {
var e = [],
r = [];
let t = queryAllBySelector(document, "form");
for (let n = 0; n < t.length; ++n) this._collectVisibleNonEmptyTextFieldsAndTextAreasInForm(t[n], e, r);
return [e, r]
},
visibleNonEmptyFormTextControlsInForm: function(e) {
var r = [],
t = [];
return this._collectVisibleNonEmptyTextFieldsAndTextAreasInForm(e, r, t), [r, t]
},
_autoFillRadioButton: function(e, r, t) {
for (var n = this._logicalFormForControl(e).radioButtonsWithName(e.name), a = n.length, i = 0; i < a; ++i) {
var o = n[i];
if (o.value === r) return o.dispatchEvent(eventThatBubbles("click")), o.checked = !0, void FormMetadataJSController.setInputElementAutofilled(o, t)
}
},
_autoFillControlWithValueAndOptions: function(e, r, t, n, a) {
isRadioButtonElement(e) ? this._autoFillRadioButton(e, r, n) : this._isSelectElement(e) ? this._autoFillSelectWithOptionIndex(e, r, n) : (t == ShouldFocusAndBlur.Yes && e.dispatchEvent(new Event("focus")), e.dispatchEvent(eventThatBubbles("keydown")), e.value = r, this._updateAnnotationsForField(e), e.dispatchEvent(eventThatBubbles("input")), e.dispatchEvent(eventThatBubbles("keyup")), e.dispatchEvent(eventThatBubbles("change")), t == ShouldFocusAndBlur.Yes && e.dispatchEvent(new Event("blur")), a ? FormMetadataJSController.setInputElementAutofilledAndObscured(e, r.length && n) : FormMetadataJSController.setInputElementAutofilled(e, r.length && n))
},
_autoFillControlWithValue: function(e, r, t, n) {
this._autoFillControlWithValueAndOptions(e, r, ShouldFocusAndBlur.Yes, t, n)
},
_autoFillSelectWithOptionIndex: function(e, r, t) {
e.dispatchEvent(eventThatBubbles("mousedown")), e.dispatchEvent(new Event("focus")), e.selectedIndex !== r && (e.selectedIndex = r, e.dispatchEvent(eventThatBubbles("input")), e.dispatchEvent(eventThatBubbles("change"))), e.dispatchEvent(eventThatBubbles("mouseup")), e.dispatchEvent(eventThatBubbles("click")), e.dispatchEvent(new Event("blur")), FormMetadataJSController.setInputElementAutofilled(e, t)
},
autoFillOneTimeCodeFieldsWithValue: function(e, r) {
let t = innermostActiveElement();
this._clearFormField(t);
var n = e.split(""),
a = n.length,
i = function(e) {
if (e >= a) return void FormMetadataJSController.finishedAutoFillingOneTimeCode(r);
let t = innermostActiveElement();
var o = t.value + n[e];
this._autoFillControlWithValueAndOptions(t, o, ShouldFocusAndBlur.No, !0, !1), setTimeout(i, 0, e + 1)
}.bind(this);
i(0)
},
_removeGeneratedPasswordForElement: function(e) {
let r = this._elementsWithGeneratedPasswords.indexOf(e); - 1 !== r && (this._elementsWithGeneratedPasswords.splice(r, 1), this._generatedPasswords.splice(r, 1))
},
_shouldSelectElementAfterFillingForm: function(e) {
if (!/(^|\.)etrade\.com/.test(document.location.hostname)) return !0;
var r = this._cachedMetadataForLogicalForm(e);
return !r || 3 !== r.AutoFillFormType
},
autoFillControlsByID: function(e, r, t, n, a, i) {
const o = arguments[arguments.length - 1];
let l = n;
if (l) {
let e = l.getAttribute("onfocus");
e && e.length && /this\.value/.test(e) && (l = null)
} else l = innermostActiveElement();
var s = null;
for (controlUniqueID in e) {
s = this.formControlWithUniqueID(controlUniqueID)._logicalForm;
break
}
var c = function() {
a ? innermostActiveElement().blur() : l && this._shouldSelectElementAfterFillingForm(s) && this.selectIfTextField(l), FormMetadataJSController.finishedAutoFillingControlsInForm(this._getOrCreateCachedMetadataForLogicalForm(s), o)
}.bind(this);
if (r) {
var u = [];
for (var p in e) e.hasOwnProperty(p) && u.push([this.formControlWithUniqueID(p), e[p]]);
this._synchronouslyAutoFillControls(u, t, c)
} else this._asynchronouslyAutoFillControls(e, s, t, i, c)
},
_synchronouslyAutoFillControls: function(e, r, t) {
for (var n = e.length, a = 0; a < n; ++a) {
var i = e[a][0],
o = e[a][1];
this._autoFillControlWithValue(i, o, r)
}
t()
},
_asynchronouslyAutoFillControls: function(e, r, t, n, a) {
var i = r.elements,
o = i.length,
l = function(r) {
if (r >= o) a();
else {
var s = i[r],
c = e[s._controlUniqueID];
if (void 0 !== c) {
let e = n.some((e => s._controlUniqueID.includes(e)));
this._autoFillControlWithValue(s, c, t, e)
}
setTimeout(l, 0, r + 1)
}
}.bind(this);
l(0)
},
_isInputAllowedInSearchForm: function(e, r) {
var t = this._getTagName(e).toLowerCase();
if ("button" === t || "fieldset" === t) return !0;
if ("select" === t) return !r || isSelectInDefaultState(e);
if ("input" !== t) return !1;
var n = e.type;
return "radio" === n || "checkbox" === n ? !r || isCheckboxOrRadioButtonInDefaultState(e) : "hidden" === n || "reset" === n || "submit" === n || "button" === n || this._isTextField(e) && !this._isSecureTextField(e)
},
_isSearchForm: function(e, r) {
if ("get" !== e.method) return !1;
for (var t = e.elements, n = t.length, a = 0; a < n; ++a)
if (!this._isInputAllowedInSearchForm(t[a], r)) return !1;
return !0
},
_shouldInputBeIncludedInSearchURLQuery: function(e) {
if (e.disabled) return !1;
if (!e.name.length) return !1;
if (!e.value.length) return !1;
if (this._isSelectElement(e)) return !0;
var r = this._getTagName(e).toLowerCase(),
t = e.type;
return "button" === r ? "submit" === t : "input" === r && ("submit" === t || ("checkbox" === t || "radio" === t ? e.checked : "hidden" === t || this._isTextField(e)))
},
_isSubmitButton: function(e) {
return (e instanceof HTMLButtonElement || e instanceof HTMLInputElement) && (e.type && "submit" === e.type)
},
_isCustomFormButton: function(e) {
return "button" === e.type && (e instanceof HTMLButtonElement || e instanceof HTMLInputElement)
},
_isCheckboxInputElement: function(e) {
return "checkbox" === e.type && e instanceof HTMLInputElement
},
_setQueryString: function(e, r) {
var t = document.createElement("a");
return t.href = e, t.search = r, t.href
},
searchTextFieldFormSubmissionURLString: function(e, r) {
if (visibilityCacheGeneration++, !this._isTextField(e) || this._isSecureTextField(e) || !e.isVisible()) return null;
var t = e.form;
if (!t) return null;
var n = t.getAttribute("action");
if (!n || !n.length) return null;
if (!/^https?:/i.test(t.action)) return null;
if (!this._isSearchForm(t, r)) return null;
for (var a = null, i = "", o = t.elements, l = o.length, s = 0; s < l; ++s) {
var c = o[s];
if ((c === e || this._shouldInputBeIncludedInSearchURLQuery(c)) && (!this._isSubmitButton(c) || (a || (a = c), c === a))) {
i.length && (i += "&");
var u = c === e ? "{searchTerms}" : urlEncode(c.value);
i += urlEncode(c.name) + "=" + u
}
}
return this._setQueryString(t.action, i)
}
};
var FormMetadataJS = new FormMetadata;
! function webpackUniversalModuleDefinition(e, r) {
"object" == typeof exports && "object" == typeof module ? module.exports = r() : "function" == typeof define && define.amd ? define([], r) : "object" == typeof exports ? exports.jsQR = r() : e.jsQR = r()
}("undefined" != typeof self ? self : this, (function() {
return function(e) {
var r = {};
function __webpack_require__(t) {
if (r[t]) return r[t].exports;
var n = r[t] = {
i: t,
l: !1,
exports: {}
};
return e[t].call(n.exports, n, n.exports, __webpack_require__), n.l = !0, n.exports
}
return __webpack_require__.m = e, __webpack_require__.c = r, __webpack_require__.d = function(e, r, t) {
__webpack_require__.o(e, r) || Object.defineProperty(e, r, {
configurable: !1,
enumerable: !0,
get: t
})
}, __webpack_require__.n = function(e) {
var r = e && e.__esModule ? function getDefault() {
return e.default
} : function getModuleExports() {
return e
};
return __webpack_require__.d(r, "a", r), r
}, __webpack_require__.o = function(e, r) {
return Object.prototype.hasOwnProperty.call(e, r)
}, __webpack_require__.p = "", __webpack_require__(__webpack_require__.s = 3)
}([function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = function() {
function BitMatrix(e, r) {
this.width = r, this.height = e.length / r, this.data = e
}
return BitMatrix.createEmpty = function(e, r) {
return new BitMatrix(new Uint8ClampedArray(e * r), e)
}, BitMatrix.prototype.get = function(e, r) {
return !(e < 0 || e >= this.width || r < 0 || r >= this.height) && !!this.data[r * this.width + e]
}, BitMatrix.prototype.set = function(e, r, t) {
this.data[r * this.width + e] = t ? 1 : 0
}, BitMatrix.prototype.setRegion = function(e, r, t, n, a) {
for (var i = r; i < r + n; i++)
for (var o = e; o < e + t; o++) this.set(o, i, !!a)
}, BitMatrix
}();
r.BitMatrix = n
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = t(2);
r.addOrSubtractGF = function addOrSubtractGF(e, r) {
return e ^ r
};
var a = function() {
function GenericGF(e, r, t) {
this.primitive = e, this.size = r, this.generatorBase = t, this.expTable = new Array(this.size), this.logTable = new Array(this.size);
for (var a = 1, i = 0; i < this.size; i++) this.expTable[i] = a, (a *= 2) >= this.size && (a = (a ^ this.primitive) & this.size - 1);
for (i = 0; i < this.size - 1; i++) this.logTable[this.expTable[i]] = i;
this.zero = new n.default(this, Uint8ClampedArray.from([0])), this.one = new n.default(this, Uint8ClampedArray.from([1]))
}
return GenericGF.prototype.multiply = function(e, r) {
return 0 === e || 0 === r ? 0 : this.expTable[(this.logTable[e] + this.logTable[r]) % (this.size - 1)]
}, GenericGF.prototype.inverse = function(e) {
if (0 === e) throw new Error("Can't invert 0");
return this.expTable[this.size - this.logTable[e] - 1]
}, GenericGF.prototype.buildMonomial = function(e, r) {
if (e < 0) throw new Error("Invalid monomial degree less than 0");
if (0 === r) return this.zero;
var t = new Uint8ClampedArray(e + 1);
return t[0] = r, new n.default(this, t)
}, GenericGF.prototype.log = function(e) {
if (0 === e) throw new Error("Can't take log(0)");
return this.logTable[e]
}, GenericGF.prototype.exp = function(e) {
return this.expTable[e]
}, GenericGF
}();
r.default = a
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = t(1),
a = function() {
function GenericGFPoly(e, r) {
if (0 === r.length) throw new Error("No coefficients.");
this.field = e;
var t = r.length;
if (t > 1 && 0 === r[0]) {
for (var n = 1; n < t && 0 === r[n];) n++;
if (n === t) this.coefficients = e.zero.coefficients;
else {
this.coefficients = new Uint8ClampedArray(t - n);
for (var a = 0; a < this.coefficients.length; a++) this.coefficients[a] = r[n + a]
}
} else this.coefficients = r
}
return GenericGFPoly.prototype.degree = function() {
return this.coefficients.length - 1
}, GenericGFPoly.prototype.isZero = function() {
return 0 === this.coefficients[0]
}, GenericGFPoly.prototype.getCoefficient = function(e) {
return this.coefficients[this.coefficients.length - 1 - e]
}, GenericGFPoly.prototype.addOrSubtract = function(e) {
var r;
if (this.isZero()) return e;
if (e.isZero()) return this;
var t = this.coefficients,
a = e.coefficients;
t.length > a.length && (t = (r = [a, t])[0], a = r[1]);
for (var i = new Uint8ClampedArray(a.length), o = a.length - t.length, l = 0; l < o; l++) i[l] = a[l];
for (l = o; l < a.length; l++) i[l] = n.addOrSubtractGF(t[l - o], a[l]);
return new GenericGFPoly(this.field, i)
}, GenericGFPoly.prototype.multiply = function(e) {
if (0 === e) return this.field.zero;
if (1 === e) return this;
for (var r = this.coefficients.length, t = new Uint8ClampedArray(r), n = 0; n < r; n++) t[n] = this.field.multiply(this.coefficients[n], e);
return new GenericGFPoly(this.field, t)
}, GenericGFPoly.prototype.multiplyPoly = function(e) {
if (this.isZero() || e.isZero()) return this.field.zero;
for (var r = this.coefficients, t = r.length, a = e.coefficients, i = a.length, o = new Uint8ClampedArray(t + i - 1), l = 0; l < t; l++)
for (var s = r[l], c = 0; c < i; c++) o[l + c] = n.addOrSubtractGF(o[l + c], this.field.multiply(s, a[c]));
return new GenericGFPoly(this.field, o)
}, GenericGFPoly.prototype.multiplyByMonomial = function(e, r) {
if (e < 0) throw new Error("Invalid degree less than 0");
if (0 === r) return this.field.zero;
for (var t = this.coefficients.length, n = new Uint8ClampedArray(t + e), a = 0; a < t; a++) n[a] = this.field.multiply(this.coefficients[a], r);
return new GenericGFPoly(this.field, n)
}, GenericGFPoly.prototype.evaluateAt = function(e) {
var r = 0;
if (0 === e) return this.getCoefficient(0);
var t = this.coefficients.length;
if (1 === e) return this.coefficients.forEach((function(e) {
r = n.addOrSubtractGF(r, e)
})), r;
r = this.coefficients[0];
for (var a = 1; a < t; a++) r = n.addOrSubtractGF(this.field.multiply(e, r), this.coefficients[a]);
return r
}, GenericGFPoly
}();
r.default = a
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = t(4),
a = t(5),
i = t(11),
o = t(12);
function scan(e) {
var r = o.locate(e);
if (!r) return null;
for (var t = 0, n = r; t < n.length; t++) {
var l = n[t],
s = i.extract(e, l),
c = a.decode(s.matrix);
if (c) return {
binaryData: c.bytes,
data: c.text,
chunks: c.chunks,
version: c.version,
location: {
topRightCorner: s.mappingFunction(l.dimension, 0),
topLeftCorner: s.mappingFunction(0, 0),
bottomRightCorner: s.mappingFunction(l.dimension, l.dimension),
bottomLeftCorner: s.mappingFunction(0, l.dimension),
topRightFinderPattern: l.topRight,
topLeftFinderPattern: l.topLeft,
bottomLeftFinderPattern: l.bottomLeft,
bottomRightAlignmentPattern: l.alignmentPattern
}
}
}
return null
}
var l = {
inversionAttempts: "attemptBoth"
};
function jsQR(e, r, t, a) {
void 0 === a && (a = {});
var i = l;
Object.keys(i || {}).forEach((function(e) {
i[e] = a[e] || i[e]
}));
var o = "attemptBoth" === i.inversionAttempts || "invertFirst" === i.inversionAttempts,
s = "onlyInvert" === i.inversionAttempts || "invertFirst" === i.inversionAttempts,
c = n.binarize(e, r, t, o),
u = c.binarized,
p = c.inverted,
d = scan(s ? p : u);
return d || "attemptBoth" !== i.inversionAttempts && "invertFirst" !== i.inversionAttempts || (d = scan(s ? u : p)), d
}
jsQR.default = jsQR, r.default = jsQR
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = t(0);
function numBetween(e, r, t) {
return e < r ? r : e > t ? t : e
}
var a = function() {
function Matrix(e, r) {
this.width = e, this.data = new Uint8ClampedArray(e * r)
}
return Matrix.prototype.get = function(e, r) {
return this.data[r * this.width + e]
}, Matrix.prototype.set = function(e, r, t) {
this.data[r * this.width + e] = t
}, Matrix
}();
r.binarize = function binarize(e, r, t, i) {
if (e.length !== r * t * 4) throw new Error("Malformed data passed to binarizer.");
for (var o = new a(r, t), l = 0; l < r; l++)
for (var s = 0; s < t; s++) {
var c = e[4 * (s * r + l) + 0],
u = e[4 * (s * r + l) + 1],
p = e[4 * (s * r + l) + 2];
o.set(l, s, .2126 * c + .7152 * u + .0722 * p)
}
for (var d = Math.ceil(r / 8), f = Math.ceil(t / 8), m = new a(d, f), v = 0; v < f; v++)
for (var w = 0; w < d; w++) {
var y = 0,
h = 1 / 0,
E = 0;
for (s = 0; s < 8; s++)
for (l = 0; l < 8; l++) {
var M = o.get(8 * w + l, 8 * v + s);
y += M, h = Math.min(h, M), E = Math.max(E, M)
}
var S = y / Math.pow(8, 2);
if (E - h <= 24 && (S = h / 2, v > 0 && w > 0)) {
var g = (m.get(w, v - 1) + 2 * m.get(w - 1, v) + m.get(w - 1, v - 1)) / 4;
h < g && (S = g)
}
m.set(w, v, S)
}
var k = n.BitMatrix.createEmpty(r, t),
C = null;
for (i && (C = n.BitMatrix.createEmpty(r, t)), v = 0; v < f; v++)
for (w = 0; w < d; w++) {
for (var b = numBetween(w, 2, d - 3), F = numBetween(v, 2, f - 3), P = (y = 0, -2); P <= 2; P++)
for (var B = -2; B <= 2; B++) y += m.get(b + P, F + B);
var _ = y / 25;
for (P = 0; P < 8; P++)
for (B = 0; B < 8; B++) {
l = 8 * w + P, s = 8 * v + B;
var L = o.get(l, s);
k.set(l, s, L <= _), i && C.set(l, s, !(L <= _))
}
}
return i ? {
binarized: k,
inverted: C
} : {
binarized: k
}
}
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = t(0),
a = t(6),
i = t(9),
o = t(10);
function numBitsDiffering(e, r) {
for (var t = e ^ r, n = 0; t;) n++, t &= t - 1;
return n
}
function pushBit(e, r) {
return r << 1 | e
}
var l = [{
bits: 21522,
formatInfo: {
errorCorrectionLevel: 1,
dataMask: 0
}
}, {
bits: 20773,
formatInfo: {
errorCorrectionLevel: 1,
dataMask: 1
}
}, {
bits: 24188,
formatInfo: {
errorCorrectionLevel: 1,
dataMask: 2
}
}, {
bits: 23371,
formatInfo: {
errorCorrectionLevel: 1,
dataMask: 3
}
}, {
bits: 17913,
formatInfo: {
errorCorrectionLevel: 1,
dataMask: 4
}
}, {
bits: 16590,
formatInfo: {
errorCorrectionLevel: 1,
dataMask: 5
}
}, {
bits: 20375,
formatInfo: {
errorCorrectionLevel: 1,
dataMask: 6
}
}, {
bits: 19104,
formatInfo: {
errorCorrectionLevel: 1,
dataMask: 7
}
}, {
bits: 30660,
formatInfo: {
errorCorrectionLevel: 0,
dataMask: 0
}
}, {
bits: 29427,
formatInfo: {
errorCorrectionLevel: 0,
dataMask: 1
}
}, {
bits: 32170,
formatInfo: {
errorCorrectionLevel: 0,
dataMask: 2
}
}, {
bits: 30877,
formatInfo: {
errorCorrectionLevel: 0,
dataMask: 3
}
}, {
bits: 26159,
formatInfo: {
errorCorrectionLevel: 0,
dataMask: 4
}
}, {
bits: 25368,
formatInfo: {
errorCorrectionLevel: 0,
dataMask: 5
}
}, {
bits: 27713,
formatInfo: {
errorCorrectionLevel: 0,
dataMask: 6
}
}, {
bits: 26998,
formatInfo: {
errorCorrectionLevel: 0,
dataMask: 7
}
}, {
bits: 5769,
formatInfo: {
errorCorrectionLevel: 3,
dataMask: 0
}
}, {
bits: 5054,
formatInfo: {
errorCorrectionLevel: 3,
dataMask: 1
}
}, {
bits: 7399,
formatInfo: {
errorCorrectionLevel: 3,
dataMask: 2
}
}, {
bits: 6608,
formatInfo: {
errorCorrectionLevel: 3,
dataMask: 3
}
}, {
bits: 1890,
formatInfo: {
errorCorrectionLevel: 3,
dataMask: 4
}
}, {
bits: 597,
formatInfo: {
errorCorrectionLevel: 3,
dataMask: 5
}
}, {
bits: 3340,
formatInfo: {
errorCorrectionLevel: 3,
dataMask: 6
}
}, {
bits: 2107,
formatInfo: {
errorCorrectionLevel: 3,
dataMask: 7
}
}, {
bits: 13663,
formatInfo: {
errorCorrectionLevel: 2,
dataMask: 0
}
}, {
bits: 12392,
formatInfo: {
errorCorrectionLevel: 2,
dataMask: 1
}
}, {
bits: 16177,
formatInfo: {
errorCorrectionLevel: 2,
dataMask: 2
}
}, {
bits: 14854,
formatInfo: {
errorCorrectionLevel: 2,
dataMask: 3
}
}, {
bits: 9396,
formatInfo: {
errorCorrectionLevel: 2,
dataMask: 4
}
}, {
bits: 8579,
formatInfo: {
errorCorrectionLevel: 2,
dataMask: 5
}
}, {
bits: 11994,
formatInfo: {
errorCorrectionLevel: 2,
dataMask: 6
}
}, {
bits: 11245,
formatInfo: {
errorCorrectionLevel: 2,
dataMask: 7
}
}],
s = [function(e) {
return (e.y + e.x) % 2 == 0
}, function(e) {
return e.y % 2 == 0
}, function(e) {
return e.x % 3 == 0
}, function(e) {
return (e.y + e.x) % 3 == 0
}, function(e) {
return (Math.floor(e.y / 2) + Math.floor(e.x / 3)) % 2 == 0
}, function(e) {
return e.x * e.y % 2 + e.x * e.y % 3 == 0
}, function(e) {
return (e.y * e.x % 2 + e.y * e.x % 3) % 2 == 0
}, function(e) {
return ((e.y + e.x) % 2 + e.y * e.x % 3) % 2 == 0
}];
function readCodewords(e, r, t) {
for (var a = s[t.dataMask], i = e.height, o = function buildFunctionPatternMask(e) {
var r = 17 + 4 * e.versionNumber,
t = n.BitMatrix.createEmpty(r, r);
t.setRegion(0, 0, 9, 9, !0), t.setRegion(r - 8, 0, 8, 9, !0), t.setRegion(0, r - 8, 9, 8, !0);
for (var a = 0, i = e.alignmentPatternCenters; a < i.length; a++)
for (var o = i[a], l = 0, s = e.alignmentPatternCenters; l < s.length; l++) {
var c = s[l];
6 === o && 6 === c || 6 === o && c === r - 7 || o === r - 7 && 6 === c || t.setRegion(o - 2, c - 2, 5, 5, !0)
}
return t.setRegion(6, 9, 1, r - 17, !0), t.setRegion(9, 6, r - 17, 1, !0), e.versionNumber > 6 && (t.setRegion(r - 11, 0, 3, 6, !0), t.setRegion(0, r - 11, 6, 3, !0)), t
}(r), l = [], c = 0, u = 0, p = !0, d = i - 1; d > 0; d -= 2) {
6 === d && d--;
for (var f = 0; f < i; f++)
for (var m = p ? i - 1 - f : f, v = 0; v < 2; v++) {
var w = d - v;
if (!o.get(w, m)) {
u++;
var y = e.get(w, m);
a({
y: m,
x: w
}) && (y = !y), c = pushBit(y, c), 8 === u && (l.push(c), u = 0, c = 0)
}
}
p = !p
}
return l
}
function decodeMatrix(e) {
var r = function readVersion(e) {
var r = e.height,
t = Math.floor((r - 17) / 4);
if (t <= 6) return o.VERSIONS[t - 1];
for (var n = 0, a = 5; a >= 0; a--)
for (var i = r - 9; i >= r - 11; i--) n = pushBit(e.get(i, a), n);
var l = 0;
for (i = 5; i >= 0; i--)
for (a = r - 9; a >= r - 11; a--) l = pushBit(e.get(i, a), l);
for (var s, c = 1 / 0, u = 0, p = o.VERSIONS; u < p.length; u++) {
var d = p[u];
if (d.infoBits === n || d.infoBits === l) return d;
var f = numBitsDiffering(n, d.infoBits);
f < c && (s = d, c = f), (f = numBitsDiffering(l, d.infoBits)) < c && (s = d, c = f)
}
return c <= 3 ? s : void 0
}(e);
if (!r) return null;
var t = function readFormatInformation(e) {
for (var r = 0, t = 0; t <= 8; t++) 6 !== t && (r = pushBit(e.get(t, 8), r));
for (var n = 7; n >= 0; n--) 6 !== n && (r = pushBit(e.get(8, n), r));
var a = e.height,
i = 0;
for (n = a - 1; n >= a - 7; n--) i = pushBit(e.get(8, n), i);
for (t = a - 8; t < a; t++) i = pushBit(e.get(t, 8), i);
for (var o = 1 / 0, s = null, c = 0, u = l; c < u.length; c++) {
var p = u[c],
d = p.bits,
f = p.formatInfo;
if (d === r || d === i) return f;
var m = numBitsDiffering(r, d);
m < o && (s = f, o = m), r !== i && (m = numBitsDiffering(i, d)) < o && (s = f, o = m)
}
return o <= 3 ? s : null
}(e);
if (!t) return null;
var n = function getDataBlocks(e, r, t) {
var n = r.errorCorrectionLevels[t],
a = [],
i = 0;
if (n.ecBlocks.forEach((function(e) {
for (var r = 0; r < e.numBlocks; r++) a.push({
numDataCodewords: e.dataCodewordsPerBlock,
codewords: []
}), i += e.dataCodewordsPerBlock + n.ecCodewordsPerBlock
})), e.length < i) return null;
e = e.slice(0, i);
for (var o = n.ecBlocks[0].dataCodewordsPerBlock, l = 0; l < o; l++)
for (var s = 0, c = a; s < c.length; s++) c[s].codewords.push(e.shift());
if (n.ecBlocks.length > 1) {
var u = n.ecBlocks[0].numBlocks,
p = n.ecBlocks[1].numBlocks;
for (l = 0; l < p; l++) a[u + l].codewords.push(e.shift())
}
for (; e.length > 0;)
for (var d = 0, f = a; d < f.length; d++) f[d].codewords.push(e.shift());
return a
}(readCodewords(e, r, t), r, t.errorCorrectionLevel);
if (!n) return null;
for (var s = n.reduce((function(e, r) {
return e + r.numDataCodewords
}), 0), c = new Uint8ClampedArray(s), u = 0, p = 0, d = n; p < d.length; p++) {
var f = d[p],
m = i.decode(f.codewords, f.codewords.length - f.numDataCodewords);
if (!m) return null;
for (var v = 0; v < f.numDataCodewords; v++) c[u++] = m[v]
}
try {
return a.decode(c, r.versionNumber)
} catch (e) {
return null
}
}
r.decode = function decode(e) {
if (null == e) return null;
var r = decodeMatrix(e);
if (r) return r;
for (var t = 0; t < e.width; t++)
for (var n = t + 1; n < e.height; n++) e.get(t, n) !== e.get(n, t) && (e.set(t, n, !e.get(t, n)), e.set(n, t, !e.get(n, t)));
return decodeMatrix(e)
}
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n, a, i = t(7),
o = t(8);
function decodeNumeric(e, r) {
for (var t = [], n = "", a = [10, 12, 14][r], i = e.readBits(a); i >= 3;) {
if ((c = e.readBits(10)) >= 1e3) throw new Error("Invalid numeric value above 999");
var o = Math.floor(c / 100),
l = Math.floor(c / 10) % 10,
s = c % 10;
t.push(48 + o, 48 + l, 48 + s), n += o.toString() + l.toString() + s.toString(), i -= 3
}
if (2 === i) {
if ((c = e.readBits(7)) >= 100) throw new Error("Invalid numeric value above 99");
o = Math.floor(c / 10), l = c % 10;
t.push(48 + o, 48 + l), n += o.toString() + l.toString()
} else if (1 === i) {
var c;
if ((c = e.readBits(4)) >= 10) throw new Error("Invalid numeric value above 9");
t.push(48 + c), n += c.toString()
}
return {
bytes: t,
text: n
}
}! function(e) {
e.Numeric = "numeric", e.Alphanumeric = "alphanumeric", e.Byte = "byte", e.Kanji = "kanji", e.ECI = "eci"
}(n = r.Mode || (r.Mode = {})),
function(e) {
e[e.Terminator = 0] = "Terminator", e[e.Numeric = 1] = "Numeric", e[e.Alphanumeric = 2] = "Alphanumeric", e[e.Byte = 4] = "Byte", e[e.Kanji = 8] = "Kanji", e[e.ECI = 7] = "ECI"
}(a || (a = {}));
var l = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", " ", "$", "%", "*", "+", "-", ".", "/", ":"];
function decodeAlphanumeric(e, r) {
for (var t = [], n = "", a = [9, 11, 13][r], i = e.readBits(a); i >= 2;) {
var o = e.readBits(11),
s = Math.floor(o / 45),
c = o % 45;
t.push(l[s].charCodeAt(0), l[c].charCodeAt(0)), n += l[s] + l[c], i -= 2
}
if (1 === i) {
s = e.readBits(6);
t.push(l[s].charCodeAt(0)), n += l[s]
}
return {
bytes: t,
text: n
}
}
function decodeByte(e, r) {
for (var t = [], n = "", a = [8, 16, 16][r], i = e.readBits(a), o = 0; o < i; o++) {
var l = e.readBits(8);
t.push(l)
}
try {
n += decodeURIComponent(t.map((function(e) {
return "%" + ("0" + e.toString(16)).substr(-2)
})).join(""))
} catch (e) {}
return {
bytes: t,
text: n
}
}
function decodeKanji(e, r) {
for (var t = [], n = "", a = [8, 10, 12][r], i = e.readBits(a), l = 0; l < i; l++) {
var s = e.readBits(13),
c = Math.floor(s / 192) << 8 | s % 192;
c += c < 7936 ? 33088 : 49472, t.push(c >> 8, 255 & c), n += String.fromCharCode(o.shiftJISTable[c])
}
return {
bytes: t,
text: n
}
}
r.decode = function decode(e, r) {
for (var t, o, l, s, c = new i.BitStream(e), u = r <= 9 ? 0 : r <= 26 ? 1 : 2, p = {
text: "",
bytes: [],
chunks: [],
version: r
}; c.available() >= 4;) {
var d = c.readBits(4);
if (d === a.Terminator) return p;
if (d === a.ECI) 0 === c.readBits(1) ? p.chunks.push({
type: n.ECI,
assignmentNumber: c.readBits(7)
}) : 0 === c.readBits(1) ? p.chunks.push({
type: n.ECI,
assignmentNumber: c.readBits(14)
}) : 0 === c.readBits(1) ? p.chunks.push({
type: n.ECI,
assignmentNumber: c.readBits(21)
}) : p.chunks.push({
type: n.ECI,
assignmentNumber: -1
});
else if (d === a.Numeric) {
var f = decodeNumeric(c, u);
p.text += f.text, (t = p.bytes).push.apply(t, f.bytes), p.chunks.push({
type: n.Numeric,
text: f.text
})
} else if (d === a.Alphanumeric) {
var m = decodeAlphanumeric(c, u);
p.text += m.text, (o = p.bytes).push.apply(o, m.bytes), p.chunks.push({
type: n.Alphanumeric,
text: m.text
})
} else if (d === a.Byte) {
var v = decodeByte(c, u);
p.text += v.text, (l = p.bytes).push.apply(l, v.bytes), p.chunks.push({
type: n.Byte,
bytes: v.bytes,
text: v.text
})
} else if (d === a.Kanji) {
var w = decodeKanji(c, u);
p.text += w.text, (s = p.bytes).push.apply(s, w.bytes), p.chunks.push({
type: n.Kanji,
bytes: w.bytes,
text: w.text
})
}
}
if (0 === c.available() || 0 === c.readBits(c.available())) return p
}
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = function() {
function BitStream(e) {
this.byteOffset = 0, this.bitOffset = 0, this.bytes = e
}
return BitStream.prototype.readBits = function(e) {
if (e < 1 || e > 32 || e > this.available()) throw new Error("Cannot read " + e.toString() + " bits");
var r = 0;
if (this.bitOffset > 0) {
var t = 8 - this.bitOffset,
n = e < t ? e : t,
a = 255 >> 8 - n << (i = t - n);
r = (this.bytes[this.byteOffset] & a) >> i, e -= n, this.bitOffset += n, 8 === this.bitOffset && (this.bitOffset = 0, this.byteOffset++)
}
if (e > 0) {
for (; e >= 8;) r = r << 8 | 255 & this.bytes[this.byteOffset], this.byteOffset++, e -= 8;
if (e > 0) {
var i;
a = 255 >> (i = 8 - e) << i;
r = r << e | (this.bytes[this.byteOffset] & a) >> i, this.bitOffset += e
}
}
return r
}, BitStream.prototype.available = function() {
return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset
}, BitStream
}();
r.BitStream = n
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
}), r.shiftJISTable = {
32: 32,
33: 33,
34: 34,
35: 35,
36: 36,
37: 37,
38: 38,
39: 39,
40: 40,
41: 41,
42: 42,
43: 43,
44: 44,
45: 45,
46: 46,
47: 47,
48: 48,
49: 49,
50: 50,
51: 51,
52: 52,
53: 53,
54: 54,
55: 55,
56: 56,
57: 57,
58: 58,
59: 59,
60: 60,
61: 61,
62: 62,
63: 63,
64: 64,
65: 65,
66: 66,
67: 67,
68: 68,
69: 69,
70: 70,
71: 71,
72: 72,
73: 73,
74: 74,
75: 75,
76: 76,
77: 77,
78: 78,
79: 79,
80: 80,
81: 81,
82: 82,
83: 83,
84: 84,
85: 85,
86: 86,
87: 87,
88: 88,
89: 89,
90: 90,
91: 91,
92: 165,
93: 93,
94: 94,
95: 95,
96: 96,
97: 97,
98: 98,
99: 99,
100: 100,
101: 101,
102: 102,
103: 103,
104: 104,
105: 105,
106: 106,
107: 107,
108: 108,
109: 109,
110: 110,
111: 111,
112: 112,
113: 113,
114: 114,
115: 115,
116: 116,
117: 117,
118: 118,
119: 119,
120: 120,
121: 121,
122: 122,
123: 123,
124: 124,
125: 125,
126: 8254,
33088: 12288,
33089: 12289,
33090: 12290,
33091: 65292,
33092: 65294,
33093: 12539,
33094: 65306,
33095: 65307,
33096: 65311,
33097: 65281,
33098: 12443,
33099: 12444,
33100: 180,
33101: 65344,
33102: 168,
33103: 65342,
33104: 65507,
33105: 65343,
33106: 12541,
33107: 12542,
33108: 12445,
33109: 12446,
33110: 12291,
33111: 20189,
33112: 12293,
33113: 12294,
33114: 12295,
33115: 12540,
33116: 8213,
33117: 8208,
33118: 65295,
33119: 92,
33120: 12316,
33121: 8214,
33122: 65372,
33123: 8230,
33124: 8229,
33125: 8216,
33126: 8217,
33127: 8220,
33128: 8221,
33129: 65288,
33130: 65289,
33131: 12308,
33132: 12309,
33133: 65339,
33134: 65341,
33135: 65371,
33136: 65373,
33137: 12296,
33138: 12297,
33139: 12298,
33140: 12299,
33141: 12300,
33142: 12301,
33143: 12302,
33144: 12303,
33145: 12304,
33146: 12305,
33147: 65291,
33148: 8722,
33149: 177,
33150: 215,
33152: 247,
33153: 65309,
33154: 8800,
33155: 65308,
33156: 65310,
33157: 8806,
33158: 8807,
33159: 8734,
33160: 8756,
33161: 9794,
33162: 9792,
33163: 176,
33164: 8242,
33165: 8243,
33166: 8451,
33167: 65509,
33168: 65284,
33169: 162,
33170: 163,
33171: 65285,
33172: 65283,
33173: 65286,
33174: 65290,
33175: 65312,
33176: 167,
33177: 9734,
33178: 9733,
33179: 9675,
33180: 9679,
33181: 9678,
33182: 9671,
33183: 9670,
33184: 9633,
33185: 9632,
33186: 9651,
33187: 9650,
33188: 9661,
33189: 9660,
33190: 8251,
33191: 12306,
33192: 8594,
33193: 8592,
33194: 8593,
33195: 8595,
33196: 12307,
33208: 8712,
33209: 8715,
33210: 8838,
33211: 8839,
33212: 8834,
33213: 8835,
33214: 8746,
33215: 8745,
33224: 8743,
33225: 8744,
33226: 172,
33227: 8658,
33228: 8660,
33229: 8704,
33230: 8707,
33242: 8736,
33243: 8869,
33244: 8978,
33245: 8706,
33246: 8711,
33247: 8801,
33248: 8786,
33249: 8810,
33250: 8811,
33251: 8730,
33252: 8765,
33253: 8733,
33254: 8757,
33255: 8747,
33256: 8748,
33264: 8491,
33265: 8240,
33266: 9839,
33267: 9837,
33268: 9834,
33269: 8224,
33270: 8225,
33271: 182,
33276: 9711,
33359: 65296,
33360: 65297,
33361: 65298,
33362: 65299,
33363: 65300,
33364: 65301,
33365: 65302,
33366: 65303,
33367: 65304,
33368: 65305,
33376: 65313,
33377: 65314,
33378: 65315,
33379: 65316,
33380: 65317,
33381: 65318,
33382: 65319,
33383: 65320,
33384: 65321,
33385: 65322,
33386: 65323,
33387: 65324,
33388: 65325,
33389: 65326,
33390: 65327,
33391: 65328,
33392: 65329,
33393: 65330,
33394: 65331,
33395: 65332,
33396: 65333,
33397: 65334,
33398: 65335,
33399: 65336,
33400: 65337,
33401: 65338,
33409: 65345,
33410: 65346,
33411: 65347,
33412: 65348,
33413: 65349,
33414: 65350,
33415: 65351,
33416: 65352,
33417: 65353,
33418: 65354,
33419: 65355,
33420: 65356,
33421: 65357,
33422: 65358,
33423: 65359,
33424: 65360,
33425: 65361,
33426: 65362,
33427: 65363,
33428: 65364,
33429: 65365,
33430: 65366,
33431: 65367,
33432: 65368,
33433: 65369,
33434: 65370,
33439: 12353,
33440: 12354,
33441: 12355,
33442: 12356,
33443: 12357,
33444: 12358,
33445: 12359,
33446: 12360,
33447: 12361,
33448: 12362,
33449: 12363,
33450: 12364,
33451: 12365,
33452: 12366,
33453: 12367,
33454: 12368,
33455: 12369,
33456: 12370,
33457: 12371,
33458: 12372,
33459: 12373,
33460: 12374,
33461: 12375,
33462: 12376,
33463: 12377,
33464: 12378,
33465: 12379,
33466: 12380,
33467: 12381,
33468: 12382,
33469: 12383,
33470: 12384,
33471: 12385,
33472: 12386,
33473: 12387,
33474: 12388,
33475: 12389,
33476: 12390,
33477: 12391,
33478: 12392,
33479: 12393,
33480: 12394,
33481: 12395,
33482: 12396,
33483: 12397,
33484: 12398,
33485: 12399,
33486: 12400,
33487: 12401,
33488: 12402,
33489: 12403,
33490: 12404,
33491: 12405,
33492: 12406,
33493: 12407,
33494: 12408,
33495: 12409,
33496: 12410,
33497: 12411,
33498: 12412,
33499: 12413,
33500: 12414,
33501: 12415,
33502: 12416,
33503: 12417,
33504: 12418,
33505: 12419,
33506: 12420,
33507: 12421,
33508: 12422,
33509: 12423,
33510: 12424,
33511: 12425,
33512: 12426,
33513: 12427,
33514: 12428,
33515: 12429,
33516: 12430,
33517: 12431,
33518: 12432,
33519: 12433,
33520: 12434,
33521: 12435,
33600: 12449,
33601: 12450,
33602: 12451,
33603: 12452,
33604: 12453,
33605: 12454,
33606: 12455,
33607: 12456,
33608: 12457,
33609: 12458,
33610: 12459,
33611: 12460,
33612: 12461,
33613: 12462,
33614: 12463,
33615: 12464,
33616: 12465,
33617: 12466,
33618: 12467,
33619: 12468,
33620: 12469,
33621: 12470,
33622: 12471,
33623: 12472,
33624: 12473,
33625: 12474,
33626: 12475,
33627: 12476,
33628: 12477,
33629: 12478,
33630: 12479,
33631: 12480,
33632: 12481,
33633: 12482,
33634: 12483,
33635: 12484,
33636: 12485,
33637: 12486,
33638: 12487,
33639: 12488,
33640: 12489,
33641: 12490,
33642: 12491,
33643: 12492,
33644: 12493,
33645: 12494,
33646: 12495,
33647: 12496,
33648: 12497,
33649: 12498,
33650: 12499,
33651: 12500,
33652: 12501,
33653: 12502,
33654: 12503,
33655: 12504,
33656: 12505,
33657: 12506,
33658: 12507,
33659: 12508,
33660: 12509,
33661: 12510,
33662: 12511,
33664: 12512,
33665: 12513,
33666: 12514,
33667: 12515,
33668: 12516,
33669: 12517,
33670: 12518,
33671: 12519,
33672: 12520,
33673: 12521,
33674: 12522,
33675: 12523,
33676: 12524,
33677: 12525,
33678: 12526,
33679: 12527,
33680: 12528,
33681: 12529,
33682: 12530,
33683: 12531,
33684: 12532,
33685: 12533,
33686: 12534,
33695: 913,
33696: 914,
33697: 915,
33698: 916,
33699: 917,
33700: 918,
33701: 919,
33702: 920,
33703: 921,
33704: 922,
33705: 923,
33706: 924,
33707: 925,
33708: 926,
33709: 927,
33710: 928,
33711: 929,
33712: 931,
33713: 932,
33714: 933,
33715: 934,
33716: 935,
33717: 936,
33718: 937,
33727: 945,
33728: 946,
33729: 947,
33730: 948,
33731: 949,
33732: 950,
33733: 951,
33734: 952,
33735: 953,
33736: 954,
33737: 955,
33738: 956,
33739: 957,
33740: 958,
33741: 959,
33742: 960,
33743: 961,
33744: 963,
33745: 964,
33746: 965,
33747: 966,
33748: 967,
33749: 968,
33750: 969,
33856: 1040,
33857: 1041,
33858: 1042,
33859: 1043,
33860: 1044,
33861: 1045,
33862: 1025,
33863: 1046,
33864: 1047,
33865: 1048,
33866: 1049,
33867: 1050,
33868: 1051,
33869: 1052,
33870: 1053,
33871: 1054,
33872: 1055,
33873: 1056,
33874: 1057,
33875: 1058,
33876: 1059,
33877: 1060,
33878: 1061,
33879: 1062,
33880: 1063,
33881: 1064,
33882: 1065,
33883: 1066,
33884: 1067,
33885: 1068,
33886: 1069,
33887: 1070,
33888: 1071,
33904: 1072,
33905: 1073,
33906: 1074,
33907: 1075,
33908: 1076,
33909: 1077,
33910: 1105,
33911: 1078,
33912: 1079,
33913: 1080,
33914: 1081,
33915: 1082,
33916: 1083,
33917: 1084,
33918: 1085,
33920: 1086,
33921: 1087,
33922: 1088,
33923: 1089,
33924: 1090,
33925: 1091,
33926: 1092,
33927: 1093,
33928: 1094,
33929: 1095,
33930: 1096,
33931: 1097,
33932: 1098,
33933: 1099,
33934: 1100,
33935: 1101,
33936: 1102,
33937: 1103,
33951: 9472,
33952: 9474,
33953: 9484,
33954: 9488,
33955: 9496,
33956: 9492,
33957: 9500,
33958: 9516,
33959: 9508,
33960: 9524,
33961: 9532,
33962: 9473,
33963: 9475,
33964: 9487,
33965: 9491,
33966: 9499,
33967: 9495,
33968: 9507,
33969: 9523,
33970: 9515,
33971: 9531,
33972: 9547,
33973: 9504,
33974: 9519,
33975: 9512,
33976: 9527,
33977: 9535,
33978: 9501,
33979: 9520,
33980: 9509,
33981: 9528,
33982: 9538,
34975: 20124,
34976: 21782,
34977: 23043,
34978: 38463,
34979: 21696,
34980: 24859,
34981: 25384,
34982: 23030,
34983: 36898,
34984: 33909,
34985: 33564,
34986: 31312,
34987: 24746,
34988: 25569,
34989: 28197,
34990: 26093,
34991: 33894,
34992: 33446,
34993: 39925,
34994: 26771,
34995: 22311,
34996: 26017,
34997: 25201,
34998: 23451,
34999: 22992,
35e3: 34427,
35001: 39156,
35002: 32098,
35003: 32190,
35004: 39822,
35005: 25110,
35006: 31903,
35007: 34999,
35008: 23433,
35009: 24245,
35010: 25353,
35011: 26263,
35012: 26696,
35013: 38343,
35014: 38797,
35015: 26447,
35016: 20197,
35017: 20234,
35018: 20301,
35019: 20381,
35020: 20553,
35021: 22258,
35022: 22839,
35023: 22996,
35024: 23041,
35025: 23561,
35026: 24799,
35027: 24847,
35028: 24944,
35029: 26131,
35030: 26885,
35031: 28858,
35032: 30031,
35033: 30064,
35034: 31227,
35035: 32173,
35036: 32239,
35037: 32963,
35038: 33806,
35039: 34915,
35040: 35586,
35041: 36949,
35042: 36986,
35043: 21307,
35044: 20117,
35045: 20133,
35046: 22495,
35047: 32946,
35048: 37057,
35049: 30959,
35050: 19968,
35051: 22769,
35052: 28322,
35053: 36920,
35054: 31282,
35055: 33576,
35056: 33419,
35057: 39983,
35058: 20801,
35059: 21360,
35060: 21693,
35061: 21729,
35062: 22240,
35063: 23035,
35064: 24341,
35065: 39154,
35066: 28139,
35067: 32996,
35068: 34093,
35136: 38498,
35137: 38512,
35138: 38560,
35139: 38907,
35140: 21515,
35141: 21491,
35142: 23431,
35143: 28879,
35144: 32701,
35145: 36802,
35146: 38632,
35147: 21359,
35148: 40284,
35149: 31418,
35150: 19985,
35151: 30867,
35152: 33276,
35153: 28198,
35154: 22040,
35155: 21764,
35156: 27421,
35157: 34074,
35158: 39995,
35159: 23013,
35160: 21417,
35161: 28006,
35162: 29916,
35163: 38287,
35164: 22082,
35165: 20113,
35166: 36939,
35167: 38642,
35168: 33615,
35169: 39180,
35170: 21473,
35171: 21942,
35172: 23344,
35173: 24433,
35174: 26144,
35175: 26355,
35176: 26628,
35177: 27704,
35178: 27891,
35179: 27945,
35180: 29787,
35181: 30408,
35182: 31310,
35183: 38964,
35184: 33521,
35185: 34907,
35186: 35424,
35187: 37613,
35188: 28082,
35189: 30123,
35190: 30410,
35191: 39365,
35192: 24742,
35193: 35585,
35194: 36234,
35195: 38322,
35196: 27022,
35197: 21421,
35198: 20870,
35200: 22290,
35201: 22576,
35202: 22852,
35203: 23476,
35204: 24310,
35205: 24616,
35206: 25513,
35207: 25588,
35208: 27839,
35209: 28436,
35210: 28814,
35211: 28948,
35212: 29017,
35213: 29141,
35214: 29503,
35215: 32257,
35216: 33398,
35217: 33489,
35218: 34199,
35219: 36960,
35220: 37467,
35221: 40219,
35222: 22633,
35223: 26044,
35224: 27738,
35225: 29989,
35226: 20985,
35227: 22830,
35228: 22885,
35229: 24448,
35230: 24540,
35231: 25276,
35232: 26106,
35233: 27178,
35234: 27431,
35235: 27572,
35236: 29579,
35237: 32705,
35238: 35158,
35239: 40236,
35240: 40206,
35241: 40644,
35242: 23713,
35243: 27798,
35244: 33659,
35245: 20740,
35246: 23627,
35247: 25014,
35248: 33222,
35249: 26742,
35250: 29281,
35251: 20057,
35252: 20474,
35253: 21368,
35254: 24681,
35255: 28201,
35256: 31311,
35257: 38899,
35258: 19979,
35259: 21270,
35260: 20206,
35261: 20309,
35262: 20285,
35263: 20385,
35264: 20339,
35265: 21152,
35266: 21487,
35267: 22025,
35268: 22799,
35269: 23233,
35270: 23478,
35271: 23521,
35272: 31185,
35273: 26247,
35274: 26524,
35275: 26550,
35276: 27468,
35277: 27827,
35278: 28779,
35279: 29634,
35280: 31117,
35281: 31166,
35282: 31292,
35283: 31623,
35284: 33457,
35285: 33499,
35286: 33540,
35287: 33655,
35288: 33775,
35289: 33747,
35290: 34662,
35291: 35506,
35292: 22057,
35293: 36008,
35294: 36838,
35295: 36942,
35296: 38686,
35297: 34442,
35298: 20420,
35299: 23784,
35300: 25105,
35301: 29273,
35302: 30011,
35303: 33253,
35304: 33469,
35305: 34558,
35306: 36032,
35307: 38597,
35308: 39187,
35309: 39381,
35310: 20171,
35311: 20250,
35312: 35299,
35313: 22238,
35314: 22602,
35315: 22730,
35316: 24315,
35317: 24555,
35318: 24618,
35319: 24724,
35320: 24674,
35321: 25040,
35322: 25106,
35323: 25296,
35324: 25913,
35392: 39745,
35393: 26214,
35394: 26800,
35395: 28023,
35396: 28784,
35397: 30028,
35398: 30342,
35399: 32117,
35400: 33445,
35401: 34809,
35402: 38283,
35403: 38542,
35404: 35997,
35405: 20977,
35406: 21182,
35407: 22806,
35408: 21683,
35409: 23475,
35410: 23830,
35411: 24936,
35412: 27010,
35413: 28079,
35414: 30861,
35415: 33995,
35416: 34903,
35417: 35442,
35418: 37799,
35419: 39608,
35420: 28012,
35421: 39336,
35422: 34521,
35423: 22435,
35424: 26623,
35425: 34510,
35426: 37390,
35427: 21123,
35428: 22151,
35429: 21508,
35430: 24275,
35431: 25313,
35432: 25785,
35433: 26684,
35434: 26680,
35435: 27579,
35436: 29554,
35437: 30906,
35438: 31339,
35439: 35226,
35440: 35282,
35441: 36203,
35442: 36611,
35443: 37101,
35444: 38307,
35445: 38548,
35446: 38761,
35447: 23398,
35448: 23731,
35449: 27005,
35450: 38989,
35451: 38990,
35452: 25499,
35453: 31520,
35454: 27179,
35456: 27263,
35457: 26806,
35458: 39949,
35459: 28511,
35460: 21106,
35461: 21917,
35462: 24688,
35463: 25324,
35464: 27963,
35465: 28167,
35466: 28369,
35467: 33883,
35468: 35088,
35469: 36676,
35470: 19988,
35471: 39993,
35472: 21494,
35473: 26907,
35474: 27194,
35475: 38788,
35476: 26666,
35477: 20828,
35478: 31427,
35479: 33970,
35480: 37340,
35481: 37772,
35482: 22107,
35483: 40232,
35484: 26658,
35485: 33541,
35486: 33841,
35487: 31909,
35488: 21e3,
35489: 33477,
35490: 29926,
35491: 20094,
35492: 20355,
35493: 20896,
35494: 23506,
35495: 21002,
35496: 21208,
35497: 21223,
35498: 24059,
35499: 21914,
35500: 22570,
35501: 23014,
35502: 23436,
35503: 23448,
35504: 23515,
35505: 24178,
35506: 24185,
35507: 24739,
35508: 24863,
35509: 24931,
35510: 25022,
35511: 25563,
35512: 25954,
35513: 26577,
35514: 26707,
35515: 26874,
35516: 27454,
35517: 27475,
35518: 27735,
35519: 28450,
35520: 28567,
35521: 28485,
35522: 29872,
35523: 29976,
35524: 30435,
35525: 30475,
35526: 31487,
35527: 31649,
35528: 31777,
35529: 32233,
35530: 32566,
35531: 32752,
35532: 32925,
35533: 33382,
35534: 33694,
35535: 35251,
35536: 35532,
35537: 36011,
35538: 36996,
35539: 37969,
35540: 38291,
35541: 38289,
35542: 38306,
35543: 38501,
35544: 38867,
35545: 39208,
35546: 33304,
35547: 20024,
35548: 21547,
35549: 23736,
35550: 24012,
35551: 29609,
35552: 30284,
35553: 30524,
35554: 23721,
35555: 32747,
35556: 36107,
35557: 38593,
35558: 38929,
35559: 38996,
35560: 39e3,
35561: 20225,
35562: 20238,
35563: 21361,
35564: 21916,
35565: 22120,
35566: 22522,
35567: 22855,
35568: 23305,
35569: 23492,
35570: 23696,
35571: 24076,
35572: 24190,
35573: 24524,
35574: 25582,
35575: 26426,
35576: 26071,
35577: 26082,
35578: 26399,
35579: 26827,
35580: 26820,
35648: 27231,
35649: 24112,
35650: 27589,
35651: 27671,
35652: 27773,
35653: 30079,
35654: 31048,
35655: 23395,
35656: 31232,
35657: 32e3,
35658: 24509,
35659: 35215,
35660: 35352,
35661: 36020,
35662: 36215,
35663: 36556,
35664: 36637,
35665: 39138,
35666: 39438,
35667: 39740,
35668: 20096,
35669: 20605,
35670: 20736,
35671: 22931,
35672: 23452,
35673: 25135,
35674: 25216,
35675: 25836,
35676: 27450,
35677: 29344,
35678: 30097,
35679: 31047,
35680: 32681,
35681: 34811,
35682: 35516,
35683: 35696,
35684: 25516,
35685: 33738,
35686: 38816,
35687: 21513,
35688: 21507,
35689: 21931,
35690: 26708,
35691: 27224,
35692: 35440,
35693: 30759,
35694: 26485,
35695: 40653,
35696: 21364,
35697: 23458,
35698: 33050,
35699: 34384,
35700: 36870,
35701: 19992,
35702: 20037,
35703: 20167,
35704: 20241,
35705: 21450,
35706: 21560,
35707: 23470,
35708: 24339,
35709: 24613,
35710: 25937,
35712: 26429,
35713: 27714,
35714: 27762,
35715: 27875,
35716: 28792,
35717: 29699,
35718: 31350,
35719: 31406,
35720: 31496,
35721: 32026,
35722: 31998,
35723: 32102,
35724: 26087,
35725: 29275,
35726: 21435,
35727: 23621,
35728: 24040,
35729: 25298,
35730: 25312,
35731: 25369,
35732: 28192,
35733: 34394,
35734: 35377,
35735: 36317,
35736: 37624,
35737: 28417,
35738: 31142,
35739: 39770,
35740: 20136,
35741: 20139,
35742: 20140,
35743: 20379,
35744: 20384,
35745: 20689,
35746: 20807,
35747: 31478,
35748: 20849,
35749: 20982,
35750: 21332,
35751: 21281,
35752: 21375,
35753: 21483,
35754: 21932,
35755: 22659,
35756: 23777,
35757: 24375,
35758: 24394,
35759: 24623,
35760: 24656,
35761: 24685,
35762: 25375,
35763: 25945,
35764: 27211,
35765: 27841,
35766: 29378,
35767: 29421,
35768: 30703,
35769: 33016,
35770: 33029,
35771: 33288,
35772: 34126,
35773: 37111,
35774: 37857,
35775: 38911,
35776: 39255,
35777: 39514,
35778: 20208,
35779: 20957,
35780: 23597,
35781: 26241,
35782: 26989,
35783: 23616,
35784: 26354,
35785: 26997,
35786: 29577,
35787: 26704,
35788: 31873,
35789: 20677,
35790: 21220,
35791: 22343,
35792: 24062,
35793: 37670,
35794: 26020,
35795: 27427,
35796: 27453,
35797: 29748,
35798: 31105,
35799: 31165,
35800: 31563,
35801: 32202,
35802: 33465,
35803: 33740,
35804: 34943,
35805: 35167,
35806: 35641,
35807: 36817,
35808: 37329,
35809: 21535,
35810: 37504,
35811: 20061,
35812: 20534,
35813: 21477,
35814: 21306,
35815: 29399,
35816: 29590,
35817: 30697,
35818: 33510,
35819: 36527,
35820: 39366,
35821: 39368,
35822: 39378,
35823: 20855,
35824: 24858,
35825: 34398,
35826: 21936,
35827: 31354,
35828: 20598,
35829: 23507,
35830: 36935,
35831: 38533,
35832: 20018,
35833: 27355,
35834: 37351,
35835: 23633,
35836: 23624,
35904: 25496,
35905: 31391,
35906: 27795,
35907: 38772,
35908: 36705,
35909: 31402,
35910: 29066,
35911: 38536,
35912: 31874,
35913: 26647,
35914: 32368,
35915: 26705,
35916: 37740,
35917: 21234,
35918: 21531,
35919: 34219,
35920: 35347,
35921: 32676,
35922: 36557,
35923: 37089,
35924: 21350,
35925: 34952,
35926: 31041,
35927: 20418,
35928: 20670,
35929: 21009,
35930: 20804,
35931: 21843,
35932: 22317,
35933: 29674,
35934: 22411,
35935: 22865,
35936: 24418,
35937: 24452,
35938: 24693,
35939: 24950,
35940: 24935,
35941: 25001,
35942: 25522,
35943: 25658,
35944: 25964,
35945: 26223,
35946: 26690,
35947: 28179,
35948: 30054,
35949: 31293,
35950: 31995,
35951: 32076,
35952: 32153,
35953: 32331,
35954: 32619,
35955: 33550,
35956: 33610,
35957: 34509,
35958: 35336,
35959: 35427,
35960: 35686,
35961: 36605,
35962: 38938,
35963: 40335,
35964: 33464,
35965: 36814,
35966: 39912,
35968: 21127,
35969: 25119,
35970: 25731,
35971: 28608,
35972: 38553,
35973: 26689,
35974: 20625,
35975: 27424,
35976: 27770,
35977: 28500,
35978: 31348,
35979: 32080,
35980: 34880,
35981: 35363,
35982: 26376,
35983: 20214,
35984: 20537,
35985: 20518,
35986: 20581,
35987: 20860,
35988: 21048,
35989: 21091,
35990: 21927,
35991: 22287,
35992: 22533,
35993: 23244,
35994: 24314,
35995: 25010,
35996: 25080,
35997: 25331,
35998: 25458,
35999: 26908,
36e3: 27177,
36001: 29309,
36002: 29356,
36003: 29486,
36004: 30740,
36005: 30831,
36006: 32121,
36007: 30476,
36008: 32937,
36009: 35211,
36010: 35609,
36011: 36066,
36012: 36562,
36013: 36963,
36014: 37749,
36015: 38522,
36016: 38997,
36017: 39443,
36018: 40568,
36019: 20803,
36020: 21407,
36021: 21427,
36022: 24187,
36023: 24358,
36024: 28187,
36025: 28304,
36026: 29572,
36027: 29694,
36028: 32067,
36029: 33335,
36030: 35328,
36031: 35578,
36032: 38480,
36033: 20046,
36034: 20491,
36035: 21476,
36036: 21628,
36037: 22266,
36038: 22993,
36039: 23396,
36040: 24049,
36041: 24235,
36042: 24359,
36043: 25144,
36044: 25925,
36045: 26543,
36046: 28246,
36047: 29392,
36048: 31946,
36049: 34996,
36050: 32929,
36051: 32993,
36052: 33776,
36053: 34382,
36054: 35463,
36055: 36328,
36056: 37431,
36057: 38599,
36058: 39015,
36059: 40723,
36060: 20116,
36061: 20114,
36062: 20237,
36063: 21320,
36064: 21577,
36065: 21566,
36066: 23087,
36067: 24460,
36068: 24481,
36069: 24735,
36070: 26791,
36071: 27278,
36072: 29786,
36073: 30849,
36074: 35486,
36075: 35492,
36076: 35703,
36077: 37264,
36078: 20062,
36079: 39881,
36080: 20132,
36081: 20348,
36082: 20399,
36083: 20505,
36084: 20502,
36085: 20809,
36086: 20844,
36087: 21151,
36088: 21177,
36089: 21246,
36090: 21402,
36091: 21475,
36092: 21521,
36160: 21518,
36161: 21897,
36162: 22353,
36163: 22434,
36164: 22909,
36165: 23380,
36166: 23389,
36167: 23439,
36168: 24037,
36169: 24039,
36170: 24055,
36171: 24184,
36172: 24195,
36173: 24218,
36174: 24247,
36175: 24344,
36176: 24658,
36177: 24908,
36178: 25239,
36179: 25304,
36180: 25511,
36181: 25915,
36182: 26114,
36183: 26179,
36184: 26356,
36185: 26477,
36186: 26657,
36187: 26775,
36188: 27083,
36189: 27743,
36190: 27946,
36191: 28009,
36192: 28207,
36193: 28317,
36194: 30002,
36195: 30343,
36196: 30828,
36197: 31295,
36198: 31968,
36199: 32005,
36200: 32024,
36201: 32094,
36202: 32177,
36203: 32789,
36204: 32771,
36205: 32943,
36206: 32945,
36207: 33108,
36208: 33167,
36209: 33322,
36210: 33618,
36211: 34892,
36212: 34913,
36213: 35611,
36214: 36002,
36215: 36092,
36216: 37066,
36217: 37237,
36218: 37489,
36219: 30783,
36220: 37628,
36221: 38308,
36222: 38477,
36224: 38917,
36225: 39321,
36226: 39640,
36227: 40251,
36228: 21083,
36229: 21163,
36230: 21495,
36231: 21512,
36232: 22741,
36233: 25335,
36234: 28640,
36235: 35946,
36236: 36703,
36237: 40633,
36238: 20811,
36239: 21051,
36240: 21578,
36241: 22269,
36242: 31296,
36243: 37239,
36244: 40288,
36245: 40658,
36246: 29508,
36247: 28425,
36248: 33136,
36249: 29969,
36250: 24573,
36251: 24794,
36252: 39592,
36253: 29403,
36254: 36796,
36255: 27492,
36256: 38915,
36257: 20170,
36258: 22256,
36259: 22372,
36260: 22718,
36261: 23130,
36262: 24680,
36263: 25031,
36264: 26127,
36265: 26118,
36266: 26681,
36267: 26801,
36268: 28151,
36269: 30165,
36270: 32058,
36271: 33390,
36272: 39746,
36273: 20123,
36274: 20304,
36275: 21449,
36276: 21766,
36277: 23919,
36278: 24038,
36279: 24046,
36280: 26619,
36281: 27801,
36282: 29811,
36283: 30722,
36284: 35408,
36285: 37782,
36286: 35039,
36287: 22352,
36288: 24231,
36289: 25387,
36290: 20661,
36291: 20652,
36292: 20877,
36293: 26368,
36294: 21705,
36295: 22622,
36296: 22971,
36297: 23472,
36298: 24425,
36299: 25165,
36300: 25505,
36301: 26685,
36302: 27507,
36303: 28168,
36304: 28797,
36305: 37319,
36306: 29312,
36307: 30741,
36308: 30758,
36309: 31085,
36310: 25998,
36311: 32048,
36312: 33756,
36313: 35009,
36314: 36617,
36315: 38555,
36316: 21092,
36317: 22312,
36318: 26448,
36319: 32618,
36320: 36001,
36321: 20916,
36322: 22338,
36323: 38442,
36324: 22586,
36325: 27018,
36326: 32948,
36327: 21682,
36328: 23822,
36329: 22524,
36330: 30869,
36331: 40442,
36332: 20316,
36333: 21066,
36334: 21643,
36335: 25662,
36336: 26152,
36337: 26388,
36338: 26613,
36339: 31364,
36340: 31574,
36341: 32034,
36342: 37679,
36343: 26716,
36344: 39853,
36345: 31545,
36346: 21273,
36347: 20874,
36348: 21047,
36416: 23519,
36417: 25334,
36418: 25774,
36419: 25830,
36420: 26413,
36421: 27578,
36422: 34217,
36423: 38609,
36424: 30352,
36425: 39894,
36426: 25420,
36427: 37638,
36428: 39851,
36429: 30399,
36430: 26194,
36431: 19977,
36432: 20632,
36433: 21442,
36434: 23665,
36435: 24808,
36436: 25746,
36437: 25955,
36438: 26719,
36439: 29158,
36440: 29642,
36441: 29987,
36442: 31639,
36443: 32386,
36444: 34453,
36445: 35715,
36446: 36059,
36447: 37240,
36448: 39184,
36449: 26028,
36450: 26283,
36451: 27531,
36452: 20181,
36453: 20180,
36454: 20282,
36455: 20351,
36456: 21050,
36457: 21496,
36458: 21490,
36459: 21987,
36460: 22235,
36461: 22763,
36462: 22987,
36463: 22985,
36464: 23039,
36465: 23376,
36466: 23629,
36467: 24066,
36468: 24107,
36469: 24535,
36470: 24605,
36471: 25351,
36472: 25903,
36473: 23388,
36474: 26031,
36475: 26045,
36476: 26088,
36477: 26525,
36478: 27490,
36480: 27515,
36481: 27663,
36482: 29509,
36483: 31049,
36484: 31169,
36485: 31992,
36486: 32025,
36487: 32043,
36488: 32930,
36489: 33026,
36490: 33267,
36491: 35222,
36492: 35422,
36493: 35433,
36494: 35430,
36495: 35468,
36496: 35566,
36497: 36039,
36498: 36060,
36499: 38604,
36500: 39164,
36501: 27503,
36502: 20107,
36503: 20284,
36504: 20365,
36505: 20816,
36506: 23383,
36507: 23546,
36508: 24904,
36509: 25345,
36510: 26178,
36511: 27425,
36512: 28363,
36513: 27835,
36514: 29246,
36515: 29885,
36516: 30164,
36517: 30913,
36518: 31034,
36519: 32780,
36520: 32819,
36521: 33258,
36522: 33940,
36523: 36766,
36524: 27728,
36525: 40575,
36526: 24335,
36527: 35672,
36528: 40235,
36529: 31482,
36530: 36600,
36531: 23437,
36532: 38635,
36533: 19971,
36534: 21489,
36535: 22519,
36536: 22833,
36537: 23241,
36538: 23460,
36539: 24713,
36540: 28287,
36541: 28422,
36542: 30142,
36543: 36074,
36544: 23455,
36545: 34048,
36546: 31712,
36547: 20594,
36548: 26612,
36549: 33437,
36550: 23649,
36551: 34122,
36552: 32286,
36553: 33294,
36554: 20889,
36555: 23556,
36556: 25448,
36557: 36198,
36558: 26012,
36559: 29038,
36560: 31038,
36561: 32023,
36562: 32773,
36563: 35613,
36564: 36554,
36565: 36974,
36566: 34503,
36567: 37034,
36568: 20511,
36569: 21242,
36570: 23610,
36571: 26451,
36572: 28796,
36573: 29237,
36574: 37196,
36575: 37320,
36576: 37675,
36577: 33509,
36578: 23490,
36579: 24369,
36580: 24825,
36581: 20027,
36582: 21462,
36583: 23432,
36584: 25163,
36585: 26417,
36586: 27530,
36587: 29417,
36588: 29664,
36589: 31278,
36590: 33131,
36591: 36259,
36592: 37202,
36593: 39318,
36594: 20754,
36595: 21463,
36596: 21610,
36597: 23551,
36598: 25480,
36599: 27193,
36600: 32172,
36601: 38656,
36602: 22234,
36603: 21454,
36604: 21608,
36672: 23447,
36673: 23601,
36674: 24030,
36675: 20462,
36676: 24833,
36677: 25342,
36678: 27954,
36679: 31168,
36680: 31179,
36681: 32066,
36682: 32333,
36683: 32722,
36684: 33261,
36685: 33311,
36686: 33936,
36687: 34886,
36688: 35186,
36689: 35728,
36690: 36468,
36691: 36655,
36692: 36913,
36693: 37195,
36694: 37228,
36695: 38598,
36696: 37276,
36697: 20160,
36698: 20303,
36699: 20805,
36700: 21313,
36701: 24467,
36702: 25102,
36703: 26580,
36704: 27713,
36705: 28171,
36706: 29539,
36707: 32294,
36708: 37325,
36709: 37507,
36710: 21460,
36711: 22809,
36712: 23487,
36713: 28113,
36714: 31069,
36715: 32302,
36716: 31899,
36717: 22654,
36718: 29087,
36719: 20986,
36720: 34899,
36721: 36848,
36722: 20426,
36723: 23803,
36724: 26149,
36725: 30636,
36726: 31459,
36727: 33308,
36728: 39423,
36729: 20934,
36730: 24490,
36731: 26092,
36732: 26991,
36733: 27529,
36734: 28147,
36736: 28310,
36737: 28516,
36738: 30462,
36739: 32020,
36740: 24033,
36741: 36981,
36742: 37255,
36743: 38918,
36744: 20966,
36745: 21021,
36746: 25152,
36747: 26257,
36748: 26329,
36749: 28186,
36750: 24246,
36751: 32210,
36752: 32626,
36753: 26360,
36754: 34223,
36755: 34295,
36756: 35576,
36757: 21161,
36758: 21465,
36759: 22899,
36760: 24207,
36761: 24464,
36762: 24661,
36763: 37604,
36764: 38500,
36765: 20663,
36766: 20767,
36767: 21213,
36768: 21280,
36769: 21319,
36770: 21484,
36771: 21736,
36772: 21830,
36773: 21809,
36774: 22039,
36775: 22888,
36776: 22974,
36777: 23100,
36778: 23477,
36779: 23558,
36780: 23567,
36781: 23569,
36782: 23578,
36783: 24196,
36784: 24202,
36785: 24288,
36786: 24432,
36787: 25215,
36788: 25220,
36789: 25307,
36790: 25484,
36791: 25463,
36792: 26119,
36793: 26124,
36794: 26157,
36795: 26230,
36796: 26494,
36797: 26786,
36798: 27167,
36799: 27189,
36800: 27836,
36801: 28040,
36802: 28169,
36803: 28248,
36804: 28988,
36805: 28966,
36806: 29031,
36807: 30151,
36808: 30465,
36809: 30813,
36810: 30977,
36811: 31077,
36812: 31216,
36813: 31456,
36814: 31505,
36815: 31911,
36816: 32057,
36817: 32918,
36818: 33750,
36819: 33931,
36820: 34121,
36821: 34909,
36822: 35059,
36823: 35359,
36824: 35388,
36825: 35412,
36826: 35443,
36827: 35937,
36828: 36062,
36829: 37284,
36830: 37478,
36831: 37758,
36832: 37912,
36833: 38556,
36834: 38808,
36835: 19978,
36836: 19976,
36837: 19998,
36838: 20055,
36839: 20887,
36840: 21104,
36841: 22478,
36842: 22580,
36843: 22732,
36844: 23330,
36845: 24120,
36846: 24773,
36847: 25854,
36848: 26465,
36849: 26454,
36850: 27972,
36851: 29366,
36852: 30067,
36853: 31331,
36854: 33976,
36855: 35698,
36856: 37304,
36857: 37664,
36858: 22065,
36859: 22516,
36860: 39166,
36928: 25325,
36929: 26893,
36930: 27542,
36931: 29165,
36932: 32340,
36933: 32887,
36934: 33394,
36935: 35302,
36936: 39135,
36937: 34645,
36938: 36785,
36939: 23611,
36940: 20280,
36941: 20449,
36942: 20405,
36943: 21767,
36944: 23072,
36945: 23517,
36946: 23529,
36947: 24515,
36948: 24910,
36949: 25391,
36950: 26032,
36951: 26187,
36952: 26862,
36953: 27035,
36954: 28024,
36955: 28145,
36956: 30003,
36957: 30137,
36958: 30495,
36959: 31070,
36960: 31206,
36961: 32051,
36962: 33251,
36963: 33455,
36964: 34218,
36965: 35242,
36966: 35386,
36967: 36523,
36968: 36763,
36969: 36914,
36970: 37341,
36971: 38663,
36972: 20154,
36973: 20161,
36974: 20995,
36975: 22645,
36976: 22764,
36977: 23563,
36978: 29978,
36979: 23613,
36980: 33102,
36981: 35338,
36982: 36805,
36983: 38499,
36984: 38765,
36985: 31525,
36986: 35535,
36987: 38920,
36988: 37218,
36989: 22259,
36990: 21416,
36992: 36887,
36993: 21561,
36994: 22402,
36995: 24101,
36996: 25512,
36997: 27700,
36998: 28810,
36999: 30561,
37e3: 31883,
37001: 32736,
37002: 34928,
37003: 36930,
37004: 37204,
37005: 37648,
37006: 37656,
37007: 38543,
37008: 29790,
37009: 39620,
37010: 23815,
37011: 23913,
37012: 25968,
37013: 26530,
37014: 36264,
37015: 38619,
37016: 25454,
37017: 26441,
37018: 26905,
37019: 33733,
37020: 38935,
37021: 38592,
37022: 35070,
37023: 28548,
37024: 25722,
37025: 23544,
37026: 19990,
37027: 28716,
37028: 30045,
37029: 26159,
37030: 20932,
37031: 21046,
37032: 21218,
37033: 22995,
37034: 24449,
37035: 24615,
37036: 25104,
37037: 25919,
37038: 25972,
37039: 26143,
37040: 26228,
37041: 26866,
37042: 26646,
37043: 27491,
37044: 28165,
37045: 29298,
37046: 29983,
37047: 30427,
37048: 31934,
37049: 32854,
37050: 22768,
37051: 35069,
37052: 35199,
37053: 35488,
37054: 35475,
37055: 35531,
37056: 36893,
37057: 37266,
37058: 38738,
37059: 38745,
37060: 25993,
37061: 31246,
37062: 33030,
37063: 38587,
37064: 24109,
37065: 24796,
37066: 25114,
37067: 26021,
37068: 26132,
37069: 26512,
37070: 30707,
37071: 31309,
37072: 31821,
37073: 32318,
37074: 33034,
37075: 36012,
37076: 36196,
37077: 36321,
37078: 36447,
37079: 30889,
37080: 20999,
37081: 25305,
37082: 25509,
37083: 25666,
37084: 25240,
37085: 35373,
37086: 31363,
37087: 31680,
37088: 35500,
37089: 38634,
37090: 32118,
37091: 33292,
37092: 34633,
37093: 20185,
37094: 20808,
37095: 21315,
37096: 21344,
37097: 23459,
37098: 23554,
37099: 23574,
37100: 24029,
37101: 25126,
37102: 25159,
37103: 25776,
37104: 26643,
37105: 26676,
37106: 27849,
37107: 27973,
37108: 27927,
37109: 26579,
37110: 28508,
37111: 29006,
37112: 29053,
37113: 26059,
37114: 31359,
37115: 31661,
37116: 32218,
37184: 32330,
37185: 32680,
37186: 33146,
37187: 33307,
37188: 33337,
37189: 34214,
37190: 35438,
37191: 36046,
37192: 36341,
37193: 36984,
37194: 36983,
37195: 37549,
37196: 37521,
37197: 38275,
37198: 39854,
37199: 21069,
37200: 21892,
37201: 28472,
37202: 28982,
37203: 20840,
37204: 31109,
37205: 32341,
37206: 33203,
37207: 31950,
37208: 22092,
37209: 22609,
37210: 23720,
37211: 25514,
37212: 26366,
37213: 26365,
37214: 26970,
37215: 29401,
37216: 30095,
37217: 30094,
37218: 30990,
37219: 31062,
37220: 31199,
37221: 31895,
37222: 32032,
37223: 32068,
37224: 34311,
37225: 35380,
37226: 38459,
37227: 36961,
37228: 40736,
37229: 20711,
37230: 21109,
37231: 21452,
37232: 21474,
37233: 20489,
37234: 21930,
37235: 22766,
37236: 22863,
37237: 29245,
37238: 23435,
37239: 23652,
37240: 21277,
37241: 24803,
37242: 24819,
37243: 25436,
37244: 25475,
37245: 25407,
37246: 25531,
37248: 25805,
37249: 26089,
37250: 26361,
37251: 24035,
37252: 27085,
37253: 27133,
37254: 28437,
37255: 29157,
37256: 20105,
37257: 30185,
37258: 30456,
37259: 31379,
37260: 31967,
37261: 32207,
37262: 32156,
37263: 32865,
37264: 33609,
37265: 33624,
37266: 33900,
37267: 33980,
37268: 34299,
37269: 35013,
37270: 36208,
37271: 36865,
37272: 36973,
37273: 37783,
37274: 38684,
37275: 39442,
37276: 20687,
37277: 22679,
37278: 24974,
37279: 33235,
37280: 34101,
37281: 36104,
37282: 36896,
37283: 20419,
37284: 20596,
37285: 21063,
37286: 21363,
37287: 24687,
37288: 25417,
37289: 26463,
37290: 28204,
37291: 36275,
37292: 36895,
37293: 20439,
37294: 23646,
37295: 36042,
37296: 26063,
37297: 32154,
37298: 21330,
37299: 34966,
37300: 20854,
37301: 25539,
37302: 23384,
37303: 23403,
37304: 23562,
37305: 25613,
37306: 26449,
37307: 36956,
37308: 20182,
37309: 22810,
37310: 22826,
37311: 27760,
37312: 35409,
37313: 21822,
37314: 22549,
37315: 22949,
37316: 24816,
37317: 25171,
37318: 26561,
37319: 33333,
37320: 26965,
37321: 38464,
37322: 39364,
37323: 39464,
37324: 20307,
37325: 22534,
37326: 23550,
37327: 32784,
37328: 23729,
37329: 24111,
37330: 24453,
37331: 24608,
37332: 24907,
37333: 25140,
37334: 26367,
37335: 27888,
37336: 28382,
37337: 32974,
37338: 33151,
37339: 33492,
37340: 34955,
37341: 36024,
37342: 36864,
37343: 36910,
37344: 38538,
37345: 40667,
37346: 39899,
37347: 20195,
37348: 21488,
37349: 22823,
37350: 31532,
37351: 37261,
37352: 38988,
37353: 40441,
37354: 28381,
37355: 28711,
37356: 21331,
37357: 21828,
37358: 23429,
37359: 25176,
37360: 25246,
37361: 25299,
37362: 27810,
37363: 28655,
37364: 29730,
37365: 35351,
37366: 37944,
37367: 28609,
37368: 35582,
37369: 33592,
37370: 20967,
37371: 34552,
37372: 21482,
37440: 21481,
37441: 20294,
37442: 36948,
37443: 36784,
37444: 22890,
37445: 33073,
37446: 24061,
37447: 31466,
37448: 36799,
37449: 26842,
37450: 35895,
37451: 29432,
37452: 40008,
37453: 27197,
37454: 35504,
37455: 20025,
37456: 21336,
37457: 22022,
37458: 22374,
37459: 25285,
37460: 25506,
37461: 26086,
37462: 27470,
37463: 28129,
37464: 28251,
37465: 28845,
37466: 30701,
37467: 31471,
37468: 31658,
37469: 32187,
37470: 32829,
37471: 32966,
37472: 34507,
37473: 35477,
37474: 37723,
37475: 22243,
37476: 22727,
37477: 24382,
37478: 26029,
37479: 26262,
37480: 27264,
37481: 27573,
37482: 30007,
37483: 35527,
37484: 20516,
37485: 30693,
37486: 22320,
37487: 24347,
37488: 24677,
37489: 26234,
37490: 27744,
37491: 30196,
37492: 31258,
37493: 32622,
37494: 33268,
37495: 34584,
37496: 36933,
37497: 39347,
37498: 31689,
37499: 30044,
37500: 31481,
37501: 31569,
37502: 33988,
37504: 36880,
37505: 31209,
37506: 31378,
37507: 33590,
37508: 23265,
37509: 30528,
37510: 20013,
37511: 20210,
37512: 23449,
37513: 24544,
37514: 25277,
37515: 26172,
37516: 26609,
37517: 27880,
37518: 34411,
37519: 34935,
37520: 35387,
37521: 37198,
37522: 37619,
37523: 39376,
37524: 27159,
37525: 28710,
37526: 29482,
37527: 33511,
37528: 33879,
37529: 36015,
37530: 19969,
37531: 20806,
37532: 20939,
37533: 21899,
37534: 23541,
37535: 24086,
37536: 24115,
37537: 24193,
37538: 24340,
37539: 24373,
37540: 24427,
37541: 24500,
37542: 25074,
37543: 25361,
37544: 26274,
37545: 26397,
37546: 28526,
37547: 29266,
37548: 30010,
37549: 30522,
37550: 32884,
37551: 33081,
37552: 33144,
37553: 34678,
37554: 35519,
37555: 35548,
37556: 36229,
37557: 36339,
37558: 37530,
37559: 38263,
37560: 38914,
37561: 40165,
37562: 21189,
37563: 25431,
37564: 30452,
37565: 26389,
37566: 27784,
37567: 29645,
37568: 36035,
37569: 37806,
37570: 38515,
37571: 27941,
37572: 22684,
37573: 26894,
37574: 27084,
37575: 36861,
37576: 37786,
37577: 30171,
37578: 36890,
37579: 22618,
37580: 26626,
37581: 25524,
37582: 27131,
37583: 20291,
37584: 28460,
37585: 26584,
37586: 36795,
37587: 34086,
37588: 32180,
37589: 37716,
37590: 26943,
37591: 28528,
37592: 22378,
37593: 22775,
37594: 23340,
37595: 32044,
37596: 29226,
37597: 21514,
37598: 37347,
37599: 40372,
37600: 20141,
37601: 20302,
37602: 20572,
37603: 20597,
37604: 21059,
37605: 35998,
37606: 21576,
37607: 22564,
37608: 23450,
37609: 24093,
37610: 24213,
37611: 24237,
37612: 24311,
37613: 24351,
37614: 24716,
37615: 25269,
37616: 25402,
37617: 25552,
37618: 26799,
37619: 27712,
37620: 30855,
37621: 31118,
37622: 31243,
37623: 32224,
37624: 33351,
37625: 35330,
37626: 35558,
37627: 36420,
37628: 36883,
37696: 37048,
37697: 37165,
37698: 37336,
37699: 40718,
37700: 27877,
37701: 25688,
37702: 25826,
37703: 25973,
37704: 28404,
37705: 30340,
37706: 31515,
37707: 36969,
37708: 37841,
37709: 28346,
37710: 21746,
37711: 24505,
37712: 25764,
37713: 36685,
37714: 36845,
37715: 37444,
37716: 20856,
37717: 22635,
37718: 22825,
37719: 23637,
37720: 24215,
37721: 28155,
37722: 32399,
37723: 29980,
37724: 36028,
37725: 36578,
37726: 39003,
37727: 28857,
37728: 20253,
37729: 27583,
37730: 28593,
37731: 3e4,
37732: 38651,
37733: 20814,
37734: 21520,
37735: 22581,
37736: 22615,
37737: 22956,
37738: 23648,
37739: 24466,
37740: 26007,
37741: 26460,
37742: 28193,
37743: 30331,
37744: 33759,
37745: 36077,
37746: 36884,
37747: 37117,
37748: 37709,
37749: 30757,
37750: 30778,
37751: 21162,
37752: 24230,
37753: 22303,
37754: 22900,
37755: 24594,
37756: 20498,
37757: 20826,
37758: 20908,
37760: 20941,
37761: 20992,
37762: 21776,
37763: 22612,
37764: 22616,
37765: 22871,
37766: 23445,
37767: 23798,
37768: 23947,
37769: 24764,
37770: 25237,
37771: 25645,
37772: 26481,
37773: 26691,
37774: 26812,
37775: 26847,
37776: 30423,
37777: 28120,
37778: 28271,
37779: 28059,
37780: 28783,
37781: 29128,
37782: 24403,
37783: 30168,
37784: 31095,
37785: 31561,
37786: 31572,
37787: 31570,
37788: 31958,
37789: 32113,
37790: 21040,
37791: 33891,
37792: 34153,
37793: 34276,
37794: 35342,
37795: 35588,
37796: 35910,
37797: 36367,
37798: 36867,
37799: 36879,
37800: 37913,
37801: 38518,
37802: 38957,
37803: 39472,
37804: 38360,
37805: 20685,
37806: 21205,
37807: 21516,
37808: 22530,
37809: 23566,
37810: 24999,
37811: 25758,
37812: 27934,
37813: 30643,
37814: 31461,
37815: 33012,
37816: 33796,
37817: 36947,
37818: 37509,
37819: 23776,
37820: 40199,
37821: 21311,
37822: 24471,
37823: 24499,
37824: 28060,
37825: 29305,
37826: 30563,
37827: 31167,
37828: 31716,
37829: 27602,
37830: 29420,
37831: 35501,
37832: 26627,
37833: 27233,
37834: 20984,
37835: 31361,
37836: 26932,
37837: 23626,
37838: 40182,
37839: 33515,
37840: 23493,
37841: 37193,
37842: 28702,
37843: 22136,
37844: 23663,
37845: 24775,
37846: 25958,
37847: 27788,
37848: 35930,
37849: 36929,
37850: 38931,
37851: 21585,
37852: 26311,
37853: 37389,
37854: 22856,
37855: 37027,
37856: 20869,
37857: 20045,
37858: 20970,
37859: 34201,
37860: 35598,
37861: 28760,
37862: 25466,
37863: 37707,
37864: 26978,
37865: 39348,
37866: 32260,
37867: 30071,
37868: 21335,
37869: 26976,
37870: 36575,
37871: 38627,
37872: 27741,
37873: 20108,
37874: 23612,
37875: 24336,
37876: 36841,
37877: 21250,
37878: 36049,
37879: 32905,
37880: 34425,
37881: 24319,
37882: 26085,
37883: 20083,
37884: 20837,
37952: 22914,
37953: 23615,
37954: 38894,
37955: 20219,
37956: 22922,
37957: 24525,
37958: 35469,
37959: 28641,
37960: 31152,
37961: 31074,
37962: 23527,
37963: 33905,
37964: 29483,
37965: 29105,
37966: 24180,
37967: 24565,
37968: 25467,
37969: 25754,
37970: 29123,
37971: 31896,
37972: 20035,
37973: 24316,
37974: 20043,
37975: 22492,
37976: 22178,
37977: 24745,
37978: 28611,
37979: 32013,
37980: 33021,
37981: 33075,
37982: 33215,
37983: 36786,
37984: 35223,
37985: 34468,
37986: 24052,
37987: 25226,
37988: 25773,
37989: 35207,
37990: 26487,
37991: 27874,
37992: 27966,
37993: 29750,
37994: 30772,
37995: 23110,
37996: 32629,
37997: 33453,
37998: 39340,
37999: 20467,
38e3: 24259,
38001: 25309,
38002: 25490,
38003: 25943,
38004: 26479,
38005: 30403,
38006: 29260,
38007: 32972,
38008: 32954,
38009: 36649,
38010: 37197,
38011: 20493,
38012: 22521,
38013: 23186,
38014: 26757,
38016: 26995,
38017: 29028,
38018: 29437,
38019: 36023,
38020: 22770,
38021: 36064,
38022: 38506,
38023: 36889,
38024: 34687,
38025: 31204,
38026: 30695,
38027: 33833,
38028: 20271,
38029: 21093,
38030: 21338,
38031: 25293,
38032: 26575,
38033: 27850,
38034: 30333,
38035: 31636,
38036: 31893,
38037: 33334,
38038: 34180,
38039: 36843,
38040: 26333,
38041: 28448,
38042: 29190,
38043: 32283,
38044: 33707,
38045: 39361,
38046: 40614,
38047: 20989,
38048: 31665,
38049: 30834,
38050: 31672,
38051: 32903,
38052: 31560,
38053: 27368,
38054: 24161,
38055: 32908,
38056: 30033,
38057: 30048,
38058: 20843,
38059: 37474,
38060: 28300,
38061: 30330,
38062: 37271,
38063: 39658,
38064: 20240,
38065: 32624,
38066: 25244,
38067: 31567,
38068: 38309,
38069: 40169,
38070: 22138,
38071: 22617,
38072: 34532,
38073: 38588,
38074: 20276,
38075: 21028,
38076: 21322,
38077: 21453,
38078: 21467,
38079: 24070,
38080: 25644,
38081: 26001,
38082: 26495,
38083: 27710,
38084: 27726,
38085: 29256,
38086: 29359,
38087: 29677,
38088: 30036,
38089: 32321,
38090: 33324,
38091: 34281,
38092: 36009,
38093: 31684,
38094: 37318,
38095: 29033,
38096: 38930,
38097: 39151,
38098: 25405,
38099: 26217,
38100: 30058,
38101: 30436,
38102: 30928,
38103: 34115,
38104: 34542,
38105: 21290,
38106: 21329,
38107: 21542,
38108: 22915,
38109: 24199,
38110: 24444,
38111: 24754,
38112: 25161,
38113: 25209,
38114: 25259,
38115: 26e3,
38116: 27604,
38117: 27852,
38118: 30130,
38119: 30382,
38120: 30865,
38121: 31192,
38122: 32203,
38123: 32631,
38124: 32933,
38125: 34987,
38126: 35513,
38127: 36027,
38128: 36991,
38129: 38750,
38130: 39131,
38131: 27147,
38132: 31800,
38133: 20633,
38134: 23614,
38135: 24494,
38136: 26503,
38137: 27608,
38138: 29749,
38139: 30473,
38140: 32654,
38208: 40763,
38209: 26570,
38210: 31255,
38211: 21305,
38212: 30091,
38213: 39661,
38214: 24422,
38215: 33181,
38216: 33777,
38217: 32920,
38218: 24380,
38219: 24517,
38220: 30050,
38221: 31558,
38222: 36924,
38223: 26727,
38224: 23019,
38225: 23195,
38226: 32016,
38227: 30334,
38228: 35628,
38229: 20469,
38230: 24426,
38231: 27161,
38232: 27703,
38233: 28418,
38234: 29922,
38235: 31080,
38236: 34920,
38237: 35413,
38238: 35961,
38239: 24287,
38240: 25551,
38241: 30149,
38242: 31186,
38243: 33495,
38244: 37672,
38245: 37618,
38246: 33948,
38247: 34541,
38248: 39981,
38249: 21697,
38250: 24428,
38251: 25996,
38252: 27996,
38253: 28693,
38254: 36007,
38255: 36051,
38256: 38971,
38257: 25935,
38258: 29942,
38259: 19981,
38260: 20184,
38261: 22496,
38262: 22827,
38263: 23142,
38264: 23500,
38265: 20904,
38266: 24067,
38267: 24220,
38268: 24598,
38269: 25206,
38270: 25975,
38272: 26023,
38273: 26222,
38274: 28014,
38275: 29238,
38276: 31526,
38277: 33104,
38278: 33178,
38279: 33433,
38280: 35676,
38281: 36e3,
38282: 36070,
38283: 36212,
38284: 38428,
38285: 38468,
38286: 20398,
38287: 25771,
38288: 27494,
38289: 33310,
38290: 33889,
38291: 34154,
38292: 37096,
38293: 23553,
38294: 26963,
38295: 39080,
38296: 33914,
38297: 34135,
38298: 20239,
38299: 21103,
38300: 24489,
38301: 24133,
38302: 26381,
38303: 31119,
38304: 33145,
38305: 35079,
38306: 35206,
38307: 28149,
38308: 24343,
38309: 25173,
38310: 27832,
38311: 20175,
38312: 29289,
38313: 39826,
38314: 20998,
38315: 21563,
38316: 22132,
38317: 22707,
38318: 24996,
38319: 25198,
38320: 28954,
38321: 22894,
38322: 31881,
38323: 31966,
38324: 32027,
38325: 38640,
38326: 25991,
38327: 32862,
38328: 19993,
38329: 20341,
38330: 20853,
38331: 22592,
38332: 24163,
38333: 24179,
38334: 24330,
38335: 26564,
38336: 20006,
38337: 34109,
38338: 38281,
38339: 38491,
38340: 31859,
38341: 38913,
38342: 20731,
38343: 22721,
38344: 30294,
38345: 30887,
38346: 21029,
38347: 30629,
38348: 34065,
38349: 31622,
38350: 20559,
38351: 22793,
38352: 29255,
38353: 31687,
38354: 32232,
38355: 36794,
38356: 36820,
38357: 36941,
38358: 20415,
38359: 21193,
38360: 23081,
38361: 24321,
38362: 38829,
38363: 20445,
38364: 33303,
38365: 37610,
38366: 22275,
38367: 25429,
38368: 27497,
38369: 29995,
38370: 35036,
38371: 36628,
38372: 31298,
38373: 21215,
38374: 22675,
38375: 24917,
38376: 25098,
38377: 26286,
38378: 27597,
38379: 31807,
38380: 33769,
38381: 20515,
38382: 20472,
38383: 21253,
38384: 21574,
38385: 22577,
38386: 22857,
38387: 23453,
38388: 23792,
38389: 23791,
38390: 23849,
38391: 24214,
38392: 25265,
38393: 25447,
38394: 25918,
38395: 26041,
38396: 26379,
38464: 27861,
38465: 27873,
38466: 28921,
38467: 30770,
38468: 32299,
38469: 32990,
38470: 33459,
38471: 33804,
38472: 34028,
38473: 34562,
38474: 35090,
38475: 35370,
38476: 35914,
38477: 37030,
38478: 37586,
38479: 39165,
38480: 40179,
38481: 40300,
38482: 20047,
38483: 20129,
38484: 20621,
38485: 21078,
38486: 22346,
38487: 22952,
38488: 24125,
38489: 24536,
38490: 24537,
38491: 25151,
38492: 26292,
38493: 26395,
38494: 26576,
38495: 26834,
38496: 20882,
38497: 32033,
38498: 32938,
38499: 33192,
38500: 35584,
38501: 35980,
38502: 36031,
38503: 37502,
38504: 38450,
38505: 21536,
38506: 38956,
38507: 21271,
38508: 20693,
38509: 21340,
38510: 22696,
38511: 25778,
38512: 26420,
38513: 29287,
38514: 30566,
38515: 31302,
38516: 37350,
38517: 21187,
38518: 27809,
38519: 27526,
38520: 22528,
38521: 24140,
38522: 22868,
38523: 26412,
38524: 32763,
38525: 20961,
38526: 30406,
38528: 25705,
38529: 30952,
38530: 39764,
38531: 40635,
38532: 22475,
38533: 22969,
38534: 26151,
38535: 26522,
38536: 27598,
38537: 21737,
38538: 27097,
38539: 24149,
38540: 33180,
38541: 26517,
38542: 39850,
38543: 26622,
38544: 40018,
38545: 26717,
38546: 20134,
38547: 20451,
38548: 21448,
38549: 25273,
38550: 26411,
38551: 27819,
38552: 36804,
38553: 20397,
38554: 32365,
38555: 40639,
38556: 19975,
38557: 24930,
38558: 28288,
38559: 28459,
38560: 34067,
38561: 21619,
38562: 26410,
38563: 39749,
38564: 24051,
38565: 31637,
38566: 23724,
38567: 23494,
38568: 34588,
38569: 28234,
38570: 34001,
38571: 31252,
38572: 33032,
38573: 22937,
38574: 31885,
38575: 27665,
38576: 30496,
38577: 21209,
38578: 22818,
38579: 28961,
38580: 29279,
38581: 30683,
38582: 38695,
38583: 40289,
38584: 26891,
38585: 23167,
38586: 23064,
38587: 20901,
38588: 21517,
38589: 21629,
38590: 26126,
38591: 30431,
38592: 36855,
38593: 37528,
38594: 40180,
38595: 23018,
38596: 29277,
38597: 28357,
38598: 20813,
38599: 26825,
38600: 32191,
38601: 32236,
38602: 38754,
38603: 40634,
38604: 25720,
38605: 27169,
38606: 33538,
38607: 22916,
38608: 23391,
38609: 27611,
38610: 29467,
38611: 30450,
38612: 32178,
38613: 32791,
38614: 33945,
38615: 20786,
38616: 26408,
38617: 40665,
38618: 30446,
38619: 26466,
38620: 21247,
38621: 39173,
38622: 23588,
38623: 25147,
38624: 31870,
38625: 36016,
38626: 21839,
38627: 24758,
38628: 32011,
38629: 38272,
38630: 21249,
38631: 20063,
38632: 20918,
38633: 22812,
38634: 29242,
38635: 32822,
38636: 37326,
38637: 24357,
38638: 30690,
38639: 21380,
38640: 24441,
38641: 32004,
38642: 34220,
38643: 35379,
38644: 36493,
38645: 38742,
38646: 26611,
38647: 34222,
38648: 37971,
38649: 24841,
38650: 24840,
38651: 27833,
38652: 30290,
38720: 35565,
38721: 36664,
38722: 21807,
38723: 20305,
38724: 20778,
38725: 21191,
38726: 21451,
38727: 23461,
38728: 24189,
38729: 24736,
38730: 24962,
38731: 25558,
38732: 26377,
38733: 26586,
38734: 28263,
38735: 28044,
38736: 29494,
38737: 29495,
38738: 30001,
38739: 31056,
38740: 35029,
38741: 35480,
38742: 36938,
38743: 37009,
38744: 37109,
38745: 38596,
38746: 34701,
38747: 22805,
38748: 20104,
38749: 20313,
38750: 19982,
38751: 35465,
38752: 36671,
38753: 38928,
38754: 20653,
38755: 24188,
38756: 22934,
38757: 23481,
38758: 24248,
38759: 25562,
38760: 25594,
38761: 25793,
38762: 26332,
38763: 26954,
38764: 27096,
38765: 27915,
38766: 28342,
38767: 29076,
38768: 29992,
38769: 31407,
38770: 32650,
38771: 32768,
38772: 33865,
38773: 33993,
38774: 35201,
38775: 35617,
38776: 36362,
38777: 36965,
38778: 38525,
38779: 39178,
38780: 24958,
38781: 25233,
38782: 27442,
38784: 27779,
38785: 28020,
38786: 32716,
38787: 32764,
38788: 28096,
38789: 32645,
38790: 34746,
38791: 35064,
38792: 26469,
38793: 33713,
38794: 38972,
38795: 38647,
38796: 27931,
38797: 32097,
38798: 33853,
38799: 37226,
38800: 20081,
38801: 21365,
38802: 23888,
38803: 27396,
38804: 28651,
38805: 34253,
38806: 34349,
38807: 35239,
38808: 21033,
38809: 21519,
38810: 23653,
38811: 26446,
38812: 26792,
38813: 29702,
38814: 29827,
38815: 30178,
38816: 35023,
38817: 35041,
38818: 37324,
38819: 38626,
38820: 38520,
38821: 24459,
38822: 29575,
38823: 31435,
38824: 33870,
38825: 25504,
38826: 30053,
38827: 21129,
38828: 27969,
38829: 28316,
38830: 29705,
38831: 30041,
38832: 30827,
38833: 31890,
38834: 38534,
38835: 31452,
38836: 40845,
38837: 20406,
38838: 24942,
38839: 26053,
38840: 34396,
38841: 20102,
38842: 20142,
38843: 20698,
38844: 20001,
38845: 20940,
38846: 23534,
38847: 26009,
38848: 26753,
38849: 28092,
38850: 29471,
38851: 30274,
38852: 30637,
38853: 31260,
38854: 31975,
38855: 33391,
38856: 35538,
38857: 36988,
38858: 37327,
38859: 38517,
38860: 38936,
38861: 21147,
38862: 32209,
38863: 20523,
38864: 21400,
38865: 26519,
38866: 28107,
38867: 29136,
38868: 29747,
38869: 33256,
38870: 36650,
38871: 38563,
38872: 40023,
38873: 40607,
38874: 29792,
38875: 22593,
38876: 28057,
38877: 32047,
38878: 39006,
38879: 20196,
38880: 20278,
38881: 20363,
38882: 20919,
38883: 21169,
38884: 23994,
38885: 24604,
38886: 29618,
38887: 31036,
38888: 33491,
38889: 37428,
38890: 38583,
38891: 38646,
38892: 38666,
38893: 40599,
38894: 40802,
38895: 26278,
38896: 27508,
38897: 21015,
38898: 21155,
38899: 28872,
38900: 35010,
38901: 24265,
38902: 24651,
38903: 24976,
38904: 28451,
38905: 29001,
38906: 31806,
38907: 32244,
38908: 32879,
38976: 34030,
38977: 36899,
38978: 37676,
38979: 21570,
38980: 39791,
38981: 27347,
38982: 28809,
38983: 36034,
38984: 36335,
38985: 38706,
38986: 21172,
38987: 23105,
38988: 24266,
38989: 24324,
38990: 26391,
38991: 27004,
38992: 27028,
38993: 28010,
38994: 28431,
38995: 29282,
38996: 29436,
38997: 31725,
38998: 32769,
38999: 32894,
39e3: 34635,
39001: 37070,
39002: 20845,
39003: 40595,
39004: 31108,
39005: 32907,
39006: 37682,
39007: 35542,
39008: 20525,
39009: 21644,
39010: 35441,
39011: 27498,
39012: 36036,
39013: 33031,
39014: 24785,
39015: 26528,
39016: 40434,
39017: 20121,
39018: 20120,
39019: 39952,
39020: 35435,
39021: 34241,
39022: 34152,
39023: 26880,
39024: 28286,
39025: 30871,
39026: 33109,
39071: 24332,
39072: 19984,
39073: 19989,
39074: 20010,
39075: 20017,
39076: 20022,
39077: 20028,
39078: 20031,
39079: 20034,
39080: 20054,
39081: 20056,
39082: 20098,
39083: 20101,
39084: 35947,
39085: 20106,
39086: 33298,
39087: 24333,
39088: 20110,
39089: 20126,
39090: 20127,
39091: 20128,
39092: 20130,
39093: 20144,
39094: 20147,
39095: 20150,
39096: 20174,
39097: 20173,
39098: 20164,
39099: 20166,
39100: 20162,
39101: 20183,
39102: 20190,
39103: 20205,
39104: 20191,
39105: 20215,
39106: 20233,
39107: 20314,
39108: 20272,
39109: 20315,
39110: 20317,
39111: 20311,
39112: 20295,
39113: 20342,
39114: 20360,
39115: 20367,
39116: 20376,
39117: 20347,
39118: 20329,
39119: 20336,
39120: 20369,
39121: 20335,
39122: 20358,
39123: 20374,
39124: 20760,
39125: 20436,
39126: 20447,
39127: 20430,
39128: 20440,
39129: 20443,
39130: 20433,
39131: 20442,
39132: 20432,
39133: 20452,
39134: 20453,
39135: 20506,
39136: 20520,
39137: 20500,
39138: 20522,
39139: 20517,
39140: 20485,
39141: 20252,
39142: 20470,
39143: 20513,
39144: 20521,
39145: 20524,
39146: 20478,
39147: 20463,
39148: 20497,
39149: 20486,
39150: 20547,
39151: 20551,
39152: 26371,
39153: 20565,
39154: 20560,
39155: 20552,
39156: 20570,
39157: 20566,
39158: 20588,
39159: 20600,
39160: 20608,
39161: 20634,
39162: 20613,
39163: 20660,
39164: 20658,
39232: 20681,
39233: 20682,
39234: 20659,
39235: 20674,
39236: 20694,
39237: 20702,
39238: 20709,
39239: 20717,
39240: 20707,
39241: 20718,
39242: 20729,
39243: 20725,
39244: 20745,
39245: 20737,
39246: 20738,
39247: 20758,
39248: 20757,
39249: 20756,
39250: 20762,
39251: 20769,
39252: 20794,
39253: 20791,
39254: 20796,
39255: 20795,
39256: 20799,
39257: 20800,
39258: 20818,
39259: 20812,
39260: 20820,
39261: 20834,
39262: 31480,
39263: 20841,
39264: 20842,
39265: 20846,
39266: 20864,
39267: 20866,
39268: 22232,
39269: 20876,
39270: 20873,
39271: 20879,
39272: 20881,
39273: 20883,
39274: 20885,
39275: 20886,
39276: 20900,
39277: 20902,
39278: 20898,
39279: 20905,
39280: 20906,
39281: 20907,
39282: 20915,
39283: 20913,
39284: 20914,
39285: 20912,
39286: 20917,
39287: 20925,
39288: 20933,
39289: 20937,
39290: 20955,
39291: 20960,
39292: 34389,
39293: 20969,
39294: 20973,
39296: 20976,
39297: 20981,
39298: 20990,
39299: 20996,
39300: 21003,
39301: 21012,
39302: 21006,
39303: 21031,
39304: 21034,
39305: 21038,
39306: 21043,
39307: 21049,
39308: 21071,
39309: 21060,
39310: 21067,
39311: 21068,
39312: 21086,
39313: 21076,
39314: 21098,
39315: 21108,
39316: 21097,
39317: 21107,
39318: 21119,
39319: 21117,
39320: 21133,
39321: 21140,
39322: 21138,
39323: 21105,
39324: 21128,
39325: 21137,
39326: 36776,
39327: 36775,
39328: 21164,
39329: 21165,
39330: 21180,
39331: 21173,
39332: 21185,
39333: 21197,
39334: 21207,
39335: 21214,
39336: 21219,
39337: 21222,
39338: 39149,
39339: 21216,
39340: 21235,
39341: 21237,
39342: 21240,
39343: 21241,
39344: 21254,
39345: 21256,
39346: 30008,
39347: 21261,
39348: 21264,
39349: 21263,
39350: 21269,
39351: 21274,
39352: 21283,
39353: 21295,
39354: 21297,
39355: 21299,
39356: 21304,
39357: 21312,
39358: 21318,
39359: 21317,
39360: 19991,
39361: 21321,
39362: 21325,
39363: 20950,
39364: 21342,
39365: 21353,
39366: 21358,
39367: 22808,
39368: 21371,
39369: 21367,
39370: 21378,
39371: 21398,
39372: 21408,
39373: 21414,
39374: 21413,
39375: 21422,
39376: 21424,
39377: 21430,
39378: 21443,
39379: 31762,
39380: 38617,
39381: 21471,
39382: 26364,
39383: 29166,
39384: 21486,
39385: 21480,
39386: 21485,
39387: 21498,
39388: 21505,
39389: 21565,
39390: 21568,
39391: 21548,
39392: 21549,
39393: 21564,
39394: 21550,
39395: 21558,
39396: 21545,
39397: 21533,
39398: 21582,
39399: 21647,
39400: 21621,
39401: 21646,
39402: 21599,
39403: 21617,
39404: 21623,
39405: 21616,
39406: 21650,
39407: 21627,
39408: 21632,
39409: 21622,
39410: 21636,
39411: 21648,
39412: 21638,
39413: 21703,
39414: 21666,
39415: 21688,
39416: 21669,
39417: 21676,
39418: 21700,
39419: 21704,
39420: 21672,
39488: 21675,
39489: 21698,
39490: 21668,
39491: 21694,
39492: 21692,
39493: 21720,
39494: 21733,
39495: 21734,
39496: 21775,
39497: 21780,
39498: 21757,
39499: 21742,
39500: 21741,
39501: 21754,
39502: 21730,
39503: 21817,
39504: 21824,
39505: 21859,
39506: 21836,
39507: 21806,
39508: 21852,
39509: 21829,
39510: 21846,
39511: 21847,
39512: 21816,
39513: 21811,
39514: 21853,
39515: 21913,
39516: 21888,
39517: 21679,
39518: 21898,
39519: 21919,
39520: 21883,
39521: 21886,
39522: 21912,
39523: 21918,
39524: 21934,
39525: 21884,
39526: 21891,
39527: 21929,
39528: 21895,
39529: 21928,
39530: 21978,
39531: 21957,
39532: 21983,
39533: 21956,
39534: 21980,
39535: 21988,
39536: 21972,
39537: 22036,
39538: 22007,
39539: 22038,
39540: 22014,
39541: 22013,
39542: 22043,
39543: 22009,
39544: 22094,
39545: 22096,
39546: 29151,
39547: 22068,
39548: 22070,
39549: 22066,
39550: 22072,
39552: 22123,
39553: 22116,
39554: 22063,
39555: 22124,
39556: 22122,
39557: 22150,
39558: 22144,
39559: 22154,
39560: 22176,
39561: 22164,
39562: 22159,
39563: 22181,
39564: 22190,
39565: 22198,
39566: 22196,
39567: 22210,
39568: 22204,
39569: 22209,
39570: 22211,
39571: 22208,
39572: 22216,
39573: 22222,
39574: 22225,
39575: 22227,
39576: 22231,
39577: 22254,
39578: 22265,
39579: 22272,
39580: 22271,
39581: 22276,
39582: 22281,
39583: 22280,
39584: 22283,
39585: 22285,
39586: 22291,
39587: 22296,
39588: 22294,
39589: 21959,
39590: 22300,
39591: 22310,
39592: 22327,
39593: 22328,
39594: 22350,
39595: 22331,
39596: 22336,
39597: 22351,
39598: 22377,
39599: 22464,
39600: 22408,
39601: 22369,
39602: 22399,
39603: 22409,
39604: 22419,
39605: 22432,
39606: 22451,
39607: 22436,
39608: 22442,
39609: 22448,
39610: 22467,
39611: 22470,
39612: 22484,
39613: 22482,
39614: 22483,
39615: 22538,
39616: 22486,
39617: 22499,
39618: 22539,
39619: 22553,
39620: 22557,
39621: 22642,
39622: 22561,
39623: 22626,
39624: 22603,
39625: 22640,
39626: 27584,
39627: 22610,
39628: 22589,
39629: 22649,
39630: 22661,
39631: 22713,
39632: 22687,
39633: 22699,
39634: 22714,
39635: 22750,
39636: 22715,
39637: 22712,
39638: 22702,
39639: 22725,
39640: 22739,
39641: 22737,
39642: 22743,
39643: 22745,
39644: 22744,
39645: 22757,
39646: 22748,
39647: 22756,
39648: 22751,
39649: 22767,
39650: 22778,
39651: 22777,
39652: 22779,
39653: 22780,
39654: 22781,
39655: 22786,
39656: 22794,
39657: 22800,
39658: 22811,
39659: 26790,
39660: 22821,
39661: 22828,
39662: 22829,
39663: 22834,
39664: 22840,
39665: 22846,
39666: 31442,
39667: 22869,
39668: 22864,
39669: 22862,
39670: 22874,
39671: 22872,
39672: 22882,
39673: 22880,
39674: 22887,
39675: 22892,
39676: 22889,
39744: 22904,
39745: 22913,
39746: 22941,
39747: 20318,
39748: 20395,
39749: 22947,
39750: 22962,
39751: 22982,
39752: 23016,
39753: 23004,
39754: 22925,
39755: 23001,
39756: 23002,
39757: 23077,
39758: 23071,
39759: 23057,
39760: 23068,
39761: 23049,
39762: 23066,
39763: 23104,
39764: 23148,
39765: 23113,
39766: 23093,
39767: 23094,
39768: 23138,
39769: 23146,
39770: 23194,
39771: 23228,
39772: 23230,
39773: 23243,
39774: 23234,
39775: 23229,
39776: 23267,
39777: 23255,
39778: 23270,
39779: 23273,
39780: 23254,
39781: 23290,
39782: 23291,
39783: 23308,
39784: 23307,
39785: 23318,
39786: 23346,
39787: 23248,
39788: 23338,
39789: 23350,
39790: 23358,
39791: 23363,
39792: 23365,
39793: 23360,
39794: 23377,
39795: 23381,
39796: 23386,
39797: 23387,
39798: 23397,
39799: 23401,
39800: 23408,
39801: 23411,
39802: 23413,
39803: 23416,
39804: 25992,
39805: 23418,
39806: 23424,
39808: 23427,
39809: 23462,
39810: 23480,
39811: 23491,
39812: 23495,
39813: 23497,
39814: 23508,
39815: 23504,
39816: 23524,
39817: 23526,
39818: 23522,
39819: 23518,
39820: 23525,
39821: 23531,
39822: 23536,
39823: 23542,
39824: 23539,
39825: 23557,
39826: 23559,
39827: 23560,
39828: 23565,
39829: 23571,
39830: 23584,
39831: 23586,
39832: 23592,
39833: 23608,
39834: 23609,
39835: 23617,
39836: 23622,
39837: 23630,
39838: 23635,
39839: 23632,
39840: 23631,
39841: 23409,
39842: 23660,
39843: 23662,
39844: 20066,
39845: 23670,
39846: 23673,
39847: 23692,
39848: 23697,
39849: 23700,
39850: 22939,
39851: 23723,
39852: 23739,
39853: 23734,
39854: 23740,
39855: 23735,
39856: 23749,
39857: 23742,
39858: 23751,
39859: 23769,
39860: 23785,
39861: 23805,
39862: 23802,
39863: 23789,
39864: 23948,
39865: 23786,
39866: 23819,
39867: 23829,
39868: 23831,
39869: 23900,
39870: 23839,
39871: 23835,
39872: 23825,
39873: 23828,
39874: 23842,
39875: 23834,
39876: 23833,
39877: 23832,
39878: 23884,
39879: 23890,
39880: 23886,
39881: 23883,
39882: 23916,
39883: 23923,
39884: 23926,
39885: 23943,
39886: 23940,
39887: 23938,
39888: 23970,
39889: 23965,
39890: 23980,
39891: 23982,
39892: 23997,
39893: 23952,
39894: 23991,
39895: 23996,
39896: 24009,
39897: 24013,
39898: 24019,
39899: 24018,
39900: 24022,
39901: 24027,
39902: 24043,
39903: 24050,
39904: 24053,
39905: 24075,
39906: 24090,
39907: 24089,
39908: 24081,
39909: 24091,
39910: 24118,
39911: 24119,
39912: 24132,
39913: 24131,
39914: 24128,
39915: 24142,
39916: 24151,
39917: 24148,
39918: 24159,
39919: 24162,
39920: 24164,
39921: 24135,
39922: 24181,
39923: 24182,
39924: 24186,
39925: 40636,
39926: 24191,
39927: 24224,
39928: 24257,
39929: 24258,
39930: 24264,
39931: 24272,
39932: 24271,
4e4: 24278,
40001: 24291,
40002: 24285,
40003: 24282,
40004: 24283,
40005: 24290,
40006: 24289,
40007: 24296,
40008: 24297,
40009: 24300,
40010: 24305,
40011: 24307,
40012: 24304,
40013: 24308,
40014: 24312,
40015: 24318,
40016: 24323,
40017: 24329,
40018: 24413,
40019: 24412,
40020: 24331,
40021: 24337,
40022: 24342,
40023: 24361,
40024: 24365,
40025: 24376,
40026: 24385,
40027: 24392,
40028: 24396,
40029: 24398,
40030: 24367,
40031: 24401,
40032: 24406,
40033: 24407,
40034: 24409,
40035: 24417,
40036: 24429,
40037: 24435,
40038: 24439,
40039: 24451,
40040: 24450,
40041: 24447,
40042: 24458,
40043: 24456,
40044: 24465,
40045: 24455,
40046: 24478,
40047: 24473,
40048: 24472,
40049: 24480,
40050: 24488,
40051: 24493,
40052: 24508,
40053: 24534,
40054: 24571,
40055: 24548,
40056: 24568,
40057: 24561,
40058: 24541,
40059: 24755,
40060: 24575,
40061: 24609,
40062: 24672,
40064: 24601,
40065: 24592,
40066: 24617,
40067: 24590,
40068: 24625,
40069: 24603,
40070: 24597,
40071: 24619,
40072: 24614,
40073: 24591,
40074: 24634,
40075: 24666,
40076: 24641,
40077: 24682,
40078: 24695,
40079: 24671,
40080: 24650,
40081: 24646,
40082: 24653,
40083: 24675,
40084: 24643,
40085: 24676,
40086: 24642,
40087: 24684,
40088: 24683,
40089: 24665,
40090: 24705,
40091: 24717,
40092: 24807,
40093: 24707,
40094: 24730,
40095: 24708,
40096: 24731,
40097: 24726,
40098: 24727,
40099: 24722,
40100: 24743,
40101: 24715,
40102: 24801,
40103: 24760,
40104: 24800,
40105: 24787,
40106: 24756,
40107: 24560,
40108: 24765,
40109: 24774,
40110: 24757,
40111: 24792,
40112: 24909,
40113: 24853,
40114: 24838,
40115: 24822,
40116: 24823,
40117: 24832,
40118: 24820,
40119: 24826,
40120: 24835,
40121: 24865,
40122: 24827,
40123: 24817,
40124: 24845,
40125: 24846,
40126: 24903,
40127: 24894,
40128: 24872,
40129: 24871,
40130: 24906,
40131: 24895,
40132: 24892,
40133: 24876,
40134: 24884,
40135: 24893,
40136: 24898,
40137: 24900,
40138: 24947,
40139: 24951,
40140: 24920,
40141: 24921,
40142: 24922,
40143: 24939,
40144: 24948,
40145: 24943,
40146: 24933,
40147: 24945,
40148: 24927,
40149: 24925,
40150: 24915,
40151: 24949,
40152: 24985,
40153: 24982,
40154: 24967,
40155: 25004,
40156: 24980,
40157: 24986,
40158: 24970,
40159: 24977,
40160: 25003,
40161: 25006,
40162: 25036,
40163: 25034,
40164: 25033,
40165: 25079,
40166: 25032,
40167: 25027,
40168: 25030,
40169: 25018,
40170: 25035,
40171: 32633,
40172: 25037,
40173: 25062,
40174: 25059,
40175: 25078,
40176: 25082,
40177: 25076,
40178: 25087,
40179: 25085,
40180: 25084,
40181: 25086,
40182: 25088,
40183: 25096,
40184: 25097,
40185: 25101,
40186: 25100,
40187: 25108,
40188: 25115,
40256: 25118,
40257: 25121,
40258: 25130,
40259: 25134,
40260: 25136,
40261: 25138,
40262: 25139,
40263: 25153,
40264: 25166,
40265: 25182,
40266: 25187,
40267: 25179,
40268: 25184,
40269: 25192,
40270: 25212,
40271: 25218,
40272: 25225,
40273: 25214,
40274: 25234,
40275: 25235,
40276: 25238,
40277: 25300,
40278: 25219,
40279: 25236,
40280: 25303,
40281: 25297,
40282: 25275,
40283: 25295,
40284: 25343,
40285: 25286,
40286: 25812,
40287: 25288,
40288: 25308,
40289: 25292,
40290: 25290,
40291: 25282,
40292: 25287,
40293: 25243,
40294: 25289,
40295: 25356,
40296: 25326,
40297: 25329,
40298: 25383,
40299: 25346,
40300: 25352,
40301: 25327,
40302: 25333,
40303: 25424,
40304: 25406,
40305: 25421,
40306: 25628,
40307: 25423,
40308: 25494,
40309: 25486,
40310: 25472,
40311: 25515,
40312: 25462,
40313: 25507,
40314: 25487,
40315: 25481,
40316: 25503,
40317: 25525,
40318: 25451,
40320: 25449,
40321: 25534,
40322: 25577,
40323: 25536,
40324: 25542,
40325: 25571,
40326: 25545,
40327: 25554,
40328: 25590,
40329: 25540,
40330: 25622,
40331: 25652,
40332: 25606,
40333: 25619,
40334: 25638,
40335: 25654,
40336: 25885,
40337: 25623,
40338: 25640,
40339: 25615,
40340: 25703,
40341: 25711,
40342: 25718,
40343: 25678,
40344: 25898,
40345: 25749,
40346: 25747,
40347: 25765,
40348: 25769,
40349: 25736,
40350: 25788,
40351: 25818,
40352: 25810,
40353: 25797,
40354: 25799,
40355: 25787,
40356: 25816,
40357: 25794,
40358: 25841,
40359: 25831,
40360: 33289,
40361: 25824,
40362: 25825,
40363: 25260,
40364: 25827,
40365: 25839,
40366: 25900,
40367: 25846,
40368: 25844,
40369: 25842,
40370: 25850,
40371: 25856,
40372: 25853,
40373: 25880,
40374: 25884,
40375: 25861,
40376: 25892,
40377: 25891,
40378: 25899,
40379: 25908,
40380: 25909,
40381: 25911,
40382: 25910,
40383: 25912,
40384: 30027,
40385: 25928,
40386: 25942,
40387: 25941,
40388: 25933,
40389: 25944,
40390: 25950,
40391: 25949,
40392: 25970,
40393: 25976,
40394: 25986,
40395: 25987,
40396: 35722,
40397: 26011,
40398: 26015,
40399: 26027,
40400: 26039,
40401: 26051,
40402: 26054,
40403: 26049,
40404: 26052,
40405: 26060,
40406: 26066,
40407: 26075,
40408: 26073,
40409: 26080,
40410: 26081,
40411: 26097,
40412: 26482,
40413: 26122,
40414: 26115,
40415: 26107,
40416: 26483,
40417: 26165,
40418: 26166,
40419: 26164,
40420: 26140,
40421: 26191,
40422: 26180,
40423: 26185,
40424: 26177,
40425: 26206,
40426: 26205,
40427: 26212,
40428: 26215,
40429: 26216,
40430: 26207,
40431: 26210,
40432: 26224,
40433: 26243,
40434: 26248,
40435: 26254,
40436: 26249,
40437: 26244,
40438: 26264,
40439: 26269,
40440: 26305,
40441: 26297,
40442: 26313,
40443: 26302,
40444: 26300,
40512: 26308,
40513: 26296,
40514: 26326,
40515: 26330,
40516: 26336,
40517: 26175,
40518: 26342,
40519: 26345,
40520: 26352,
40521: 26357,
40522: 26359,
40523: 26383,
40524: 26390,
40525: 26398,
40526: 26406,
40527: 26407,
40528: 38712,
40529: 26414,
40530: 26431,
40531: 26422,
40532: 26433,
40533: 26424,
40534: 26423,
40535: 26438,
40536: 26462,
40537: 26464,
40538: 26457,
40539: 26467,
40540: 26468,
40541: 26505,
40542: 26480,
40543: 26537,
40544: 26492,
40545: 26474,
40546: 26508,
40547: 26507,
40548: 26534,
40549: 26529,
40550: 26501,
40551: 26551,
40552: 26607,
40553: 26548,
40554: 26604,
40555: 26547,
40556: 26601,
40557: 26552,
40558: 26596,
40559: 26590,
40560: 26589,
40561: 26594,
40562: 26606,
40563: 26553,
40564: 26574,
40565: 26566,
40566: 26599,
40567: 27292,
40568: 26654,
40569: 26694,
40570: 26665,
40571: 26688,
40572: 26701,
40573: 26674,
40574: 26702,
40576: 26803,
40577: 26667,
40578: 26713,
40579: 26723,
40580: 26743,
40581: 26751,
40582: 26783,
40583: 26767,
40584: 26797,
40585: 26772,
40586: 26781,
40587: 26779,
40588: 26755,
40589: 27310,
40590: 26809,
40591: 26740,
40592: 26805,
40593: 26784,
40594: 26810,
40595: 26895,
40596: 26765,
40597: 26750,
40598: 26881,
40599: 26826,
40600: 26888,
40601: 26840,
40602: 26914,
40603: 26918,
40604: 26849,
40605: 26892,
40606: 26829,
40607: 26836,
40608: 26855,
40609: 26837,
40610: 26934,
40611: 26898,
40612: 26884,
40613: 26839,
40614: 26851,
40615: 26917,
40616: 26873,
40617: 26848,
40618: 26863,
40619: 26920,
40620: 26922,
40621: 26906,
40622: 26915,
40623: 26913,
40624: 26822,
40625: 27001,
40626: 26999,
40627: 26972,
40628: 27e3,
40629: 26987,
40630: 26964,
40631: 27006,
40632: 26990,
40633: 26937,
40634: 26996,
40635: 26941,
40636: 26969,
40637: 26928,
40638: 26977,
40639: 26974,
40640: 26973,
40641: 27009,
40642: 26986,
40643: 27058,
40644: 27054,
40645: 27088,
40646: 27071,
40647: 27073,
40648: 27091,
40649: 27070,
40650: 27086,
40651: 23528,
40652: 27082,
40653: 27101,
40654: 27067,
40655: 27075,
40656: 27047,
40657: 27182,
40658: 27025,
40659: 27040,
40660: 27036,
40661: 27029,
40662: 27060,
40663: 27102,
40664: 27112,
40665: 27138,
40666: 27163,
40667: 27135,
40668: 27402,
40669: 27129,
40670: 27122,
40671: 27111,
40672: 27141,
40673: 27057,
40674: 27166,
40675: 27117,
40676: 27156,
40677: 27115,
40678: 27146,
40679: 27154,
40680: 27329,
40681: 27171,
40682: 27155,
40683: 27204,
40684: 27148,
40685: 27250,
40686: 27190,
40687: 27256,
40688: 27207,
40689: 27234,
40690: 27225,
40691: 27238,
40692: 27208,
40693: 27192,
40694: 27170,
40695: 27280,
40696: 27277,
40697: 27296,
40698: 27268,
40699: 27298,
40700: 27299,
40768: 27287,
40769: 34327,
40770: 27323,
40771: 27331,
40772: 27330,
40773: 27320,
40774: 27315,
40775: 27308,
40776: 27358,
40777: 27345,
40778: 27359,
40779: 27306,
40780: 27354,
40781: 27370,
40782: 27387,
40783: 27397,
40784: 34326,
40785: 27386,
40786: 27410,
40787: 27414,
40788: 39729,
40789: 27423,
40790: 27448,
40791: 27447,
40792: 30428,
40793: 27449,
40794: 39150,
40795: 27463,
40796: 27459,
40797: 27465,
40798: 27472,
40799: 27481,
40800: 27476,
40801: 27483,
40802: 27487,
40803: 27489,
40804: 27512,
40805: 27513,
40806: 27519,
40807: 27520,
40808: 27524,
40809: 27523,
40810: 27533,
40811: 27544,
40812: 27541,
40813: 27550,
40814: 27556,
40815: 27562,
40816: 27563,
40817: 27567,
40818: 27570,
40819: 27569,
40820: 27571,
40821: 27575,
40822: 27580,
40823: 27590,
40824: 27595,
40825: 27603,
40826: 27615,
40827: 27628,
40828: 27627,
40829: 27635,
40830: 27631,
40832: 40638,
40833: 27656,
40834: 27667,
40835: 27668,
40836: 27675,
40837: 27684,
40838: 27683,
40839: 27742,
40840: 27733,
40841: 27746,
40842: 27754,
40843: 27778,
40844: 27789,
40845: 27802,
40846: 27777,
40847: 27803,
40848: 27774,
40849: 27752,
40850: 27763,
40851: 27794,
40852: 27792,
40853: 27844,
40854: 27889,
40855: 27859,
40856: 27837,
40857: 27863,
40858: 27845,
40859: 27869,
40860: 27822,
40861: 27825,
40862: 27838,
40863: 27834,
40864: 27867,
40865: 27887,
40866: 27865,
40867: 27882,
40868: 27935,
40869: 34893,
40870: 27958,
40871: 27947,
40872: 27965,
40873: 27960,
40874: 27929,
40875: 27957,
40876: 27955,
40877: 27922,
40878: 27916,
40879: 28003,
40880: 28051,
40881: 28004,
40882: 27994,
40883: 28025,
40884: 27993,
40885: 28046,
40886: 28053,
40887: 28644,
40888: 28037,
40889: 28153,
40890: 28181,
40891: 28170,
40892: 28085,
40893: 28103,
40894: 28134,
40895: 28088,
40896: 28102,
40897: 28140,
40898: 28126,
40899: 28108,
40900: 28136,
40901: 28114,
40902: 28101,
40903: 28154,
40904: 28121,
40905: 28132,
40906: 28117,
40907: 28138,
40908: 28142,
40909: 28205,
40910: 28270,
40911: 28206,
40912: 28185,
40913: 28274,
40914: 28255,
40915: 28222,
40916: 28195,
40917: 28267,
40918: 28203,
40919: 28278,
40920: 28237,
40921: 28191,
40922: 28227,
40923: 28218,
40924: 28238,
40925: 28196,
40926: 28415,
40927: 28189,
40928: 28216,
40929: 28290,
40930: 28330,
40931: 28312,
40932: 28361,
40933: 28343,
40934: 28371,
40935: 28349,
40936: 28335,
40937: 28356,
40938: 28338,
40939: 28372,
40940: 28373,
40941: 28303,
40942: 28325,
40943: 28354,
40944: 28319,
40945: 28481,
40946: 28433,
40947: 28748,
40948: 28396,
40949: 28408,
40950: 28414,
40951: 28479,
40952: 28402,
40953: 28465,
40954: 28399,
40955: 28466,
40956: 28364,
161: 65377,
162: 65378,
163: 65379,
164: 65380,
165: 65381,
166: 65382,
167: 65383,
168: 65384,
169: 65385,
170: 65386,
171: 65387,
172: 65388,
173: 65389,
174: 65390,
175: 65391,
176: 65392,
177: 65393,
178: 65394,
179: 65395,
180: 65396,
181: 65397,
182: 65398,
183: 65399,
184: 65400,
185: 65401,
186: 65402,
187: 65403,
188: 65404,
189: 65405,
190: 65406,
191: 65407,
192: 65408,
193: 65409,
194: 65410,
195: 65411,
196: 65412,
197: 65413,
198: 65414,
199: 65415,
200: 65416,
201: 65417,
202: 65418,
203: 65419,
204: 65420,
205: 65421,
206: 65422,
207: 65423,
208: 65424,
209: 65425,
210: 65426,
211: 65427,
212: 65428,
213: 65429,
214: 65430,
215: 65431,
216: 65432,
217: 65433,
218: 65434,
219: 65435,
220: 65436,
221: 65437,
222: 65438,
223: 65439,
57408: 28478,
57409: 28435,
57410: 28407,
57411: 28550,
57412: 28538,
57413: 28536,
57414: 28545,
57415: 28544,
57416: 28527,
57417: 28507,
57418: 28659,
57419: 28525,
57420: 28546,
57421: 28540,
57422: 28504,
57423: 28558,
57424: 28561,
57425: 28610,
57426: 28518,
57427: 28595,
57428: 28579,
57429: 28577,
57430: 28580,
57431: 28601,
57432: 28614,
57433: 28586,
57434: 28639,
57435: 28629,
57436: 28652,
57437: 28628,
57438: 28632,
57439: 28657,
57440: 28654,
57441: 28635,
57442: 28681,
57443: 28683,
57444: 28666,
57445: 28689,
57446: 28673,
57447: 28687,
57448: 28670,
57449: 28699,
57450: 28698,
57451: 28532,
57452: 28701,
57453: 28696,
57454: 28703,
57455: 28720,
57456: 28734,
57457: 28722,
57458: 28753,
57459: 28771,
57460: 28825,
57461: 28818,
57462: 28847,
57463: 28913,
57464: 28844,
57465: 28856,
57466: 28851,
57467: 28846,
57468: 28895,
57469: 28875,
57470: 28893,
57472: 28889,
57473: 28937,
57474: 28925,
57475: 28956,
57476: 28953,
57477: 29029,
57478: 29013,
57479: 29064,
57480: 29030,
57481: 29026,
57482: 29004,
57483: 29014,
57484: 29036,
57485: 29071,
57486: 29179,
57487: 29060,
57488: 29077,
57489: 29096,
57490: 29100,
57491: 29143,
57492: 29113,
57493: 29118,
57494: 29138,
57495: 29129,
57496: 29140,
57497: 29134,
57498: 29152,
57499: 29164,
57500: 29159,
57501: 29173,
57502: 29180,
57503: 29177,
57504: 29183,
57505: 29197,
57506: 29200,
57507: 29211,
57508: 29224,
57509: 29229,
57510: 29228,
57511: 29232,
57512: 29234,
57513: 29243,
57514: 29244,
57515: 29247,
57516: 29248,
57517: 29254,
57518: 29259,
57519: 29272,
57520: 29300,
57521: 29310,
57522: 29314,
57523: 29313,
57524: 29319,
57525: 29330,
57526: 29334,
57527: 29346,
57528: 29351,
57529: 29369,
57530: 29362,
57531: 29379,
57532: 29382,
57533: 29380,
57534: 29390,
57535: 29394,
57536: 29410,
57537: 29408,
57538: 29409,
57539: 29433,
57540: 29431,
57541: 20495,
57542: 29463,
57543: 29450,
57544: 29468,
57545: 29462,
57546: 29469,
57547: 29492,
57548: 29487,
57549: 29481,
57550: 29477,
57551: 29502,
57552: 29518,
57553: 29519,
57554: 40664,
57555: 29527,
57556: 29546,
57557: 29544,
57558: 29552,
57559: 29560,
57560: 29557,
57561: 29563,
57562: 29562,
57563: 29640,
57564: 29619,
57565: 29646,
57566: 29627,
57567: 29632,
57568: 29669,
57569: 29678,
57570: 29662,
57571: 29858,
57572: 29701,
57573: 29807,
57574: 29733,
57575: 29688,
57576: 29746,
57577: 29754,
57578: 29781,
57579: 29759,
57580: 29791,
57581: 29785,
57582: 29761,
57583: 29788,
57584: 29801,
57585: 29808,
57586: 29795,
57587: 29802,
57588: 29814,
57589: 29822,
57590: 29835,
57591: 29854,
57592: 29863,
57593: 29898,
57594: 29903,
57595: 29908,
57596: 29681,
57664: 29920,
57665: 29923,
57666: 29927,
57667: 29929,
57668: 29934,
57669: 29938,
57670: 29936,
57671: 29937,
57672: 29944,
57673: 29943,
57674: 29956,
57675: 29955,
57676: 29957,
57677: 29964,
57678: 29966,
57679: 29965,
57680: 29973,
57681: 29971,
57682: 29982,
57683: 29990,
57684: 29996,
57685: 30012,
57686: 30020,
57687: 30029,
57688: 30026,
57689: 30025,
57690: 30043,
57691: 30022,
57692: 30042,
57693: 30057,
57694: 30052,
57695: 30055,
57696: 30059,
57697: 30061,
57698: 30072,
57699: 30070,
57700: 30086,
57701: 30087,
57702: 30068,
57703: 30090,
57704: 30089,
57705: 30082,
57706: 30100,
57707: 30106,
57708: 30109,
57709: 30117,
57710: 30115,
57711: 30146,
57712: 30131,
57713: 30147,
57714: 30133,
57715: 30141,
57716: 30136,
57717: 30140,
57718: 30129,
57719: 30157,
57720: 30154,
57721: 30162,
57722: 30169,
57723: 30179,
57724: 30174,
57725: 30206,
57726: 30207,
57728: 30204,
57729: 30209,
57730: 30192,
57731: 30202,
57732: 30194,
57733: 30195,
57734: 30219,
57735: 30221,
57736: 30217,
57737: 30239,
57738: 30247,
57739: 30240,
57740: 30241,
57741: 30242,
57742: 30244,
57743: 30260,
57744: 30256,
57745: 30267,
57746: 30279,
57747: 30280,
57748: 30278,
57749: 30300,
57750: 30296,
57751: 30305,
57752: 30306,
57753: 30312,
57754: 30313,
57755: 30314,
57756: 30311,
57757: 30316,
57758: 30320,
57759: 30322,
57760: 30326,
57761: 30328,
57762: 30332,
57763: 30336,
57764: 30339,
57765: 30344,
57766: 30347,
57767: 30350,
57768: 30358,
57769: 30355,
57770: 30361,
57771: 30362,
57772: 30384,
57773: 30388,
57774: 30392,
57775: 30393,
57776: 30394,
57777: 30402,
57778: 30413,
57779: 30422,
57780: 30418,
57781: 30430,
57782: 30433,
57783: 30437,
57784: 30439,
57785: 30442,
57786: 34351,
57787: 30459,
57788: 30472,
57789: 30471,
57790: 30468,
57791: 30505,
57792: 30500,
57793: 30494,
57794: 30501,
57795: 30502,
57796: 30491,
57797: 30519,
57798: 30520,
57799: 30535,
57800: 30554,
57801: 30568,
57802: 30571,
57803: 30555,
57804: 30565,
57805: 30591,
57806: 30590,
57807: 30585,
57808: 30606,
57809: 30603,
57810: 30609,
57811: 30624,
57812: 30622,
57813: 30640,
57814: 30646,
57815: 30649,
57816: 30655,
57817: 30652,
57818: 30653,
57819: 30651,
57820: 30663,
57821: 30669,
57822: 30679,
57823: 30682,
57824: 30684,
57825: 30691,
57826: 30702,
57827: 30716,
57828: 30732,
57829: 30738,
57830: 31014,
57831: 30752,
57832: 31018,
57833: 30789,
57834: 30862,
57835: 30836,
57836: 30854,
57837: 30844,
57838: 30874,
57839: 30860,
57840: 30883,
57841: 30901,
57842: 30890,
57843: 30895,
57844: 30929,
57845: 30918,
57846: 30923,
57847: 30932,
57848: 30910,
57849: 30908,
57850: 30917,
57851: 30922,
57852: 30956,
57920: 30951,
57921: 30938,
57922: 30973,
57923: 30964,
57924: 30983,
57925: 30994,
57926: 30993,
57927: 31001,
57928: 31020,
57929: 31019,
57930: 31040,
57931: 31072,
57932: 31063,
57933: 31071,
57934: 31066,
57935: 31061,
57936: 31059,
57937: 31098,
57938: 31103,
57939: 31114,
57940: 31133,
57941: 31143,
57942: 40779,
57943: 31146,
57944: 31150,
57945: 31155,
57946: 31161,
57947: 31162,
57948: 31177,
57949: 31189,
57950: 31207,
57951: 31212,
57952: 31201,
57953: 31203,
57954: 31240,
57955: 31245,
57956: 31256,
57957: 31257,
57958: 31264,
57959: 31263,
57960: 31104,
57961: 31281,
57962: 31291,
57963: 31294,
57964: 31287,
57965: 31299,
57966: 31319,
57967: 31305,
57968: 31329,
57969: 31330,
57970: 31337,
57971: 40861,
57972: 31344,
57973: 31353,
57974: 31357,
57975: 31368,
57976: 31383,
57977: 31381,
57978: 31384,
57979: 31382,
57980: 31401,
57981: 31432,
57982: 31408,
57984: 31414,
57985: 31429,
57986: 31428,
57987: 31423,
57988: 36995,
57989: 31431,
57990: 31434,
57991: 31437,
57992: 31439,
57993: 31445,
57994: 31443,
57995: 31449,
57996: 31450,
57997: 31453,
57998: 31457,
57999: 31458,
58e3: 31462,
58001: 31469,
58002: 31472,
58003: 31490,
58004: 31503,
58005: 31498,
58006: 31494,
58007: 31539,
58008: 31512,
58009: 31513,
58010: 31518,
58011: 31541,
58012: 31528,
58013: 31542,
58014: 31568,
58015: 31610,
58016: 31492,
58017: 31565,
58018: 31499,
58019: 31564,
58020: 31557,
58021: 31605,
58022: 31589,
58023: 31604,
58024: 31591,
58025: 31600,
58026: 31601,
58027: 31596,
58028: 31598,
58029: 31645,
58030: 31640,
58031: 31647,
58032: 31629,
58033: 31644,
58034: 31642,
58035: 31627,
58036: 31634,
58037: 31631,
58038: 31581,
58039: 31641,
58040: 31691,
58041: 31681,
58042: 31692,
58043: 31695,
58044: 31668,
58045: 31686,
58046: 31709,
58047: 31721,
58048: 31761,
58049: 31764,
58050: 31718,
58051: 31717,
58052: 31840,
58053: 31744,
58054: 31751,
58055: 31763,
58056: 31731,
58057: 31735,
58058: 31767,
58059: 31757,
58060: 31734,
58061: 31779,
58062: 31783,
58063: 31786,
58064: 31775,
58065: 31799,
58066: 31787,
58067: 31805,
58068: 31820,
58069: 31811,
58070: 31828,
58071: 31823,
58072: 31808,
58073: 31824,
58074: 31832,
58075: 31839,
58076: 31844,
58077: 31830,
58078: 31845,
58079: 31852,
58080: 31861,
58081: 31875,
58082: 31888,
58083: 31908,
58084: 31917,
58085: 31906,
58086: 31915,
58087: 31905,
58088: 31912,
58089: 31923,
58090: 31922,
58091: 31921,
58092: 31918,
58093: 31929,
58094: 31933,
58095: 31936,
58096: 31941,
58097: 31938,
58098: 31960,
58099: 31954,
58100: 31964,
58101: 31970,
58102: 39739,
58103: 31983,
58104: 31986,
58105: 31988,
58106: 31990,
58107: 31994,
58108: 32006,
58176: 32002,
58177: 32028,
58178: 32021,
58179: 32010,
58180: 32069,
58181: 32075,
58182: 32046,
58183: 32050,
58184: 32063,
58185: 32053,
58186: 32070,
58187: 32115,
58188: 32086,
58189: 32078,
58190: 32114,
58191: 32104,
58192: 32110,
58193: 32079,
58194: 32099,
58195: 32147,
58196: 32137,
58197: 32091,
58198: 32143,
58199: 32125,
58200: 32155,
58201: 32186,
58202: 32174,
58203: 32163,
58204: 32181,
58205: 32199,
58206: 32189,
58207: 32171,
58208: 32317,
58209: 32162,
58210: 32175,
58211: 32220,
58212: 32184,
58213: 32159,
58214: 32176,
58215: 32216,
58216: 32221,
58217: 32228,
58218: 32222,
58219: 32251,
58220: 32242,
58221: 32225,
58222: 32261,
58223: 32266,
58224: 32291,
58225: 32289,
58226: 32274,
58227: 32305,
58228: 32287,
58229: 32265,
58230: 32267,
58231: 32290,
58232: 32326,
58233: 32358,
58234: 32315,
58235: 32309,
58236: 32313,
58237: 32323,
58238: 32311,
58240: 32306,
58241: 32314,
58242: 32359,
58243: 32349,
58244: 32342,
58245: 32350,
58246: 32345,
58247: 32346,
58248: 32377,
58249: 32362,
58250: 32361,
58251: 32380,
58252: 32379,
58253: 32387,
58254: 32213,
58255: 32381,
58256: 36782,
58257: 32383,
58258: 32392,
58259: 32393,
58260: 32396,
58261: 32402,
58262: 32400,
58263: 32403,
58264: 32404,
58265: 32406,
58266: 32398,
58267: 32411,
58268: 32412,
58269: 32568,
58270: 32570,
58271: 32581,
58272: 32588,
58273: 32589,
58274: 32590,
58275: 32592,
58276: 32593,
58277: 32597,
58278: 32596,
58279: 32600,
58280: 32607,
58281: 32608,
58282: 32616,
58283: 32617,
58284: 32615,
58285: 32632,
58286: 32642,
58287: 32646,
58288: 32643,
58289: 32648,
58290: 32647,
58291: 32652,
58292: 32660,
58293: 32670,
58294: 32669,
58295: 32666,
58296: 32675,
58297: 32687,
58298: 32690,
58299: 32697,
58300: 32686,
58301: 32694,
58302: 32696,
58303: 35697,
58304: 32709,
58305: 32710,
58306: 32714,
58307: 32725,
58308: 32724,
58309: 32737,
58310: 32742,
58311: 32745,
58312: 32755,
58313: 32761,
58314: 39132,
58315: 32774,
58316: 32772,
58317: 32779,
58318: 32786,
58319: 32792,
58320: 32793,
58321: 32796,
58322: 32801,
58323: 32808,
58324: 32831,
58325: 32827,
58326: 32842,
58327: 32838,
58328: 32850,
58329: 32856,
58330: 32858,
58331: 32863,
58332: 32866,
58333: 32872,
58334: 32883,
58335: 32882,
58336: 32880,
58337: 32886,
58338: 32889,
58339: 32893,
58340: 32895,
58341: 32900,
58342: 32902,
58343: 32901,
58344: 32923,
58345: 32915,
58346: 32922,
58347: 32941,
58348: 20880,
58349: 32940,
58350: 32987,
58351: 32997,
58352: 32985,
58353: 32989,
58354: 32964,
58355: 32986,
58356: 32982,
58357: 33033,
58358: 33007,
58359: 33009,
58360: 33051,
58361: 33065,
58362: 33059,
58363: 33071,
58364: 33099,
58432: 38539,
58433: 33094,
58434: 33086,
58435: 33107,
58436: 33105,
58437: 33020,
58438: 33137,
58439: 33134,
58440: 33125,
58441: 33126,
58442: 33140,
58443: 33155,
58444: 33160,
58445: 33162,
58446: 33152,
58447: 33154,
58448: 33184,
58449: 33173,
58450: 33188,
58451: 33187,
58452: 33119,
58453: 33171,
58454: 33193,
58455: 33200,
58456: 33205,
58457: 33214,
58458: 33208,
58459: 33213,
58460: 33216,
58461: 33218,
58462: 33210,
58463: 33225,
58464: 33229,
58465: 33233,
58466: 33241,
58467: 33240,
58468: 33224,
58469: 33242,
58470: 33247,
58471: 33248,
58472: 33255,
58473: 33274,
58474: 33275,
58475: 33278,
58476: 33281,
58477: 33282,
58478: 33285,
58479: 33287,
58480: 33290,
58481: 33293,
58482: 33296,
58483: 33302,
58484: 33321,
58485: 33323,
58486: 33336,
58487: 33331,
58488: 33344,
58489: 33369,
58490: 33368,
58491: 33373,
58492: 33370,
58493: 33375,
58494: 33380,
58496: 33378,
58497: 33384,
58498: 33386,
58499: 33387,
58500: 33326,
58501: 33393,
58502: 33399,
58503: 33400,
58504: 33406,
58505: 33421,
58506: 33426,
58507: 33451,
58508: 33439,
58509: 33467,
58510: 33452,
58511: 33505,
58512: 33507,
58513: 33503,
58514: 33490,
58515: 33524,
58516: 33523,
58517: 33530,
58518: 33683,
58519: 33539,
58520: 33531,
58521: 33529,
58522: 33502,
58523: 33542,
58524: 33500,
58525: 33545,
58526: 33497,
58527: 33589,
58528: 33588,
58529: 33558,
58530: 33586,
58531: 33585,
58532: 33600,
58533: 33593,
58534: 33616,
58535: 33605,
58536: 33583,
58537: 33579,
58538: 33559,
58539: 33560,
58540: 33669,
58541: 33690,
58542: 33706,
58543: 33695,
58544: 33698,
58545: 33686,
58546: 33571,
58547: 33678,
58548: 33671,
58549: 33674,
58550: 33660,
58551: 33717,
58552: 33651,
58553: 33653,
58554: 33696,
58555: 33673,
58556: 33704,
58557: 33780,
58558: 33811,
58559: 33771,
58560: 33742,
58561: 33789,
58562: 33795,
58563: 33752,
58564: 33803,
58565: 33729,
58566: 33783,
58567: 33799,
58568: 33760,
58569: 33778,
58570: 33805,
58571: 33826,
58572: 33824,
58573: 33725,
58574: 33848,
58575: 34054,
58576: 33787,
58577: 33901,
58578: 33834,
58579: 33852,
58580: 34138,
58581: 33924,
58582: 33911,
58583: 33899,
58584: 33965,
58585: 33902,
58586: 33922,
58587: 33897,
58588: 33862,
58589: 33836,
58590: 33903,
58591: 33913,
58592: 33845,
58593: 33994,
58594: 33890,
58595: 33977,
58596: 33983,
58597: 33951,
58598: 34009,
58599: 33997,
58600: 33979,
58601: 34010,
58602: 34e3,
58603: 33985,
58604: 33990,
58605: 34006,
58606: 33953,
58607: 34081,
58608: 34047,
58609: 34036,
58610: 34071,
58611: 34072,
58612: 34092,
58613: 34079,
58614: 34069,
58615: 34068,
58616: 34044,
58617: 34112,
58618: 34147,
58619: 34136,
58620: 34120,
58688: 34113,
58689: 34306,
58690: 34123,
58691: 34133,
58692: 34176,
58693: 34212,
58694: 34184,
58695: 34193,
58696: 34186,
58697: 34216,
58698: 34157,
58699: 34196,
58700: 34203,
58701: 34282,
58702: 34183,
58703: 34204,
58704: 34167,
58705: 34174,
58706: 34192,
58707: 34249,
58708: 34234,
58709: 34255,
58710: 34233,
58711: 34256,
58712: 34261,
58713: 34269,
58714: 34277,
58715: 34268,
58716: 34297,
58717: 34314,
58718: 34323,
58719: 34315,
58720: 34302,
58721: 34298,
58722: 34310,
58723: 34338,
58724: 34330,
58725: 34352,
58726: 34367,
58727: 34381,
58728: 20053,
58729: 34388,
58730: 34399,
58731: 34407,
58732: 34417,
58733: 34451,
58734: 34467,
58735: 34473,
58736: 34474,
58737: 34443,
58738: 34444,
58739: 34486,
58740: 34479,
58741: 34500,
58742: 34502,
58743: 34480,
58744: 34505,
58745: 34851,
58746: 34475,
58747: 34516,
58748: 34526,
58749: 34537,
58750: 34540,
58752: 34527,
58753: 34523,
58754: 34543,
58755: 34578,
58756: 34566,
58757: 34568,
58758: 34560,
58759: 34563,
58760: 34555,
58761: 34577,
58762: 34569,
58763: 34573,
58764: 34553,
58765: 34570,
58766: 34612,
58767: 34623,
58768: 34615,
58769: 34619,
58770: 34597,
58771: 34601,
58772: 34586,
58773: 34656,
58774: 34655,
58775: 34680,
58776: 34636,
58777: 34638,
58778: 34676,
58779: 34647,
58780: 34664,
58781: 34670,
58782: 34649,
58783: 34643,
58784: 34659,
58785: 34666,
58786: 34821,
58787: 34722,
58788: 34719,
58789: 34690,
58790: 34735,
58791: 34763,
58792: 34749,
58793: 34752,
58794: 34768,
58795: 38614,
58796: 34731,
58797: 34756,
58798: 34739,
58799: 34759,
58800: 34758,
58801: 34747,
58802: 34799,
58803: 34802,
58804: 34784,
58805: 34831,
58806: 34829,
58807: 34814,
58808: 34806,
58809: 34807,
58810: 34830,
58811: 34770,
58812: 34833,
58813: 34838,
58814: 34837,
58815: 34850,
58816: 34849,
58817: 34865,
58818: 34870,
58819: 34873,
58820: 34855,
58821: 34875,
58822: 34884,
58823: 34882,
58824: 34898,
58825: 34905,
58826: 34910,
58827: 34914,
58828: 34923,
58829: 34945,
58830: 34942,
58831: 34974,
58832: 34933,
58833: 34941,
58834: 34997,
58835: 34930,
58836: 34946,
58837: 34967,
58838: 34962,
58839: 34990,
58840: 34969,
58841: 34978,
58842: 34957,
58843: 34980,
58844: 34992,
58845: 35007,
58846: 34993,
58847: 35011,
58848: 35012,
58849: 35028,
58850: 35032,
58851: 35033,
58852: 35037,
58853: 35065,
58854: 35074,
58855: 35068,
58856: 35060,
58857: 35048,
58858: 35058,
58859: 35076,
58860: 35084,
58861: 35082,
58862: 35091,
58863: 35139,
58864: 35102,
58865: 35109,
58866: 35114,
58867: 35115,
58868: 35137,
58869: 35140,
58870: 35131,
58871: 35126,
58872: 35128,
58873: 35148,
58874: 35101,
58875: 35168,
58876: 35166,
58944: 35174,
58945: 35172,
58946: 35181,
58947: 35178,
58948: 35183,
58949: 35188,
58950: 35191,
58951: 35198,
58952: 35203,
58953: 35208,
58954: 35210,
58955: 35219,
58956: 35224,
58957: 35233,
58958: 35241,
58959: 35238,
58960: 35244,
58961: 35247,
58962: 35250,
58963: 35258,
58964: 35261,
58965: 35263,
58966: 35264,
58967: 35290,
58968: 35292,
58969: 35293,
58970: 35303,
58971: 35316,
58972: 35320,
58973: 35331,
58974: 35350,
58975: 35344,
58976: 35340,
58977: 35355,
58978: 35357,
58979: 35365,
58980: 35382,
58981: 35393,
58982: 35419,
58983: 35410,
58984: 35398,
58985: 35400,
58986: 35452,
58987: 35437,
58988: 35436,
58989: 35426,
58990: 35461,
58991: 35458,
58992: 35460,
58993: 35496,
58994: 35489,
58995: 35473,
58996: 35493,
58997: 35494,
58998: 35482,
58999: 35491,
59e3: 35524,
59001: 35533,
59002: 35522,
59003: 35546,
59004: 35563,
59005: 35571,
59006: 35559,
59008: 35556,
59009: 35569,
59010: 35604,
59011: 35552,
59012: 35554,
59013: 35575,
59014: 35550,
59015: 35547,
59016: 35596,
59017: 35591,
59018: 35610,
59019: 35553,
59020: 35606,
59021: 35600,
59022: 35607,
59023: 35616,
59024: 35635,
59025: 38827,
59026: 35622,
59027: 35627,
59028: 35646,
59029: 35624,
59030: 35649,
59031: 35660,
59032: 35663,
59033: 35662,
59034: 35657,
59035: 35670,
59036: 35675,
59037: 35674,
59038: 35691,
59039: 35679,
59040: 35692,
59041: 35695,
59042: 35700,
59043: 35709,
59044: 35712,
59045: 35724,
59046: 35726,
59047: 35730,
59048: 35731,
59049: 35734,
59050: 35737,
59051: 35738,
59052: 35898,
59053: 35905,
59054: 35903,
59055: 35912,
59056: 35916,
59057: 35918,
59058: 35920,
59059: 35925,
59060: 35938,
59061: 35948,
59062: 35960,
59063: 35962,
59064: 35970,
59065: 35977,
59066: 35973,
59067: 35978,
59068: 35981,
59069: 35982,
59070: 35988,
59071: 35964,
59072: 35992,
59073: 25117,
59074: 36013,
59075: 36010,
59076: 36029,
59077: 36018,
59078: 36019,
59079: 36014,
59080: 36022,
59081: 36040,
59082: 36033,
59083: 36068,
59084: 36067,
59085: 36058,
59086: 36093,
59087: 36090,
59088: 36091,
59089: 36100,
59090: 36101,
59091: 36106,
59092: 36103,
59093: 36111,
59094: 36109,
59095: 36112,
59096: 40782,
59097: 36115,
59098: 36045,
59099: 36116,
59100: 36118,
59101: 36199,
59102: 36205,
59103: 36209,
59104: 36211,
59105: 36225,
59106: 36249,
59107: 36290,
59108: 36286,
59109: 36282,
59110: 36303,
59111: 36314,
59112: 36310,
59113: 36300,
59114: 36315,
59115: 36299,
59116: 36330,
59117: 36331,
59118: 36319,
59119: 36323,
59120: 36348,
59121: 36360,
59122: 36361,
59123: 36351,
59124: 36381,
59125: 36382,
59126: 36368,
59127: 36383,
59128: 36418,
59129: 36405,
59130: 36400,
59131: 36404,
59132: 36426,
59200: 36423,
59201: 36425,
59202: 36428,
59203: 36432,
59204: 36424,
59205: 36441,
59206: 36452,
59207: 36448,
59208: 36394,
59209: 36451,
59210: 36437,
59211: 36470,
59212: 36466,
59213: 36476,
59214: 36481,
59215: 36487,
59216: 36485,
59217: 36484,
59218: 36491,
59219: 36490,
59220: 36499,
59221: 36497,
59222: 36500,
59223: 36505,
59224: 36522,
59225: 36513,
59226: 36524,
59227: 36528,
59228: 36550,
59229: 36529,
59230: 36542,
59231: 36549,
59232: 36552,
59233: 36555,
59234: 36571,
59235: 36579,
59236: 36604,
59237: 36603,
59238: 36587,
59239: 36606,
59240: 36618,
59241: 36613,
59242: 36629,
59243: 36626,
59244: 36633,
59245: 36627,
59246: 36636,
59247: 36639,
59248: 36635,
59249: 36620,
59250: 36646,
59251: 36659,
59252: 36667,
59253: 36665,
59254: 36677,
59255: 36674,
59256: 36670,
59257: 36684,
59258: 36681,
59259: 36678,
59260: 36686,
59261: 36695,
59262: 36700,
59264: 36706,
59265: 36707,
59266: 36708,
59267: 36764,
59268: 36767,
59269: 36771,
59270: 36781,
59271: 36783,
59272: 36791,
59273: 36826,
59274: 36837,
59275: 36834,
59276: 36842,
59277: 36847,
59278: 36999,
59279: 36852,
59280: 36869,
59281: 36857,
59282: 36858,
59283: 36881,
59284: 36885,
59285: 36897,
59286: 36877,
59287: 36894,
59288: 36886,
59289: 36875,
59290: 36903,
59291: 36918,
59292: 36917,
59293: 36921,
59294: 36856,
59295: 36943,
59296: 36944,
59297: 36945,
59298: 36946,
59299: 36878,
59300: 36937,
59301: 36926,
59302: 36950,
59303: 36952,
59304: 36958,
59305: 36968,
59306: 36975,
59307: 36982,
59308: 38568,
59309: 36978,
59310: 36994,
59311: 36989,
59312: 36993,
59313: 36992,
59314: 37002,
59315: 37001,
59316: 37007,
59317: 37032,
59318: 37039,
59319: 37041,
59320: 37045,
59321: 37090,
59322: 37092,
59323: 25160,
59324: 37083,
59325: 37122,
59326: 37138,
59327: 37145,
59328: 37170,
59329: 37168,
59330: 37194,
59331: 37206,
59332: 37208,
59333: 37219,
59334: 37221,
59335: 37225,
59336: 37235,
59337: 37234,
59338: 37259,
59339: 37257,
59340: 37250,
59341: 37282,
59342: 37291,
59343: 37295,
59344: 37290,
59345: 37301,
59346: 37300,
59347: 37306,
59348: 37312,
59349: 37313,
59350: 37321,
59351: 37323,
59352: 37328,
59353: 37334,
59354: 37343,
59355: 37345,
59356: 37339,
59357: 37372,
59358: 37365,
59359: 37366,
59360: 37406,
59361: 37375,
59362: 37396,
59363: 37420,
59364: 37397,
59365: 37393,
59366: 37470,
59367: 37463,
59368: 37445,
59369: 37449,
59370: 37476,
59371: 37448,
59372: 37525,
59373: 37439,
59374: 37451,
59375: 37456,
59376: 37532,
59377: 37526,
59378: 37523,
59379: 37531,
59380: 37466,
59381: 37583,
59382: 37561,
59383: 37559,
59384: 37609,
59385: 37647,
59386: 37626,
59387: 37700,
59388: 37678,
59456: 37657,
59457: 37666,
59458: 37658,
59459: 37667,
59460: 37690,
59461: 37685,
59462: 37691,
59463: 37724,
59464: 37728,
59465: 37756,
59466: 37742,
59467: 37718,
59468: 37808,
59469: 37804,
59470: 37805,
59471: 37780,
59472: 37817,
59473: 37846,
59474: 37847,
59475: 37864,
59476: 37861,
59477: 37848,
59478: 37827,
59479: 37853,
59480: 37840,
59481: 37832,
59482: 37860,
59483: 37914,
59484: 37908,
59485: 37907,
59486: 37891,
59487: 37895,
59488: 37904,
59489: 37942,
59490: 37931,
59491: 37941,
59492: 37921,
59493: 37946,
59494: 37953,
59495: 37970,
59496: 37956,
59497: 37979,
59498: 37984,
59499: 37986,
59500: 37982,
59501: 37994,
59502: 37417,
59503: 38e3,
59504: 38005,
59505: 38007,
59506: 38013,
59507: 37978,
59508: 38012,
59509: 38014,
59510: 38017,
59511: 38015,
59512: 38274,
59513: 38279,
59514: 38282,
59515: 38292,
59516: 38294,
59517: 38296,
59518: 38297,
59520: 38304,
59521: 38312,
59522: 38311,
59523: 38317,
59524: 38332,
59525: 38331,
59526: 38329,
59527: 38334,
59528: 38346,
59529: 28662,
59530: 38339,
59531: 38349,
59532: 38348,
59533: 38357,
59534: 38356,
59535: 38358,
59536: 38364,
59537: 38369,
59538: 38373,
59539: 38370,
59540: 38433,
59541: 38440,
59542: 38446,
59543: 38447,
59544: 38466,
59545: 38476,
59546: 38479,
59547: 38475,
59548: 38519,
59549: 38492,
59550: 38494,
59551: 38493,
59552: 38495,
59553: 38502,
59554: 38514,
59555: 38508,
59556: 38541,
59557: 38552,
59558: 38549,
59559: 38551,
59560: 38570,
59561: 38567,
59562: 38577,
59563: 38578,
59564: 38576,
59565: 38580,
59566: 38582,
59567: 38584,
59568: 38585,
59569: 38606,
59570: 38603,
59571: 38601,
59572: 38605,
59573: 35149,
59574: 38620,
59575: 38669,
59576: 38613,
59577: 38649,
59578: 38660,
59579: 38662,
59580: 38664,
59581: 38675,
59582: 38670,
59583: 38673,
59584: 38671,
59585: 38678,
59586: 38681,
59587: 38692,
59588: 38698,
59589: 38704,
59590: 38713,
59591: 38717,
59592: 38718,
59593: 38724,
59594: 38726,
59595: 38728,
59596: 38722,
59597: 38729,
59598: 38748,
59599: 38752,
59600: 38756,
59601: 38758,
59602: 38760,
59603: 21202,
59604: 38763,
59605: 38769,
59606: 38777,
59607: 38789,
59608: 38780,
59609: 38785,
59610: 38778,
59611: 38790,
59612: 38795,
59613: 38799,
59614: 38800,
59615: 38812,
59616: 38824,
59617: 38822,
59618: 38819,
59619: 38835,
59620: 38836,
59621: 38851,
59622: 38854,
59623: 38856,
59624: 38859,
59625: 38876,
59626: 38893,
59627: 40783,
59628: 38898,
59629: 31455,
59630: 38902,
59631: 38901,
59632: 38927,
59633: 38924,
59634: 38968,
59635: 38948,
59636: 38945,
59637: 38967,
59638: 38973,
59639: 38982,
59640: 38991,
59641: 38987,
59642: 39019,
59643: 39023,
59644: 39024,
59712: 39025,
59713: 39028,
59714: 39027,
59715: 39082,
59716: 39087,
59717: 39089,
59718: 39094,
59719: 39108,
59720: 39107,
59721: 39110,
59722: 39145,
59723: 39147,
59724: 39171,
59725: 39177,
59726: 39186,
59727: 39188,
59728: 39192,
59729: 39201,
59730: 39197,
59731: 39198,
59732: 39204,
59733: 39200,
59734: 39212,
59735: 39214,
59736: 39229,
59737: 39230,
59738: 39234,
59739: 39241,
59740: 39237,
59741: 39248,
59742: 39243,
59743: 39249,
59744: 39250,
59745: 39244,
59746: 39253,
59747: 39319,
59748: 39320,
59749: 39333,
59750: 39341,
59751: 39342,
59752: 39356,
59753: 39391,
59754: 39387,
59755: 39389,
59756: 39384,
59757: 39377,
59758: 39405,
59759: 39406,
59760: 39409,
59761: 39410,
59762: 39419,
59763: 39416,
59764: 39425,
59765: 39439,
59766: 39429,
59767: 39394,
59768: 39449,
59769: 39467,
59770: 39479,
59771: 39493,
59772: 39490,
59773: 39488,
59774: 39491,
59776: 39486,
59777: 39509,
59778: 39501,
59779: 39515,
59780: 39511,
59781: 39519,
59782: 39522,
59783: 39525,
59784: 39524,
59785: 39529,
59786: 39531,
59787: 39530,
59788: 39597,
59789: 39600,
59790: 39612,
59791: 39616,
59792: 39631,
59793: 39633,
59794: 39635,
59795: 39636,
59796: 39646,
59797: 39647,
59798: 39650,
59799: 39651,
59800: 39654,
59801: 39663,
59802: 39659,
59803: 39662,
59804: 39668,
59805: 39665,
59806: 39671,
59807: 39675,
59808: 39686,
59809: 39704,
59810: 39706,
59811: 39711,
59812: 39714,
59813: 39715,
59814: 39717,
59815: 39719,
59816: 39720,
59817: 39721,
59818: 39722,
59819: 39726,
59820: 39727,
59821: 39730,
59822: 39748,
59823: 39747,
59824: 39759,
59825: 39757,
59826: 39758,
59827: 39761,
59828: 39768,
59829: 39796,
59830: 39827,
59831: 39811,
59832: 39825,
59833: 39830,
59834: 39831,
59835: 39839,
59836: 39840,
59837: 39848,
59838: 39860,
59839: 39872,
59840: 39882,
59841: 39865,
59842: 39878,
59843: 39887,
59844: 39889,
59845: 39890,
59846: 39907,
59847: 39906,
59848: 39908,
59849: 39892,
59850: 39905,
59851: 39994,
59852: 39922,
59853: 39921,
59854: 39920,
59855: 39957,
59856: 39956,
59857: 39945,
59858: 39955,
59859: 39948,
59860: 39942,
59861: 39944,
59862: 39954,
59863: 39946,
59864: 39940,
59865: 39982,
59866: 39963,
59867: 39973,
59868: 39972,
59869: 39969,
59870: 39984,
59871: 40007,
59872: 39986,
59873: 40006,
59874: 39998,
59875: 40026,
59876: 40032,
59877: 40039,
59878: 40054,
59879: 40056,
59880: 40167,
59881: 40172,
59882: 40176,
59883: 40201,
59884: 40200,
59885: 40171,
59886: 40195,
59887: 40198,
59888: 40234,
59889: 40230,
59890: 40367,
59891: 40227,
59892: 40223,
59893: 40260,
59894: 40213,
59895: 40210,
59896: 40257,
59897: 40255,
59898: 40254,
59899: 40262,
59900: 40264,
59968: 40285,
59969: 40286,
59970: 40292,
59971: 40273,
59972: 40272,
59973: 40281,
59974: 40306,
59975: 40329,
59976: 40327,
59977: 40363,
59978: 40303,
59979: 40314,
59980: 40346,
59981: 40356,
59982: 40361,
59983: 40370,
59984: 40388,
59985: 40385,
59986: 40379,
59987: 40376,
59988: 40378,
59989: 40390,
59990: 40399,
59991: 40386,
59992: 40409,
59993: 40403,
59994: 40440,
59995: 40422,
59996: 40429,
59997: 40431,
59998: 40445,
59999: 40474,
6e4: 40475,
60001: 40478,
60002: 40565,
60003: 40569,
60004: 40573,
60005: 40577,
60006: 40584,
60007: 40587,
60008: 40588,
60009: 40594,
60010: 40597,
60011: 40593,
60012: 40605,
60013: 40613,
60014: 40617,
60015: 40632,
60016: 40618,
60017: 40621,
60018: 38753,
60019: 40652,
60020: 40654,
60021: 40655,
60022: 40656,
60023: 40660,
60024: 40668,
60025: 40670,
60026: 40669,
60027: 40672,
60028: 40677,
60029: 40680,
60030: 40687,
60032: 40692,
60033: 40694,
60034: 40695,
60035: 40697,
60036: 40699,
60037: 40700,
60038: 40701,
60039: 40711,
60040: 40712,
60041: 30391,
60042: 40725,
60043: 40737,
60044: 40748,
60045: 40766,
60046: 40778,
60047: 40786,
60048: 40788,
60049: 40803,
60050: 40799,
60051: 40800,
60052: 40801,
60053: 40806,
60054: 40807,
60055: 40812,
60056: 40810,
60057: 40823,
60058: 40818,
60059: 40822,
60060: 40853,
60061: 40860,
60062: 40864,
60063: 22575,
60064: 27079,
60065: 36953,
60066: 29796,
60067: 20956,
60068: 29081
}
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = t(1),
a = t(2);
r.decode = function decode(e, r) {
var t = new Uint8ClampedArray(e.length);
t.set(e);
for (var i = new n.default(285, 256, 0), o = new a.default(i, t), l = new Uint8ClampedArray(r), s = !1, c = 0; c < r; c++) {
var u = o.evaluateAt(i.exp(c + i.generatorBase));
l[l.length - 1 - c] = u, 0 !== u && (s = !0)
}
if (!s) return t;
var p = new a.default(i, l),
d = function runEuclideanAlgorithm(e, r, t, n) {
var a;
r.degree() < t.degree() && (r = (a = [t, r])[0], t = a[1]);
for (var i = r, o = t, l = e.zero, s = e.one; o.degree() >= n / 2;) {
var c = i,
u = l;
if (l = s, (i = o).isZero()) return null;
o = c;
for (var p = e.zero, d = i.getCoefficient(i.degree()), f = e.inverse(d); o.degree() >= i.degree() && !o.isZero();) {
var m = o.degree() - i.degree(),
v = e.multiply(o.getCoefficient(o.degree()), f);
p = p.addOrSubtract(e.buildMonomial(m, v)), o = o.addOrSubtract(i.multiplyByMonomial(m, v))
}
if (s = p.multiplyPoly(l).addOrSubtract(u), o.degree() >= i.degree()) return null
}
var w = s.getCoefficient(0);
if (0 === w) return null;
var y = e.inverse(w);
return [s.multiply(y), o.multiply(y)]
}(i, i.buildMonomial(r, 1), p, r);
if (null === d) return null;
var f = function findErrorLocations(e, r) {
var t = r.degree();
if (1 === t) return [r.getCoefficient(1)];
for (var n = new Array(t), a = 0, i = 1; i < e.size && a < t; i++) 0 === r.evaluateAt(i) && (n[a] = e.inverse(i), a++);
return a !== t ? null : n
}(i, d[0]);
if (null == f) return null;
for (var m = function findErrorMagnitudes(e, r, t) {
for (var a = t.length, i = new Array(a), o = 0; o < a; o++) {
for (var l = e.inverse(t[o]), s = 1, c = 0; c < a; c++) o !== c && (s = e.multiply(s, n.addOrSubtractGF(1, e.multiply(t[c], l))));
i[o] = e.multiply(r.evaluateAt(l), e.inverse(s)), 0 !== e.generatorBase && (i[o] = e.multiply(i[o], l))
}
return i
}(i, d[1], f), v = 0; v < f.length; v++) {
var w = t.length - 1 - i.log(f[v]);
if (w < 0) return null;
t[w] = n.addOrSubtractGF(t[w], m[v])
}
return t
}
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
}), r.VERSIONS = [{
infoBits: null,
versionNumber: 1,
alignmentPatternCenters: [],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 7,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 19
}]
}, {
ecCodewordsPerBlock: 10,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 16
}]
}, {
ecCodewordsPerBlock: 13,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 13
}]
}, {
ecCodewordsPerBlock: 17,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 9
}]
}]
}, {
infoBits: null,
versionNumber: 2,
alignmentPatternCenters: [6, 18],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 10,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 34
}]
}, {
ecCodewordsPerBlock: 16,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 28
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 22
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: null,
versionNumber: 3,
alignmentPatternCenters: [6, 22],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 15,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 55
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 44
}]
}, {
ecCodewordsPerBlock: 18,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 17
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 13
}]
}]
}, {
infoBits: null,
versionNumber: 4,
alignmentPatternCenters: [6, 26],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 20,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 80
}]
}, {
ecCodewordsPerBlock: 18,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 32
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 24
}]
}, {
ecCodewordsPerBlock: 16,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 9
}]
}]
}, {
infoBits: null,
versionNumber: 5,
alignmentPatternCenters: [6, 30],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 108
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 43
}]
}, {
ecCodewordsPerBlock: 18,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 15
}, {
numBlocks: 2,
dataCodewordsPerBlock: 16
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 11
}, {
numBlocks: 2,
dataCodewordsPerBlock: 12
}]
}]
}, {
infoBits: null,
versionNumber: 6,
alignmentPatternCenters: [6, 34],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 18,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 68
}]
}, {
ecCodewordsPerBlock: 16,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 27
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 19
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 15
}]
}]
}, {
infoBits: 31892,
versionNumber: 7,
alignmentPatternCenters: [6, 22, 38],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 20,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 78
}]
}, {
ecCodewordsPerBlock: 18,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 31
}]
}, {
ecCodewordsPerBlock: 18,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 14
}, {
numBlocks: 4,
dataCodewordsPerBlock: 15
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 13
}, {
numBlocks: 1,
dataCodewordsPerBlock: 14
}]
}]
}, {
infoBits: 34236,
versionNumber: 8,
alignmentPatternCenters: [6, 24, 42],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 97
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 38
}, {
numBlocks: 2,
dataCodewordsPerBlock: 39
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 18
}, {
numBlocks: 2,
dataCodewordsPerBlock: 19
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 14
}, {
numBlocks: 2,
dataCodewordsPerBlock: 15
}]
}]
}, {
infoBits: 39577,
versionNumber: 9,
alignmentPatternCenters: [6, 26, 46],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 116
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 36
}, {
numBlocks: 2,
dataCodewordsPerBlock: 37
}]
}, {
ecCodewordsPerBlock: 20,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 16
}, {
numBlocks: 4,
dataCodewordsPerBlock: 17
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 12
}, {
numBlocks: 4,
dataCodewordsPerBlock: 13
}]
}]
}, {
infoBits: 42195,
versionNumber: 10,
alignmentPatternCenters: [6, 28, 50],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 18,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 68
}, {
numBlocks: 2,
dataCodewordsPerBlock: 69
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 43
}, {
numBlocks: 1,
dataCodewordsPerBlock: 44
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 6,
dataCodewordsPerBlock: 19
}, {
numBlocks: 2,
dataCodewordsPerBlock: 20
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 6,
dataCodewordsPerBlock: 15
}, {
numBlocks: 2,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 48118,
versionNumber: 11,
alignmentPatternCenters: [6, 30, 54],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 20,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 81
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 50
}, {
numBlocks: 4,
dataCodewordsPerBlock: 51
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 22
}, {
numBlocks: 4,
dataCodewordsPerBlock: 23
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 12
}, {
numBlocks: 8,
dataCodewordsPerBlock: 13
}]
}]
}, {
infoBits: 51042,
versionNumber: 12,
alignmentPatternCenters: [6, 32, 58],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 92
}, {
numBlocks: 2,
dataCodewordsPerBlock: 93
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 6,
dataCodewordsPerBlock: 36
}, {
numBlocks: 2,
dataCodewordsPerBlock: 37
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 20
}, {
numBlocks: 6,
dataCodewordsPerBlock: 21
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 7,
dataCodewordsPerBlock: 14
}, {
numBlocks: 4,
dataCodewordsPerBlock: 15
}]
}]
}, {
infoBits: 55367,
versionNumber: 13,
alignmentPatternCenters: [6, 34, 62],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 107
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 8,
dataCodewordsPerBlock: 37
}, {
numBlocks: 1,
dataCodewordsPerBlock: 38
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 8,
dataCodewordsPerBlock: 20
}, {
numBlocks: 4,
dataCodewordsPerBlock: 21
}]
}, {
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 12,
dataCodewordsPerBlock: 11
}, {
numBlocks: 4,
dataCodewordsPerBlock: 12
}]
}]
}, {
infoBits: 58893,
versionNumber: 14,
alignmentPatternCenters: [6, 26, 46, 66],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 115
}, {
numBlocks: 1,
dataCodewordsPerBlock: 116
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 40
}, {
numBlocks: 5,
dataCodewordsPerBlock: 41
}]
}, {
ecCodewordsPerBlock: 20,
ecBlocks: [{
numBlocks: 11,
dataCodewordsPerBlock: 16
}, {
numBlocks: 5,
dataCodewordsPerBlock: 17
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 11,
dataCodewordsPerBlock: 12
}, {
numBlocks: 5,
dataCodewordsPerBlock: 13
}]
}]
}, {
infoBits: 63784,
versionNumber: 15,
alignmentPatternCenters: [6, 26, 48, 70],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 22,
ecBlocks: [{
numBlocks: 5,
dataCodewordsPerBlock: 87
}, {
numBlocks: 1,
dataCodewordsPerBlock: 88
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 5,
dataCodewordsPerBlock: 41
}, {
numBlocks: 5,
dataCodewordsPerBlock: 42
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 5,
dataCodewordsPerBlock: 24
}, {
numBlocks: 7,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 11,
dataCodewordsPerBlock: 12
}, {
numBlocks: 7,
dataCodewordsPerBlock: 13
}]
}]
}, {
infoBits: 68472,
versionNumber: 16,
alignmentPatternCenters: [6, 26, 50, 74],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 5,
dataCodewordsPerBlock: 98
}, {
numBlocks: 1,
dataCodewordsPerBlock: 99
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 7,
dataCodewordsPerBlock: 45
}, {
numBlocks: 3,
dataCodewordsPerBlock: 46
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 15,
dataCodewordsPerBlock: 19
}, {
numBlocks: 2,
dataCodewordsPerBlock: 20
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 15
}, {
numBlocks: 13,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 70749,
versionNumber: 17,
alignmentPatternCenters: [6, 30, 54, 78],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 107
}, {
numBlocks: 5,
dataCodewordsPerBlock: 108
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 10,
dataCodewordsPerBlock: 46
}, {
numBlocks: 1,
dataCodewordsPerBlock: 47
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 22
}, {
numBlocks: 15,
dataCodewordsPerBlock: 23
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 14
}, {
numBlocks: 17,
dataCodewordsPerBlock: 15
}]
}]
}, {
infoBits: 76311,
versionNumber: 18,
alignmentPatternCenters: [6, 30, 56, 82],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 5,
dataCodewordsPerBlock: 120
}, {
numBlocks: 1,
dataCodewordsPerBlock: 121
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 9,
dataCodewordsPerBlock: 43
}, {
numBlocks: 4,
dataCodewordsPerBlock: 44
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 17,
dataCodewordsPerBlock: 22
}, {
numBlocks: 1,
dataCodewordsPerBlock: 23
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 14
}, {
numBlocks: 19,
dataCodewordsPerBlock: 15
}]
}]
}, {
infoBits: 79154,
versionNumber: 19,
alignmentPatternCenters: [6, 30, 58, 86],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 113
}, {
numBlocks: 4,
dataCodewordsPerBlock: 114
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 44
}, {
numBlocks: 11,
dataCodewordsPerBlock: 45
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 17,
dataCodewordsPerBlock: 21
}, {
numBlocks: 4,
dataCodewordsPerBlock: 22
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 9,
dataCodewordsPerBlock: 13
}, {
numBlocks: 16,
dataCodewordsPerBlock: 14
}]
}]
}, {
infoBits: 84390,
versionNumber: 20,
alignmentPatternCenters: [6, 34, 62, 90],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 107
}, {
numBlocks: 5,
dataCodewordsPerBlock: 108
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 41
}, {
numBlocks: 13,
dataCodewordsPerBlock: 42
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 15,
dataCodewordsPerBlock: 24
}, {
numBlocks: 5,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 15,
dataCodewordsPerBlock: 15
}, {
numBlocks: 10,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 87683,
versionNumber: 21,
alignmentPatternCenters: [6, 28, 50, 72, 94],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 116
}, {
numBlocks: 4,
dataCodewordsPerBlock: 117
}]
}, {
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 17,
dataCodewordsPerBlock: 42
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 17,
dataCodewordsPerBlock: 22
}, {
numBlocks: 6,
dataCodewordsPerBlock: 23
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 19,
dataCodewordsPerBlock: 16
}, {
numBlocks: 6,
dataCodewordsPerBlock: 17
}]
}]
}, {
infoBits: 92361,
versionNumber: 22,
alignmentPatternCenters: [6, 26, 50, 74, 98],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 111
}, {
numBlocks: 7,
dataCodewordsPerBlock: 112
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 17,
dataCodewordsPerBlock: 46
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 7,
dataCodewordsPerBlock: 24
}, {
numBlocks: 16,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 24,
ecBlocks: [{
numBlocks: 34,
dataCodewordsPerBlock: 13
}]
}]
}, {
infoBits: 96236,
versionNumber: 23,
alignmentPatternCenters: [6, 30, 54, 74, 102],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 121
}, {
numBlocks: 5,
dataCodewordsPerBlock: 122
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 47
}, {
numBlocks: 14,
dataCodewordsPerBlock: 48
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 11,
dataCodewordsPerBlock: 24
}, {
numBlocks: 14,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 16,
dataCodewordsPerBlock: 15
}, {
numBlocks: 14,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 102084,
versionNumber: 24,
alignmentPatternCenters: [6, 28, 54, 80, 106],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 6,
dataCodewordsPerBlock: 117
}, {
numBlocks: 4,
dataCodewordsPerBlock: 118
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 6,
dataCodewordsPerBlock: 45
}, {
numBlocks: 14,
dataCodewordsPerBlock: 46
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 11,
dataCodewordsPerBlock: 24
}, {
numBlocks: 16,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 30,
dataCodewordsPerBlock: 16
}, {
numBlocks: 2,
dataCodewordsPerBlock: 17
}]
}]
}, {
infoBits: 102881,
versionNumber: 25,
alignmentPatternCenters: [6, 32, 58, 84, 110],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 26,
ecBlocks: [{
numBlocks: 8,
dataCodewordsPerBlock: 106
}, {
numBlocks: 4,
dataCodewordsPerBlock: 107
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 8,
dataCodewordsPerBlock: 47
}, {
numBlocks: 13,
dataCodewordsPerBlock: 48
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 7,
dataCodewordsPerBlock: 24
}, {
numBlocks: 22,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 22,
dataCodewordsPerBlock: 15
}, {
numBlocks: 13,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 110507,
versionNumber: 26,
alignmentPatternCenters: [6, 30, 58, 86, 114],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 10,
dataCodewordsPerBlock: 114
}, {
numBlocks: 2,
dataCodewordsPerBlock: 115
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 19,
dataCodewordsPerBlock: 46
}, {
numBlocks: 4,
dataCodewordsPerBlock: 47
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 28,
dataCodewordsPerBlock: 22
}, {
numBlocks: 6,
dataCodewordsPerBlock: 23
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 33,
dataCodewordsPerBlock: 16
}, {
numBlocks: 4,
dataCodewordsPerBlock: 17
}]
}]
}, {
infoBits: 110734,
versionNumber: 27,
alignmentPatternCenters: [6, 34, 62, 90, 118],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 8,
dataCodewordsPerBlock: 122
}, {
numBlocks: 4,
dataCodewordsPerBlock: 123
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 22,
dataCodewordsPerBlock: 45
}, {
numBlocks: 3,
dataCodewordsPerBlock: 46
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 8,
dataCodewordsPerBlock: 23
}, {
numBlocks: 26,
dataCodewordsPerBlock: 24
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 12,
dataCodewordsPerBlock: 15
}, {
numBlocks: 28,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 117786,
versionNumber: 28,
alignmentPatternCenters: [6, 26, 50, 74, 98, 122],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 117
}, {
numBlocks: 10,
dataCodewordsPerBlock: 118
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 3,
dataCodewordsPerBlock: 45
}, {
numBlocks: 23,
dataCodewordsPerBlock: 46
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 24
}, {
numBlocks: 31,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 11,
dataCodewordsPerBlock: 15
}, {
numBlocks: 31,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 119615,
versionNumber: 29,
alignmentPatternCenters: [6, 30, 54, 78, 102, 126],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 7,
dataCodewordsPerBlock: 116
}, {
numBlocks: 7,
dataCodewordsPerBlock: 117
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 21,
dataCodewordsPerBlock: 45
}, {
numBlocks: 7,
dataCodewordsPerBlock: 46
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 1,
dataCodewordsPerBlock: 23
}, {
numBlocks: 37,
dataCodewordsPerBlock: 24
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 19,
dataCodewordsPerBlock: 15
}, {
numBlocks: 26,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 126325,
versionNumber: 30,
alignmentPatternCenters: [6, 26, 52, 78, 104, 130],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 5,
dataCodewordsPerBlock: 115
}, {
numBlocks: 10,
dataCodewordsPerBlock: 116
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 19,
dataCodewordsPerBlock: 47
}, {
numBlocks: 10,
dataCodewordsPerBlock: 48
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 15,
dataCodewordsPerBlock: 24
}, {
numBlocks: 25,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 23,
dataCodewordsPerBlock: 15
}, {
numBlocks: 25,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 127568,
versionNumber: 31,
alignmentPatternCenters: [6, 30, 56, 82, 108, 134],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 13,
dataCodewordsPerBlock: 115
}, {
numBlocks: 3,
dataCodewordsPerBlock: 116
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 46
}, {
numBlocks: 29,
dataCodewordsPerBlock: 47
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 42,
dataCodewordsPerBlock: 24
}, {
numBlocks: 1,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 23,
dataCodewordsPerBlock: 15
}, {
numBlocks: 28,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 133589,
versionNumber: 32,
alignmentPatternCenters: [6, 34, 60, 86, 112, 138],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 17,
dataCodewordsPerBlock: 115
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 10,
dataCodewordsPerBlock: 46
}, {
numBlocks: 23,
dataCodewordsPerBlock: 47
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 10,
dataCodewordsPerBlock: 24
}, {
numBlocks: 35,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 19,
dataCodewordsPerBlock: 15
}, {
numBlocks: 35,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 136944,
versionNumber: 33,
alignmentPatternCenters: [6, 30, 58, 86, 114, 142],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 17,
dataCodewordsPerBlock: 115
}, {
numBlocks: 1,
dataCodewordsPerBlock: 116
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 14,
dataCodewordsPerBlock: 46
}, {
numBlocks: 21,
dataCodewordsPerBlock: 47
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 29,
dataCodewordsPerBlock: 24
}, {
numBlocks: 19,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 11,
dataCodewordsPerBlock: 15
}, {
numBlocks: 46,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 141498,
versionNumber: 34,
alignmentPatternCenters: [6, 34, 62, 90, 118, 146],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 13,
dataCodewordsPerBlock: 115
}, {
numBlocks: 6,
dataCodewordsPerBlock: 116
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 14,
dataCodewordsPerBlock: 46
}, {
numBlocks: 23,
dataCodewordsPerBlock: 47
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 44,
dataCodewordsPerBlock: 24
}, {
numBlocks: 7,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 59,
dataCodewordsPerBlock: 16
}, {
numBlocks: 1,
dataCodewordsPerBlock: 17
}]
}]
}, {
infoBits: 145311,
versionNumber: 35,
alignmentPatternCenters: [6, 30, 54, 78, 102, 126, 150],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 12,
dataCodewordsPerBlock: 121
}, {
numBlocks: 7,
dataCodewordsPerBlock: 122
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 12,
dataCodewordsPerBlock: 47
}, {
numBlocks: 26,
dataCodewordsPerBlock: 48
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 39,
dataCodewordsPerBlock: 24
}, {
numBlocks: 14,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 22,
dataCodewordsPerBlock: 15
}, {
numBlocks: 41,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 150283,
versionNumber: 36,
alignmentPatternCenters: [6, 24, 50, 76, 102, 128, 154],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 6,
dataCodewordsPerBlock: 121
}, {
numBlocks: 14,
dataCodewordsPerBlock: 122
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 6,
dataCodewordsPerBlock: 47
}, {
numBlocks: 34,
dataCodewordsPerBlock: 48
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 46,
dataCodewordsPerBlock: 24
}, {
numBlocks: 10,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 2,
dataCodewordsPerBlock: 15
}, {
numBlocks: 64,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 152622,
versionNumber: 37,
alignmentPatternCenters: [6, 28, 54, 80, 106, 132, 158],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 17,
dataCodewordsPerBlock: 122
}, {
numBlocks: 4,
dataCodewordsPerBlock: 123
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 29,
dataCodewordsPerBlock: 46
}, {
numBlocks: 14,
dataCodewordsPerBlock: 47
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 49,
dataCodewordsPerBlock: 24
}, {
numBlocks: 10,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 24,
dataCodewordsPerBlock: 15
}, {
numBlocks: 46,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 158308,
versionNumber: 38,
alignmentPatternCenters: [6, 32, 58, 84, 110, 136, 162],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 4,
dataCodewordsPerBlock: 122
}, {
numBlocks: 18,
dataCodewordsPerBlock: 123
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 13,
dataCodewordsPerBlock: 46
}, {
numBlocks: 32,
dataCodewordsPerBlock: 47
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 48,
dataCodewordsPerBlock: 24
}, {
numBlocks: 14,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 42,
dataCodewordsPerBlock: 15
}, {
numBlocks: 32,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 161089,
versionNumber: 39,
alignmentPatternCenters: [6, 26, 54, 82, 110, 138, 166],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 20,
dataCodewordsPerBlock: 117
}, {
numBlocks: 4,
dataCodewordsPerBlock: 118
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 40,
dataCodewordsPerBlock: 47
}, {
numBlocks: 7,
dataCodewordsPerBlock: 48
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 43,
dataCodewordsPerBlock: 24
}, {
numBlocks: 22,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 10,
dataCodewordsPerBlock: 15
}, {
numBlocks: 67,
dataCodewordsPerBlock: 16
}]
}]
}, {
infoBits: 167017,
versionNumber: 40,
alignmentPatternCenters: [6, 30, 58, 86, 114, 142, 170],
errorCorrectionLevels: [{
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 19,
dataCodewordsPerBlock: 118
}, {
numBlocks: 6,
dataCodewordsPerBlock: 119
}]
}, {
ecCodewordsPerBlock: 28,
ecBlocks: [{
numBlocks: 18,
dataCodewordsPerBlock: 47
}, {
numBlocks: 31,
dataCodewordsPerBlock: 48
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 34,
dataCodewordsPerBlock: 24
}, {
numBlocks: 34,
dataCodewordsPerBlock: 25
}]
}, {
ecCodewordsPerBlock: 30,
ecBlocks: [{
numBlocks: 20,
dataCodewordsPerBlock: 15
}, {
numBlocks: 61,
dataCodewordsPerBlock: 16
}]
}]
}]
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n = t(0);
function squareToQuadrilateral(e, r, t, n) {
var a = e.x - r.x + t.x - n.x,
i = e.y - r.y + t.y - n.y;
if (0 === a && 0 === i) return {
a11: r.x - e.x,
a12: r.y - e.y,
a13: 0,
a21: t.x - r.x,
a22: t.y - r.y,
a23: 0,
a31: e.x,
a32: e.y,
a33: 1
};
var o = r.x - t.x,
l = n.x - t.x,
s = r.y - t.y,
c = n.y - t.y,
u = o * c - l * s,
p = (a * c - l * i) / u,
d = (o * i - a * s) / u;
return {
a11: r.x - e.x + p * r.x,
a12: r.y - e.y + p * r.y,
a13: p,
a21: n.x - e.x + d * n.x,
a22: n.y - e.y + d * n.y,
a23: d,
a31: e.x,
a32: e.y,
a33: 1
}
}
r.extract = function extract(e, r) {
for (var t = function quadrilateralToSquare(e, r, t, n) {
var a = squareToQuadrilateral(e, r, t, n);
return {
a11: a.a22 * a.a33 - a.a23 * a.a32,
a12: a.a13 * a.a32 - a.a12 * a.a33,
a13: a.a12 * a.a23 - a.a13 * a.a22,
a21: a.a23 * a.a31 - a.a21 * a.a33,
a22: a.a11 * a.a33 - a.a13 * a.a31,
a23: a.a13 * a.a21 - a.a11 * a.a23,
a31: a.a21 * a.a32 - a.a22 * a.a31,
a32: a.a12 * a.a31 - a.a11 * a.a32,
a33: a.a11 * a.a22 - a.a12 * a.a21
}
}({
x: 3.5,
y: 3.5
}, {
x: r.dimension - 3.5,
y: 3.5
}, {
x: r.dimension - 6.5,
y: r.dimension - 6.5
}, {
x: 3.5,
y: r.dimension - 3.5
}), a = function times(e, r) {
return {
a11: e.a11 * r.a11 + e.a21 * r.a12 + e.a31 * r.a13,
a12: e.a12 * r.a11 + e.a22 * r.a12 + e.a32 * r.a13,
a13: e.a13 * r.a11 + e.a23 * r.a12 + e.a33 * r.a13,
a21: e.a11 * r.a21 + e.a21 * r.a22 + e.a31 * r.a23,
a22: e.a12 * r.a21 + e.a22 * r.a22 + e.a32 * r.a23,
a23: e.a13 * r.a21 + e.a23 * r.a22 + e.a33 * r.a23,
a31: e.a11 * r.a31 + e.a21 * r.a32 + e.a31 * r.a33,
a32: e.a12 * r.a31 + e.a22 * r.a32 + e.a32 * r.a33,
a33: e.a13 * r.a31 + e.a23 * r.a32 + e.a33 * r.a33
}
}(squareToQuadrilateral(r.topLeft, r.topRight, r.alignmentPattern, r.bottomLeft), t), i = n.BitMatrix.createEmpty(r.dimension, r.dimension), mappingFunction = function(e, r) {
var t = a.a13 * e + a.a23 * r + a.a33;
return {
x: (a.a11 * e + a.a21 * r + a.a31) / t,
y: (a.a12 * e + a.a22 * r + a.a32) / t
}
}, o = 0; o < r.dimension; o++)
for (var l = 0; l < r.dimension; l++) {
var s = mappingFunction(l + .5, o + .5);
i.set(l, o, e.get(Math.floor(s.x), Math.floor(s.y)))
}
return {
matrix: i,
mappingFunction: mappingFunction
}
}
}, function(e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var distance = function(e, r) {
return Math.sqrt(Math.pow(r.x - e.x, 2) + Math.pow(r.y - e.y, 2))
};
function sum(e) {
return e.reduce((function(e, r) {
return e + r
}))
}
function countBlackWhiteRunTowardsPoint(e, r, t, n) {
var a, i, o, l, s = [{
x: Math.floor(e.x),
y: Math.floor(e.y)
}],
c = Math.abs(r.y - e.y) > Math.abs(r.x - e.x);
c ? (a = Math.floor(e.y), i = Math.floor(e.x), o = Math.floor(r.y), l = Math.floor(r.x)) : (a = Math.floor(e.x), i = Math.floor(e.y), o = Math.floor(r.x), l = Math.floor(r.y));
for (var u = Math.abs(o - a), p = Math.abs(l - i), d = Math.floor(-u / 2), f = a < o ? 1 : -1, m = i < l ? 1 : -1, v = !0, w = a, y = i; w !== o + f; w += f) {
var h = c ? y : w,
E = c ? w : y;
if (t.get(h, E) !== v && (v = !v, s.push({
x: h,
y: E
}), s.length === n + 1)) break;
if ((d += p) > 0) {
if (y === l) break;
y += m, d -= u
}
}
for (var M = [], S = 0; S < n; S++) s[S] && s[S + 1] ? M.push(distance(s[S], s[S + 1])) : M.push(0);
return M
}
function countBlackWhiteRun(e, r, t, n) {
var a, i = r.y - e.y,
o = r.x - e.x,
l = countBlackWhiteRunTowardsPoint(e, r, t, Math.ceil(n / 2)),
s = countBlackWhiteRunTowardsPoint(e, {
x: e.x - o,
y: e.y - i
}, t, Math.ceil(n / 2)),
c = l.shift() + s.shift() - 1;
return (a = s.concat(c)).concat.apply(a, l)
}
function scoreBlackWhiteRun(e, r) {
var t = sum(e) / sum(r),
n = 0;
return r.forEach((function(r, a) {
n += Math.pow(e[a] - r * t, 2)
})), {
averageSize: t,
error: n
}
}
function scorePattern(e, r, t) {
try {
var n = countBlackWhiteRun(e, {
x: -1,
y: e.y
}, t, r.length),
a = countBlackWhiteRun(e, {
x: e.x,
y: -1
}, t, r.length),
i = countBlackWhiteRun(e, {
x: Math.max(0, e.x - e.y) - 1,
y: Math.max(0, e.y - e.x) - 1
}, t, r.length),
o = countBlackWhiteRun(e, {
x: Math.min(t.width, e.x + e.y) + 1,
y: Math.min(t.height, e.y + e.x) + 1
}, t, r.length),
l = scoreBlackWhiteRun(n, r),
s = scoreBlackWhiteRun(a, r),
c = scoreBlackWhiteRun(i, r),
u = scoreBlackWhiteRun(o, r),
p = Math.sqrt(l.error * l.error + s.error * s.error + c.error * c.error + u.error * u.error),
d = (l.averageSize + s.averageSize + c.averageSize + u.averageSize) / 4;
return p + (Math.pow(l.averageSize - d, 2) + Math.pow(s.averageSize - d, 2) + Math.pow(c.averageSize - d, 2) + Math.pow(u.averageSize - d, 2)) / d
} catch (e) {
return 1 / 0
}
}
function recenterLocation(e, r) {
for (var t = Math.round(r.x); e.get(t, Math.round(r.y));) t--;
for (var n = Math.round(r.x); e.get(n, Math.round(r.y));) n++;
for (var a = (t + n) / 2, i = Math.round(r.y); e.get(Math.round(a), i);) i--;
for (var o = Math.round(r.y); e.get(Math.round(a), o);) o++;
return {
x: a,
y: (i + o) / 2
}
}
function findAlignmentPattern(e, r, t, n, a) {
var i, o, l;
try {
i = function computeDimension(e, r, t, n) {
var a = (sum(countBlackWhiteRun(e, t, n, 5)) / 7 + sum(countBlackWhiteRun(e, r, n, 5)) / 7 + sum(countBlackWhiteRun(t, e, n, 5)) / 7 + sum(countBlackWhiteRun(r, e, n, 5)) / 7) / 4;
if (a < 1) throw new Error("Invalid module size");
var i = Math.round(distance(e, r) / a),
o = Math.round(distance(e, t) / a),
l = Math.floor((i + o) / 2) + 7;
switch (l % 4) {
case 0:
l++;
break;
case 2:
l--
}
return {
dimension: l,
moduleSize: a
}
}(n, t, a, e), o = i.dimension, l = i.moduleSize
} catch (e) {
return null
}
var s = t.x - n.x + a.x,
c = t.y - n.y + a.y,
u = (distance(n, a) + distance(n, t)) / 2 / l,
p = 1 - 3 / u,
d = {
x: n.x + p * (s - n.x),
y: n.y + p * (c - n.y)
},
f = r.map((function(r) {
var t = (r.top.startX + r.top.endX + r.bottom.startX + r.bottom.endX) / 4,
n = (r.top.y + r.bottom.y + 1) / 2;
if (e.get(Math.floor(t), Math.floor(n))) return {
x: t,
y: n,
score: scorePattern({
x: Math.floor(t),
y: Math.floor(n)
}, [1, 1, 1], e) + distance({
x: t,
y: n
}, d)
}
})).filter((function(e) {
return !!e
})).sort((function(e, r) {
return e.score - r.score
}));
return {
alignmentPattern: u >= 15 && f.length ? f[0] : d,
dimension: o
}
}
r.locate = function locate(e) {
for (var r = [], t = [], n = [], a = [], _loop_1 = function(i) {
for (var o = 0, l = !1, s = [0, 0, 0, 0, 0], _loop_2 = function(r) {
var n = e.get(r, i);
if (n === l) o++;
else {
s = [s[1], s[2], s[3], s[4], o], o = 1, l = n;
var c = sum(s) / 7,
u = Math.abs(s[0] - c) < c && Math.abs(s[1] - c) < c && Math.abs(s[2] - 3 * c) < 3 * c && Math.abs(s[3] - c) < c && Math.abs(s[4] - c) < c && !n,
p = sum(s.slice(-3)) / 3,
d = Math.abs(s[2] - p) < p && Math.abs(s[3] - p) < p && Math.abs(s[4] - p) < p && n;
if (u) {
var f = r - s[3] - s[4],
m = f - s[2],
v = {
startX: m,
endX: f,
y: i
};
(w = t.filter((function(e) {
return m >= e.bottom.startX && m <= e.bottom.endX || f >= e.bottom.startX && m <= e.bottom.endX || m <= e.bottom.startX && f >= e.bottom.endX && s[2] / (e.bottom.endX - e.bottom.startX) < 1.5 && s[2] / (e.bottom.endX - e.bottom.startX) > .5
}))).length > 0 ? w[0].bottom = v : t.push({
top: v,
bottom: v
})
}
if (d) {
var w, y = r - s[4],
h = y - s[3];
v = {
startX: h,
y: i,
endX: y
};
(w = a.filter((function(e) {
return h >= e.bottom.startX && h <= e.bottom.endX || y >= e.bottom.startX && h <= e.bottom.endX || h <= e.bottom.startX && y >= e.bottom.endX && s[2] / (e.bottom.endX - e.bottom.startX) < 1.5 && s[2] / (e.bottom.endX - e.bottom.startX) > .5
}))).length > 0 ? w[0].bottom = v : a.push({
top: v,
bottom: v
})
}
}
}, c = -1; c <= e.width; c++) _loop_2(c);
r.push.apply(r, t.filter((function(e) {
return e.bottom.y !== i && e.bottom.y - e.top.y >= 2
}))), t = t.filter((function(e) {
return e.bottom.y === i
})), n.push.apply(n, a.filter((function(e) {
return e.bottom.y !== i
}))), a = a.filter((function(e) {
return e.bottom.y === i
}))
}, i = 0; i <= e.height; i++) _loop_1(i);
r.push.apply(r, t.filter((function(e) {
return e.bottom.y - e.top.y >= 2
}))), n.push.apply(n, a);
var o = r.filter((function(e) {
return e.bottom.y - e.top.y >= 2
})).map((function(r) {
var t = (r.top.startX + r.top.endX + r.bottom.startX + r.bottom.endX) / 4,
n = (r.top.y + r.bottom.y + 1) / 2;
if (e.get(Math.round(t), Math.round(n))) {
var a = [r.top.endX - r.top.startX, r.bottom.endX - r.bottom.startX, r.bottom.y - r.top.y + 1],
i = sum(a) / a.length;
return {
score: scorePattern({
x: Math.round(t),
y: Math.round(n)
}, [1, 1, 3, 1, 1], e),
x: t,
y: n,
size: i
}
}
})).filter((function(e) {
return !!e
})).sort((function(e, r) {
return e.score - r.score
})).map((function(e, r, t) {
if (r > 4) return null;
var n = t.filter((function(e, t) {
return r !== t
})).map((function(r) {
return {
x: r.x,
y: r.y,
score: r.score + Math.pow(r.size - e.size, 2) / e.size,
size: r.size
}
})).sort((function(e, r) {
return e.score - r.score
}));
if (n.length < 2) return null;
var a = e.score + n[0].score + n[1].score;
return {
points: [e].concat(n.slice(0, 2)),
score: a
}
})).filter((function(e) {
return !!e
})).sort((function(e, r) {
return e.score - r.score
}));
if (0 === o.length) return null;
var l = function reorderFinderPatterns(e, r, t) {
var n, a, i, o, l, s, c, u = distance(e, r),
p = distance(r, t),
d = distance(e, t);
return p >= u && p >= d ? (l = (n = [r, e, t])[0], s = n[1], c = n[2]) : d >= p && d >= u ? (l = (a = [e, r, t])[0], s = a[1], c = a[2]) : (l = (i = [e, t, r])[0], s = i[1], c = i[2]), (c.x - s.x) * (l.y - s.y) - (c.y - s.y) * (l.x - s.x) < 0 && (l = (o = [c, l])[0], c = o[1]), {
bottomLeft: l,
topLeft: s,
topRight: c
}
}(o[0].points[0], o[0].points[1], o[0].points[2]),
s = l.topRight,
c = l.topLeft,
u = l.bottomLeft,
p = findAlignmentPattern(e, n, s, c, u),
d = [];
p && d.push({
alignmentPattern: {
x: p.alignmentPattern.x,
y: p.alignmentPattern.y
},
bottomLeft: {
x: u.x,
y: u.y
},
dimension: p.dimension,
topLeft: {
x: c.x,
y: c.y
},
topRight: {
x: s.x,
y: s.y
}
});
var f = recenterLocation(e, s),
m = recenterLocation(e, c),
v = recenterLocation(e, u),
w = findAlignmentPattern(e, n, f, m, v);
return w && d.push({
alignmentPattern: {
x: w.alignmentPattern.x,
y: w.alignmentPattern.y
},
bottomLeft: {
x: v.x,
y: v.y
},
topLeft: {
x: m.x,
y: m.y
},
topRight: {
x: f.x,
y: f.y
},
dimension: w.dimension
}), 0 === d.length ? null : d
}
}]).default
}));
const ContextState = {
IncompatibleOS: "IncompatibleOS",
NotInSession: "NotInSession",
NativeSupportNotInstalled: "NativeSupportNotInstalled",
CheckEngine: "CheckEngine",
ChallengeSent: "ChallengeSent",
MSG1Set: "MSG1Set",
SessionKeySet: "SessionKeySet"
},
DataState = {
Initial: "Initial",
Frame0Processed: "Frame0Processed",
DataProcessed: "DataProcessed"
},
RememberIC = {
NoValueSet: "NoValueSet",
UnknownPage: "UnknownPage",
DoNotRemember: "DoNotRemember",
RememberLoginAndPassword: "RememberLoginAndPassword"
};
var pwlog = void 0,
pwerror = void 0;
function isStringEmpty(e) {
return !e || 0 === e.length
}
function urlFromURLString(e) {
try {
return new URL(e)
} catch {
return null
}
}
function humanReadableFormType(e) {
switch (e) {
case 0:
return "Undetermined";
case 1:
return "AutoFillable:Standard";
case 2:
return "NonAutoFillable";
case 3:
return "AutoFillable:Login";
case 4:
return "NewAccount";
case 5:
return "ChangePassword";
case WBSAutoFillFormTypeFoundTOTPURI:
return "FoundTOTPUri"
}
return "Unrecognized"
}
function domainsForDisplayFromUsernamesAndDomains(e, r) {
const t = e.length;
let n = r.map((function(e) {
return e.replace(/^(www|m)\./, "")
})),
a = [];
for (var i = 0; i < t; i++) a.push([e[i], n[i]]);
for (i = 0; i < t; i++) {
let e = [];
for (var o = i + 1; o < t; o++) a[i].join("\n") === a[o].join("\n") && (e.length || e.push(i), e.push(o));
for (let t of e) n[t] = r[t]
}
return n
}
function urlIsBrowserURL(e) {
const r = e.protocol;
return "chrome:" === r || "edge:" === r || "about:" == r
}
function isExtensionContextInvalidatedError(e) {
return "Extension context invalidated." === e.message
}
function capabilitiesDeclaresMacOS(e) {
try {
return "macos" === e.operatingSystem.name
} catch {
return !1
}
}
class Localizer {
static configureDocumentElementForLanguage(e, r) {
switch (r) {
case "he":
case "ar":
case "fa":
e.setAttribute("dir", "rtl"), e.setAttribute("lang", r)
}
}
#e = {};
constructor(e) {
e && (this.#e = e.operatingSystem)
}
getMessage(e, r, t) {
const n = this.messageNamesToTry(e);
for (let e of n) {
let n;
try {
n = chrome.i18n.getMessage(e, r, t)
} catch {
n = chrome.i18n.getMessage(e, r)
}
if (n) return n
}
return ""
}
messageNamesToTry(e) {
let r = [];
const t = this.#e,
n = t ? t.name : void 0,
a = t ? t.majorVersion : void 0,
i = t ? t.minorVersion : void 0,
o = void 0 !== a;
return n && o && void 0 !== i && r.push(`${e}_${n}_${a}_${i}`), n && o && r.push(`${e}_${n}_${a}`), n ? r.push(`${e}_${n}`) : r.push(`${e}_${this.#r}`), r.push(e), r
}
get #r() {
return navigator.platform.startsWith("Mac") ? "macos" : "windows"
}
}
class ExtensionSettings {
#t = !1;
#n = !0;
#a = !0;
eventTarget = new EventTarget;
constructor(e = !1) {
this.#t = e, this.#i(), this.#o()
}
get enableInPageAutoFill() {
return this.#n
}
set enableInPageAutoFill(e) {
this.#n = e, this.#l()
}
get allowExtensionToControlAutoFillSettings() {
return this.#a
}
set allowExtensionToControlAutoFillSettings(e) {
this.#a = e, this.#s().then(this.#l.bind(this))
}
#s() {
return this.#a ? this.attemptToControlBrowserAutoFillSettings() : this.clearControlOfBrowserAutoFillSettings()
}
async attemptToControlBrowserAutoFillSettings() {
if (this.#t) throw new Error("This Settings instance does not allow writing browser settings");
const e = await Promise.allSettled([this.#c(chrome.privacy.services.passwordSavingEnabled, !1), this.#c(chrome.privacy.services.autofillCreditCardEnabled, !1), this.#c(chrome.privacy.services.autofillAddressEnabled, !1)]);
return this.#u(), e
}
async clearControlOfBrowserAutoFillSettings() {
if (this.#t) throw new Error("This Settings instance does not allow writing browser settings");
const e = await Promise.allSettled([this.#p(chrome.privacy.services.passwordSavingEnabled), this.#p(chrome.privacy.services.autofillCreditCardEnabled), this.#p(chrome.privacy.services.autofillAddressEnabled)]);
return this.#u(), e
}
#i() {
let e = new Promise((e => {
chrome.storage.sync.get({
enableInPageAutoFill: !0,
allowExtensionToControlAutoFillSettings: !0
}, (r => {
this.#n = r.enableInPageAutoFill, this.#a = r.allowExtensionToControlAutoFillSettings, e()
}))
}));
return this.#t || (e = e.then(this.#s.bind(this))), e.then(this.#u.bind(this))
}
#l() {
return new Promise((e => {
chrome.storage.sync.set({
enableInPageAutoFill: this.#n,
allowExtensionToControlAutoFillSettings: this.#a
}, e)
})).then(this.#u.bind(this))
}
#o() {
this.#t || (chrome.privacy.services.passwordSavingEnabled && chrome.privacy.services.passwordSavingEnabled.onChange.addListener((e => {
this.#u()
})), chrome.privacy.services.autofillCreditCardEnabled && chrome.privacy.services.autofillCreditCardEnabled.onChange.addListener((e => {
this.#u()
})), chrome.privacy.services.autofillAddressEnabled && chrome.privacy.services.autofillAddressEnabled.onChange.addListener((e => {
this.#u()
})))
}
#u() {
const e = new CustomEvent("settingsChanged", {
detail: {
enableInPageAutoFill: this.#n
}
});
this.eventTarget.dispatchEvent(e)
}
async #c(e, r) {
let t;
try {
t = await this.#d(e)
} catch (e) {
return
}
if (t) {
if (t.value === r) return {
details: t,
newValue: r
};
try {
t = await e.set({
value: r
})
} catch (e) {
return
}
return {
details: t,
newValue: r
}
}
}
async #d(e) {
if (!e) throw new Error(`Unable to get ${e} setting.`);
const r = await e.get({});
if ("not_controllable" === r.levelOfControl) throw new Error(`Cannot control ${e} setting.`);
return r
}
async #p(e) {
if (!e) throw new Error(`Unable to clear browser setting: ${e}.`);
await e.clear({})
}
}
var g_selectedUserName = "",
g_selectedPassword = "",
g_selectedURL = "",
g_currentUserName = "",
g_currentPassword = "",
g_focusedControl = null,
g_lastSenderOfInformationToFill = null;
const ForCompletionList = "ForCompletionList",
ForPageWideFill = "ForPageWideFill";
var g_usernameControls = {},
g_passwordControls = {},
g_oldPasswordControls = {},
g_confirmPasswordControls = {},
g_usernameElementUniqueIDs = {},
g_passwordElementUniqueIDs = {};
const WBSAutoFillFormTypeFoundTOTPURI = 6;
var g_formTypeOfFormBestForPageWideAutoFill = 0,
g_isPresetUserNamePresent = !1,
g_theURL = null,
g_completionListContainer = null,
g_completionListIFrame = null,
g_completionListAnchoringField = null,
g_completionListAnchoringFieldPriorToBlur = null,
g_completionListAnchoringFieldBeforeOneTimeCodeRefresh = null,
g_oneTimeCodeToFillAfterUpdate = null;
const AmountOfTimeToDisallowCompletionListInFieldAfterFilling = 100;
var g_lastFilledField = null,
g_dateOfLastAutoFill = null,
g_dateOfCompletionListAnchoringFieldFocusOrMovementOfThatField = null,
g_completionListAnchoringFieldMovementSetIntervalID = null;
const AmountOfTimeToPollPageForFieldMovementAfterFocus = 5e3,
IntervalToPollPageForFieldMovementAfterFocus = 100,
ExtraClearanceForCompletionListToAccountForShadow = 24;
var g_supportsSubURLs = !1;
let g_qrCodeScanner = null,
g_heuristicsRunner = null;
const DoNotDismissCompletionListUponLosingFocus = !1;
let g_canAddEventListeners = !1,
g_didCleanUpGlobalState = !1,
g_shouldAttemptToSavePasswords = !0;
function cleanUpGlobalState() {
if (!chrome.runtime.id || g_didCleanUpGlobalState) {
removeEventListeners();
try {
chrome.runtime.onMessage.removeListener(runtimeMessageHandler)
} catch {}
destroyCompletionListIfNecessary(), g_qrCodeScanner.shouldScanElementsForQRCodes = !1, g_didCleanUpGlobalState = !0
}
}
async function sendRuntimeMessage(e) {
if (!chrome.runtime.id) throw cleanUpGlobalState(), new Error("Invalid runtime.");
try {
return await chrome.runtime.sendMessage(e)
} catch (e) {
throw e
}
}
class MetadataHeuristicsRunner {
static heuristicsRunDelayMS = 50;
#f = null;
#m = [];
#v = !0;
runHeuristics(e, r) {
return this.#f && (clearTimeout(this.#f), this.#f = null), new Promise((t => {
this.#m.push(t), this.#f = setTimeout((() => {
const t = this.#w(e, r);
this.#v && (this.findAndFocusActiveElementIfPossible(t), this.#v = !1), this.#y(t), this.#f = null
}), MetadataHeuristicsRunner.heuristicsRunDelayMS)
}))
}
#y(e) {
for (; this.#m.length;) {
this.#m.shift()(e)
}
}
#w(e, r) {
const t = urlFromURLString(document.URL),
n = g_formTypeOfFormBestForPageWideAutoFill;
g_formTypeOfFormBestForPageWideAutoFill = 0;
const a = FormMetadataJS.formsAndMetadata(1),
i = a[1];
return i ? i.forEach(((n, a) => {
if (n && n.FormIsBestForPageLevelAutoFill) {
t.hostname, assignFieldsForMetadataAndPurpose(n, ForPageWideFill, e, r);
const a = g_usernameControls.ForCompletionList;
a ? (g_isPresetUserNamePresent = !0, updateTrackedUsername(a.value)) : (g_isPresetUserNamePresent = !1, updateTrackedUsername(g_currentUserName))
}
})) : (t.hostname, t.hostname, g_formTypeOfFormBestForPageWideAutoFill = 0, t.hostname, humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill)), n !== g_formTypeOfFormBestForPageWideAutoFill ? (t.hostname, humanReadableFormType(n), humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill), t.hostname, t.hostname, humanReadableFormType(n), pageNavigationHandler(n)) : (t.hostname, humanReadableFormType(n), humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill)), sendRuntimeMessage({
from: "content",
subject: "CmdSetIconNTitle",
hostPageType: g_formTypeOfFormBestForPageWideAutoFill,
isDark: window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches
}).then((e => {
t.hostname
})).catch((e => {
t.hostname
})), a
}
findAndFocusActiveElementIfPossible(e) {
const r = document.activeElement;
if (r && FormMetadataJS._isAutoFillableTextField(r)) {
if (r === g_completionListAnchoringField) return;
elementWasFocused(r)
} else if (e)
for (const r of e[1]) r && r.FormIsBestForStreamlinedLogin && FormMetadataJS.focusFormForStreamlinedLogin(r.FormID)
}
}
class QRCodeScanner {
static scanningDelayMS = 10;
static maxScannableElementDimension = 800;
#h = !1;
#E = null;
#M = null;
#S = {};
get shouldScanElementsForQRCodes() {
return this.#h
}
set shouldScanElementsForQRCodes(e) {
this.#h !== e && (e ? (this.#E = async e => {
await this.#g(e)
}, document.addEventListener("mouseover", this.#E)) : (document.removeEventListener("mouseover", this.#E), this.#E = null))
}
get totpSecretToURI() {
return this.#S
}
async #g(e) {
await this.#k(), this.#S = {}, this.#M && clearTimeout(this.#M), this.#M = setTimeout((() => {
const r = e.target.closest("img, svg, canvas, a");
r && this.scanElementForQRCode(r), this.#M = null
}), QRCodeScanner.scanningDelayMS)
}
async #k() {
await sendRuntimeMessage({
from: "content",
subject: "CmdRemoveSetUpTOTPContextMenus",
url: document.URL
})
}
scanElementForQRCode(e) {
switch (e.tagName.toLowerCase()) {
case "img":
this.#C(e);
break;
case "svg":
this.#b(e);
break;
case "canvas":
this.#F(e);
break;
case "a":
this.#P(e)
}
}
#C(e) {
let r = new Image;
r.crossOrigin = "Anonymous", r.addEventListener("load", (async e => {
r.width && r.height && (r.width > QRCodeScanner.maxScannableElementDimension || r.height > QRCodeScanner.maxScannableElementDimension || await this.processImageElementForOTPAuthQRCode(r))
})), r.src = e.src
}
#b(e) {
let {
width: r,
height: t
} = e.getBBox();
if (!r || !t) return;
if (r > QRCodeScanner.maxScannableElementDimension || t > QRCodeScanner.maxScannableElementDimension) return;
let n = e.cloneNode(!0),
a = new Blob([n.outerHTML], {
type: "image/svg+xml;charset=utf-8"
}),
i = URL.createObjectURL(a),
o = new Image;
o.addEventListener("load", (async e => {
await this.processImageElementForOTPAuthQRCode(o)
})), o.src = i
}
#F(e) {
let r = new Image;
r.addEventListener("load", (async e => {
await this.processImageElementForOTPAuthQRCode(r)
})), r.src = e.toDataURL("image/png")
}
#P(e) {
let r;
try {
r = new URL(e.href)
} catch {}
if (r && this.#B(r)) return sendRuntimeMessage({
from: "content",
subject: "CmdAddSetUpTOTPContextMenu",
pageURL: g_theURL,
totpSetupURL: r.href
})
}
async processImageElementForOTPAuthQRCode(e) {
let r = document.createElement("canvas");
r.width = e.width, r.height = e.height;
try {
let t = r.getContext("2d");
t.drawImage(e, 0, 0);
let n = e.width,
a = e.height,
i = t.getImageData(0, 0, n, a),
o = jsQR(i.data, n, a, {
inversionAttempts: "dontInvert"
});
if (!o) return;
o.data;
const l = new URL(o.data);
this.#B(l) && (l.searchParams.get("secret"), o.data, await sendRuntimeMessage({
from: "content",
subject: "CmdAddSetUpTOTPContextMenu",
pageURL: g_theURL,
totpSetupURL: o.data
}), this.#S.hasOwnProperty(l.searchParams.get("secret")) ? (issuer, account) : this.#S[l.searchParams.get("secret")] = o.data)
} catch (e) {}
r.remove()
}
#B(e) {
return e.pathname.startsWith("//totp") && ("otpauth:" === e.protocol || "apple-otpauth:" === e.protocol) && e.searchParams.has("secret")
}
}
function fillControlsByID(e, r) {
let t = r ? FormMetadataJS.formControlWithUniqueID(r) : null;
g_dateOfLastAutoFill = (g_lastFilledField = t) ? Date.now() : null, FormMetadataJS.autoFillControlsByID(e, !1, !1, t, !1, [])
}
function confirmPasswordFieldChangeHandler(e) {
e.target;
g_passwordControls.ForPageWideFill && g_passwordControls.ForPageWideFill.value === g_confirmPasswordControls.ForPageWideFill.value && (newPassword = g_confirmPasswordControls.ForPageWideFill.value)
}
function userNameFieldChangeHandler(e) {
updateTrackedUsername(e.target.value), g_passwordControls.ForPageWideFill || sendRuntimeMessage({
from: "content",
subject: "SaveStage1LoginName",
theLogin: g_currentUserName
}).then((e => {})).catch((e => {}))
}
function passwordFieldChangeHandler(e) {
updateTrackedPassword(e.target.value)
}
function fillLoginIntoForm(e, r, t, n, a, i) {
if (e !== RememberIC.RememberLoginAndPassword) return;
const o = "completionList" === i,
l = o ? g_usernameElementUniqueIDs.ForCompletionList : g_usernameElementUniqueIDs.ForPageWideFill;
if (l) try {
fillControlsByID({
[l]: n
}, l)
} catch (e) {
e.message
}
g_lastSenderOfInformationToFill = "completionList" === i ? ForCompletionList : ForPageWideFill;
const s = o ? g_passwordControls.ForCompletionList : g_passwordControls.ForPageWideFill,
c = o ? g_oldPasswordControls.ForCompletionList : g_oldPasswordControls.ForPageWideFill;
(s || c) && sendRuntimeMessage({
from: "content",
subject: "CmdGetPassword4LoginName",
tabId: r,
frameId: t,
theLogin: n,
theURL: a
}).then((e => {})).catch((e => {}))
}
function detectPresetUserName(e, r, t) {
e.FormControls.forEach((function(r, t, n) {
r.ControlUniqueID !== e.UsernameElementUniqueID || isStringEmpty(r.ControlValue) || (updateTrackedUsername(r.ControlValue), g_isPresetUserNamePresent = !0, r.ControlUniqueID)
}))
}
function assignFieldsForMetadataAndPurpose(e, r, t, n) {
const a = e.AutoFillFormType;
switch (r === ForPageWideFill && humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill = a), a) {
case 0:
case 1:
case 2:
for (const t of e.FormControls)
if (t.ControlIsActiveElement) {
if (t.ControlIsLabeledUsernameField) {
g_usernameControls[r] = FormMetadataJS.formControlWithUniqueID(t.ControlUniqueID), g_usernameElementUniqueIDs[r] = t.ControlUniqueID;
break
}
if (t.ControlIsSecureTextField) {
g_passwordControls[r] = FormMetadataJS.formControlWithUniqueID(t.ControlUniqueID), g_passwordElementUniqueIDs[r] = t.ControlUniqueID, r === ForPageWideFill && (g_formTypeOfFormBestForPageWideAutoFill = 3);
break
}
} break;
case 3:
case 4:
case 5:
e.UsernameElementUniqueID ? (g_usernameControls[r] = FormMetadataJS.formControlWithUniqueID(e.UsernameElementUniqueID), g_usernameElementUniqueIDs[r] = e.UsernameElementUniqueID, e.UsernameElementUniqueID, detectPresetUserName(e, t, n)) : (g_usernameControls[r] = null, g_usernameElementUniqueIDs[r] = 0), e.PasswordElementUniqueID ? (g_passwordControls[r] = FormMetadataJS.formControlWithUniqueID(e.PasswordElementUniqueID), g_passwordElementUniqueIDs[r] = e.PasswordElementUniqueID, e.PasswordElementUniqueID) : (g_passwordControls[r] = null, g_passwordElementUniqueIDs[r] = 0), e.ConfirmPasswordElementUniqueID ? (g_confirmPasswordControls[r] = FormMetadataJS.formControlWithUniqueID(e.ConfirmPasswordElementUniqueID), e.ConfirmPasswordElementUniqueID) : g_confirmPasswordControls[r] = null, e.OldPasswordElementUniqueID ? (g_oldPasswordControls[r] = FormMetadataJS.formControlWithUniqueID(e.OldPasswordElementUniqueID), e.OldPasswordElementUniqueID) : g_oldPasswordControls[r] = null
}
}
function pageNavigationHandler(e) {
if (humanReadableFormType(e), g_shouldAttemptToSavePasswords) switch (e) {
case 0:
case 1:
case 2:
default:
break;
case 3:
if (!g_passwordControls.ForPageWideFill) break;
(g_currentUserName !== g_selectedUserName || g_currentPassword !== g_selectedPassword || g_supportsSubURLs && g_theURL !== g_selectedURL) && (g_selectedUserName = g_currentUserName, g_selectedPassword = g_currentPassword, g_selectedURL = g_theURL, chrome.runtime.sendMessage({
from: "content",
subject: "CmdSetPassword4LoginName_URL",
theNLogin: g_currentUserName,
theNPassword: g_currentPassword,
theNURL: g_theURL
}, (() => {
const e = chrome.runtime.lastError;
e && (g_selectedUserName = null, g_selectedPassword = null, g_selectedURL = null)
})));
break;
case 4:
case 5:
!g_passwordControls.ForPageWideFill || g_confirmPasswordControls.ForPageWideFill && g_passwordControls.ForPageWideFill.value !== g_confirmPasswordControls.ForPageWideFill.value || g_currentUserName === g_selectedUserName && g_currentPassword === g_selectedPassword || (g_selectedUserName = g_currentUserName, g_selectedPassword = g_currentPassword, chrome.runtime.sendMessage({
from: "content",
subject: "CmdNewAccount4URL",
theNLogin: g_currentUserName,
theNPassword: g_currentPassword,
theNURL: g_theURL
}, (() => {
const e = chrome.runtime.lastError;
e && (g_selectedUserName = null, g_selectedPassword = null)
})))
}
}
function runtimeMessageHandler(e, r, t) {
e.tabId, e.frameId;
switch (e.from, e.subject) {
case "fillPassword": {
const r = e.username,
t = e.password,
n = e.url;
switch (humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill), g_formTypeOfFormBestForPageWideAutoFill) {
case 0:
case 1:
case 2:
case 4:
if (!g_passwordControls[g_lastSenderOfInformationToFill]) break;
case 3:
g_selectedUserName = r, g_selectedPassword = t, g_selectedURL = n;
try {
const e = g_passwordElementUniqueIDs[g_lastSenderOfInformationToFill];
fillControlsByID({
[e]: t
}, e)
} catch (e) {
e.message
}
break;
case 5:
g_selectedUserName = r, g_selectedPassword = t, g_selectedURL = n;
try {
const e = g_oldPasswordControls[g_lastSenderOfInformationToFill];
FormMetadataJS._autoFillControlWithValueAndOptions(e, t, ShouldFocusAndBlur.Yes, !1)
} catch (e) {
e.message
}
}
break
}
case "runFormMetadataHeuristics":
e.tabId, e.frameId, e.tabId, e.frameId, g_heuristicsRunner.runHeuristics(e.tabId, e.frameId);
break;
case "RememberICSelection":
switch (e.theRememberICSelection, e.theRememberICSelection) {
case RememberIC.NoValueSet:
case RememberIC.DoNotRemember:
g_shouldAttemptToSavePasswords = !1;
break;
case RememberIC.UnknownPage:
case RememberIC.RememberLoginAndPassword:
g_shouldAttemptToSavePasswords = !0, g_usernameControls.ForPageWideFill && (g_usernameControls.ForPageWideFill.addEventListener("change", userNameFieldChangeHandler), e.tabId, e.frameId), g_passwordControls.ForPageWideFill && (g_passwordControls.ForPageWideFill.addEventListener("change", passwordFieldChangeHandler), e.tabId, e.frameId), g_confirmPasswordControls.ForPageWideFill && (g_confirmPasswordControls.ForPageWideFill.addEventListener("change", confirmPasswordFieldChangeHandler), e.tabId, e.frameId)
}
e.capabilities.supportsSubURLs && (g_supportsSubURLs = e.capabilities.supportsSubURLs), e.tabId, e.frameId;
break;
case "fillLoginIntoForm":
g_selectedUserName = e.theLogin, g_selectedURL = e.theURL, e.tabId, e.frameId, e.tabId, e.frameId, fillLoginIntoForm(e.theRememberICSelection, e.tabId, e.frameId, e.theLogin, e.theURL, e.from), hideCompletionListIfNecessary();
break;
case "resizeCompletionList": {
if (e.width, e.height, 0 === e.width || 0 === e.height) return void hideCompletionListIfNecessary();
if (!g_completionListAnchoringField) return;
const r = g_completionListAnchoringField.getBoundingClientRect().bottom,
t = Math.floor(window.innerHeight - r - 24),
n = Math.min(e.height, t) + "px",
a = e.width + "px",
i = CSS.supports("backdrop-filter", "none") ? e.width + 1 + "px" : a;
e.width, e.height, g_completionListContainer.style.setProperty("height", n, "important"), g_completionListIFrame.style.setProperty("height", n, "important"), g_completionListContainer.style.setProperty("width", i, "important"), g_completionListIFrame.style.setProperty("width", a, "important"), g_completionListContainer.style.setProperty("opacity", "1", "important"), g_completionListContainer.style.setProperty("visibility", "visible", "important");
break
}
case "dismissCompletionList":
hideCompletionListIfNecessary();
break;
case "getContextAndMetadataForActiveTextField": {
if (!g_focusedControl) return void e.subject;
let [r, n] = FormMetadataJS.textFieldOrSelectElementMetadata(g_focusedControl, 0);
t({
textFieldMetadata: r,
formMetadata: n,
presetUserName: g_currentUserName,
hostname: document.location.hostname,
url: document.location.href
});
break
}
case "fillOneTimeCodeIntoForm":
let r = e.oneTimeCode;
if ("totp" === r.source) g_completionListAnchoringFieldBeforeOneTimeCodeRefresh = g_completionListAnchoringField || g_completionListAnchoringFieldPriorToBlur, g_oneTimeCodeToFillAfterUpdate = r;
sendRuntimeMessage({
from: "content",
subject: "fillOneTimeCodeIntoForm",
tab: e.tab,
frame: e.frame,
oneTimeCode: r
}).then((e => {})).catch((e => {}));
break;
case "fillCurrentTOTPCodeIntoForm":
const n = e.oneTimeCodes;
if (!n || !g_oneTimeCodeToFillAfterUpdate) {
clearOneTimeCodeState();
break
}
const a = n.find((e => "totp" === e.source && e.username === g_oneTimeCodeToFillAfterUpdate.username && e.domain === g_oneTimeCodeToFillAfterUpdate.domain));
if (!a) {
clearOneTimeCodeState();
break
}
const i = g_completionListAnchoringField || g_completionListAnchoringFieldBeforeOneTimeCodeRefresh;
if (!i) {
clearOneTimeCodeState();
break
}
fillElementWithOneTimeCode(i, a), clearOneTimeCodeState();
break;
case "getTextFieldAndFormMetadataOfActiveTextField":
let [o, l] = FormMetadataJS.textFieldOrSelectElementMetadata(g_focusedControl, 0);
t({
textFieldMetadata: o,
formMetadata: l
});
break;
case "getPageType":
e.tabId, e.frameId, e.tabId, e.frameId, e.tabId, e.frameId, g_heuristicsRunner.runHeuristics(e.tabId, e.frameId), 0 !== Object.keys(g_qrCodeScanner.totpSecretToURI).length && (g_formTypeOfFormBestForPageWideAutoFill = WBSAutoFillFormTypeFoundTOTPURI, e.tabId, e.frameId), t(g_formTypeOfFormBestForPageWideAutoFill);
break;
case "getPresetUserNameAndURL":
t({
isPresetUserNamePresent: g_isPresetUserNamePresent,
presetUserName: g_currentUserName,
url: window.location.href
});
break;
case "getTOTPSetupInfo":
t(g_qrCodeScanner.totpSecretToURI);
break;
case "setUp":
g_canAddEventListeners = !0, addEventListeners(), loadEventHandler(), g_qrCodeScanner.shouldScanElementsForQRCodes = e.shouldEnableQRCodeScanning, g_heuristicsRunner.runHeuristics(e.tabId, e.frameId);
break;
case "enableQRCodeScanner":
g_qrCodeScanner.shouldScanElementsForQRCodes = e.isEnabled
}
}
try {
chrome.runtime.onMessage.addListener(runtimeMessageHandler)
} catch (e) {
e.message
}
function beforeunloadEventHandler(e) {
humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill), pageNavigationHandler(g_formTypeOfFormBestForPageWideAutoFill), destroyCompletionListIfNecessary()
}
function popStateEventHandler(e) {
humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill), pageNavigationHandler(g_formTypeOfFormBestForPageWideAutoFill)
}
function navigateHandler(e) {
humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill), pageNavigationHandler(g_formTypeOfFormBestForPageWideAutoFill)
}
function passwordFieldWasRemovedFromPage() {
humanReadableFormType(g_formTypeOfFormBestForPageWideAutoFill), pageNavigationHandler(g_formTypeOfFormBestForPageWideAutoFill)
}
function completionListBackgroundColor() {
return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "rgba(35, 35, 35, 0.8)" : "rgba(230, 230, 230, 0.8)"
}
function completionListBackgroundColorWithoutBackdropBlur() {
return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "rgb(35, 35, 35)" : "rgb(230, 230, 230)"
}
function completionListContainerBorderColor() {
return window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "rgba(0, 0, 0, 0.9)" : "rgba(0, 0, 0, 0.2)"
}
function isCompletionListVisible() {
return !!g_completionListContainer && "visible" === g_completionListContainer.style.visibility
}
function fillElementWithOneTimeCode(e, r) {
hideCompletionListIfNecessary(), e.focus(), FormMetadataJS.autoFillOneTimeCodeFieldsWithValue(r.code, !1)
}
function hideCompletionListIfNecessary() {
g_completionListContainer && (g_completionListContainer.style.setProperty("visibility", "hidden", "important"), g_completionListContainer.style.setProperty("opacity", "0", "important"), g_completionListContainer.style.setProperty("left", "-999999px", "important")), g_completionListAnchoringField = null, stopMonitoringForFocusedFieldMovement()
}
function destroyCompletionListIfNecessary() {
if (hideCompletionListIfNecessary(), g_completionListContainer) {
let e = g_completionListContainer,
r = g_completionListIFrame;
setTimeout((function() {
e.remove(), e = null, r.remove(), r = null
}), 100), g_completionListContainer = null
}
g_completionListIFrame && (g_completionListIFrame = null), g_completionListAnchoringField = null, g_completionListAnchoringFieldPriorToBlur = null, stopMonitoringForFocusedFieldMovement()
}
function stopMonitoringForFocusedFieldMovement() {
clearInterval(g_completionListAnchoringFieldMovementSetIntervalID), g_completionListAnchoringFieldMovementSetIntervalID = null
}
function showCompletionList(e, r) {
destroyCompletionListIfNecessary(), g_passwordControls.ForCompletionList = null, g_passwordElementUniqueIDs.ForCompletionList = 0, g_usernameControls.ForCompletionList = null, g_usernameElementUniqueIDs.ForCompletionList = 0;
let t = e.getBoundingClientRect(),
n = parseInt(getComputedStyle(e).borderBottomWidth);
g_completionListIFrame = document.createElement("iframe");
e.value, e.type;
let a = "";
assignFieldsForMetadataAndPurpose(r, ForCompletionList, null, null);
const i = g_usernameControls.ForCompletionList;
i && (a = i.value);
let o, l = document.querySelector("meta[name=color-scheme]")?.content;
l && (l = encodeURIComponent(l));
try {
o = chrome.runtime.getURL(`completion_list.html?username=${a}&colorScheme=${l}`)
} catch (e) {
return void(isExtensionContextInvalidatedError(e) && cleanUpGlobalState())
}
g_completionListIFrame.setAttribute("src", o), g_completionListIFrame.style.setProperty("width", "9001px", "important"), g_completionListIFrame.style.setProperty("height", "100%", "important"), g_completionListIFrame.style.setProperty("display", "block", "important"), g_completionListIFrame.frameBorder = 0, (g_completionListContainer = document.createElement("div")).id = "apple-password-autofill-list", g_completionListContainer.style.setProperty("z-index", "2147483647", "important"), g_completionListContainer.style.setProperty("padding", "0px", "important"), g_completionListContainer.style.setProperty("margin", "0px", "important"), g_completionListContainer.style.setProperty("border-radius", "8px", "important"), g_completionListContainer.style.setProperty("position", "fixed", "important"), g_completionListContainer.style.setProperty("color-scheme", "normal", "important"), g_completionListContainer.style.setProperty("box-shadow", "0 2px 4px 0 rgba(0, 0, 0, 0.15), 0 8px 15px 6px rgba(0, 0, 0, 0.18)", "important"), g_completionListContainer.style.setProperty("border", `1px solid ${completionListContainerBorderColor()}`, "important"), g_completionListContainer.style.setProperty("overflow", "hidden", "important"), CSS.supports("backdrop-filter", "none") ? (g_completionListContainer.style.setProperty("backdrop-filter", "blur(20px)", "important"), g_completionListContainer.style.setProperty("background-color", completionListBackgroundColor(), "important")) : g_completionListContainer.style.setProperty("background-color", completionListBackgroundColorWithoutBackdropBlur(), "important");
let s = Math.round(t.y + t.height) + n + "px",
c = Math.round(t.x) + "px";
g_completionListContainer.style.setProperty("top", s, "important"), g_completionListContainer.style.setProperty("left", c, "important"), g_completionListContainer.attachShadow({
mode: "open"
}).appendChild(g_completionListIFrame), g_completionListContainer.style.setProperty("opacity", "0", "important"), g_completionListContainer.style.setProperty("visibility", "hidden", "important"), document.body.appendChild(g_completionListContainer), g_completionListAnchoringField = e, g_dateOfCompletionListAnchoringFieldFocusOrMovementOfThatField = new Date, g_completionListAnchoringFieldMovementSetIntervalID = setInterval((function() {
Date.now() - g_dateOfCompletionListAnchoringFieldFocusOrMovementOfThatField >= 5e3 && stopMonitoringForFocusedFieldMovement();
let r = e.getBoundingClientRect(),
t = Math.round(r.y + r.height) + n + "px",
a = Math.round(r.x) + "px";
t === s && a === c || (g_dateOfCompletionListAnchoringFieldFocusOrMovementOfThatField = new Date, g_completionListContainer.style.setProperty("top", t, "important"), g_completionListContainer.style.setProperty("left", a, "important"), s = t, c = a)
}), 100)
}
function shouldOfferCompletionListForField(e, r, t) {
return !(g_lastFilledField === e && Date.now() - g_dateOfLastAutoFill < 100) && (("password" !== e.type || !e.value.length) && (!!r.ControlLooksLikePasswordCredentialField || (!!r.ControlClaimsToBeUsernameViaAutocompleteAttribute || (r.ControlLooksLikeOneTimeCodeField ? !e.value.length : !(!t.UsernameElementUniqueID || t.UsernameElementUniqueID !== r.ControlUniqueID) || (!(!t.PasswordElementUniqueID || t.PasswordElementUniqueID !== r.ControlUniqueID) || (!!r.ControlIsLabeledUsernameField || (e === g_usernameControls.ForCompletionList || e === g_passwordControls.ForCompletionList)))))))
}
function focusInEventHandler(e) {
elementWasFocused(e.target)
}
function elementWasFocused(e) {
let r = innermostActiveElement(e);
if (!r || !FormMetadataJS._isAutoFillableTextField(r)) return void(g_focusedControl = null);
g_focusedControl = r, destroyCompletionListIfNecessary();
let [t, n] = FormMetadataJS.textFieldOrSelectElementMetadata(r, 0);
t.ControlLooksLikePasswordCredentialField && (setUpMutationObserverForField(r), g_passwordControls.ForPageWideFill || (g_passwordControls.ForPageWideFill = r, g_passwordControls.ForPageWideFill.addEventListener("change", passwordFieldChangeHandler))), shouldOfferCompletionListForField(r, t, n) && showCompletionList(r, n)
}
var g_elementBeingMutationObserved, g_elementMutationObserver;
function setUpMutationObserverForField(e) {
if (g_elementBeingMutationObserved === e) return;
g_elementBeingMutationObserved = e;
(g_elementMutationObserver = new MutationObserver(((e, r) => {
document.body.contains(g_elementBeingMutationObserved) || passwordFieldWasRemovedFromPage()
}))).observe(g_elementBeingMutationObserved, {
attributes: !0,
childList: !0,
subtree: !0
})
}
function clearOneTimeCodeState() {
g_completionListAnchoringFieldBeforeOneTimeCodeRefresh = null, g_oneTimeCodeToFillAfterUpdate = null
}
function updateTrackedUsername(e) {
g_currentUserName = e, addOrRemoveBeforeunloadEventListener()
}
function updateTrackedPassword(e) {
g_currentPassword = e, addOrRemoveBeforeunloadEventListener()
}
function addOrRemoveBeforeunloadEventListener() {
g_canAddEventListeners && (isStringEmpty(g_currentUserName) && isStringEmpty(g_currentPassword) ? window.removeEventListener("beforeunload", beforeunloadEventHandler) : window.addEventListener("beforeunload", beforeunloadEventHandler))
}
function focusOutEventHandler(e) {
JSON.stringify(e);
let r = e.target;
g_focusedControl = null, setTimeout((function() {
r === g_completionListAnchoringField && hideCompletionListIfNecessary()
}), 100)
}
function blurEventHandler(e) {
g_completionListAnchoringField && (g_completionListAnchoringFieldPriorToBlur = g_completionListAnchoringField), setTimeout((() => {
hideCompletionListIfNecessary()
}), 100)
}
function keyDownEventHandler(e) {
let r = e.target;
if (!isCompletionListVisible()) {
let [t, n] = FormMetadataJS.textFieldOrSelectElementMetadata(r, 0);
return void("ArrowDown" === e.key && shouldOfferCompletionListForField(r, t, n) && showCompletionList(e.target, n))
}
let t = {};
switch (e.key) {
case "Escape":
return hideCompletionListIfNecessary(), e.preventDefault(), !1;
case "ArrowDown":
case "ArrowUp":
case "Enter":
t.key = e.key, e.preventDefault()
}
t.key && sendRuntimeMessage({
from: "content",
subject: "keydown",
event: t
}).then((e => {})).catch((e => {}))
}
function processInputEvent(e) {
let r = e.target;
if (!FormMetadataJS._isAutoFillableTextField(r)) return;
let [t, n] = FormMetadataJS.textFieldOrSelectElementMetadata(r, 3), a = r.value;
t.ControlLooksLikePasswordCredentialField || t.ControlLooksLikeOneTimeCodeField ? a.length && hideCompletionListIfNecessary() : isCompletionListVisible() || !shouldOfferCompletionListForField(r, t, n) ? r === g_completionListAnchoringField && isCompletionListVisible() && sendRuntimeMessage({
from: "content",
subject: "typedUserNameChanged",
username: a
}).then((e => {})).catch((e => {})) : showCompletionList(r, n)
}
sendRuntimeMessage({
from: "content",
subject: "readyToReceiveMessages"
}).catch((e => {}));
const RateOfInputEventsBeforeStoppingInputHandler = 100,
NumberOfInputEventTimestampsToTrack = 5;
let g_inputEventTimestamps = [];
function inputEventHandler(e) {
for (; g_inputEventTimestamps.length > 4;) g_inputEventTimestamps.shift();
if (g_inputEventTimestamps.push(e.timeStamp), 5 === g_inputEventTimestamps.length) {
if (g_inputEventTimestamps[4] - g_inputEventTimestamps[0] < 100) return
}
setTimeout(processInputEvent, 0, e)
}
const ScrollEventHandlerOptions = {
passive: !0,
capture: !0
};
function scrollEventHandler(e) {
e.target.contains(g_completionListAnchoringField) && hideCompletionListIfNecessary()
}
function resizeEventHandler(e) {
hideCompletionListIfNecessary()
}
function prefersColorSchemeChangeEventHandler(e) {
e.matches, sendRuntimeMessage({
from: "content",
subject: "ThemeChanged",
isDark: e.matches
}).then((e => {})).catch((e => {})), g_completionListContainer && (g_completionListContainer.style.setProperty("border", `1px solid ${completionListContainerBorderColor()}`, "important"), g_completionListContainer.style.setProperty("background-color", CSS.supports("backdrop-filter", "none") ? completionListBackgroundColor() : completionListBackgroundColorWithoutBackdropBlur(), "important"))
}
function loadEventHandler() {
window,
window.top,
window.location.href,
g_qrCodeScanner = new QRCodeScanner,
g_heuristicsRunner = new MetadataHeuristicsRunner;
const e = location.protocol;
"http:" !== e && "https:" !== e || sendRuntimeMessage({
from: "content",
subject: "ThemeChanged",
isDark: window.matchMedia("(prefers-color-scheme: dark)").matches
}).then((e => {})).catch((e => {}))
}
const url = new URL(document.URL);
function addEventListeners() {
window.addEventListener("blur", blurEventHandler), window.addEventListener("load", loadEventHandler), window.addEventListener("popstate", popStateEventHandler), window.addEventListener("resize", resizeEventHandler), window.addEventListener("scroll", scrollEventHandler, ScrollEventHandlerOptions), window.navigation?.addEventListener("navigate", navigateHandler), window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", prefersColorSchemeChangeEventHandler), document.addEventListener("focusin", focusInEventHandler), document.addEventListener("focusout", focusOutEventHandler), document.addEventListener("keydown", keyDownEventHandler), document.addEventListener("input", inputEventHandler)
}
function removeEventListeners() {
window.removeEventListener("blur", blurEventHandler), window.removeEventListener("load", loadEventHandler), window.removeEventListener("beforeunload", beforeunloadEventHandler), window.removeEventListener("popstate", popStateEventHandler), window.removeEventListener("resize", resizeEventHandler), window.removeEventListener("scroll", scrollEventHandler, ScrollEventHandlerOptions), window.navigation?.removeEventListener("navigate", navigateHandler), window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", prefersColorSchemeChangeEventHandler), document.removeEventListener("focusin", focusInEventHandler), document.removeEventListener("focusout", focusOutEventHandler), document.removeEventListener("keydown", keyDownEventHandler), document.removeEventListener("input", inputEventHandler)
}
g_theURL = url.hostname, "" !== url.port && (g_theURL += ":" + url.port);
var pwlog = void 0,
pwerror = void 0;
function isStringEmpty(e) {
return !e || 0 === e.length
}
function urlFromURLString(e) {
try {
return new URL(e)
} catch {
return null
}
}
function humanReadableFormType(e) {
switch (e) {
case WBSAutoFillFormTypeUndetermined:
return "Undetermined";
case WBSAutoFillFormTypeAutoFillableStandard:
return "AutoFillable:Standard";
case WBSAutoFillFormTypeNonAutoFillable:
return "NonAutoFillable";
case WBSAutoFillFormTypeAutoFillableLogin:
return "AutoFillable:Login";
case WBSAutoFillFormTypeNewAccount:
return "NewAccount";
case WBSAutoFillFormTypeChangePassword: