// ==UserScript==
// @name ITA Matrix Powertools
// @namespace https://github.com/adamhwang/ita-matrix-powertools
// @description Adds new features and builds fare purchase links for ITA Matrix
// @version 0.44.4
// @icon https://raw.githubusercontent.com/adamhwang/ita-matrix-powertools/master/icons/icon32.png
// @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js
// @grant GM.getValue
// @grant GM_setValue
// @grant GM.setValue
// @grant GM_setValue
// @include http*://matrix.itasoftware.com/*
// @license GPL-2.0-only
// ==/UserScript==
/*
Written by paul21, Steppo & Adam Hwang (IAkH) of FlyerTalk.com
http://www.flyertalk.com/forum/members/paul21.html
Includes contriutions by https://github.com/adamhwang/ita-matrix-powertools/blob/master/AUTHORS
GNU General Public License v2.0
*/
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool:
// `npm run build`
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 49);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getCurrentSegs; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return currentItin; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return readItinerary; });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
// initialize local storage for current itin
/** @type {{ cur?: string; price?: number; basefares?: number; taxes?: number; surcharges?: number; dist?: number; numPax?: number; carriers?: string[]; farebases?: string[]; itin?: { orig: string; dest: string; dist?: number; dep: { day: number; month: number; year: number; time: string; offset?: string; }; arr: { day: number; month: number; year: number; time: string; offset?: string; }; seg?: { carrier: string; orig: string; dest: string; dist?: number; dep: { day: number; month: number; year: number; time: string; time24: string; timeDisplay: string; offset?: string; }; arr: { day: number; month: number; year: number; time: string; time24: string; timeDisplay: string; offset?: string; }; fnr: string; duration: number; aircraft: string; cabin: number; bookingclass: string; codeshare: number; layoverduration: number; airportchange: number; farebase: string; farecarrier: string; }[]}[]}} */
let currentItin = new Object();
const matrixCurrencies = [
{ p: /US\$/, c: "USD" },
{ p: /\€/, c: "EUR" },
{ p: /\£/, c: "GBP" },
{ p: /CA\$/, c: "CAD" },
{ p: /RS\./, c: "INR" }
];
function readItinerary() {
// the magical part! :-)
var itin = new Array(),
carrieruarray = new Array(),
farebases = new Array(),
dirtyFare = new Array();
var itinCur = "";
var html = document.getElementById("contentwrapper").innerHTML;
var re = /colspan\=\"5\"[^\(]+\(([\w]{3})[^\(]+\(([\w]{3})/g;
var legs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
// Got our outer legs now:
for (i = 0; i < legs.length; i += 2) {
var legobj = {};
// prepare all elements but fill later
legobj.arr = {};
legobj.dep = {};
legobj.orig = legs[i];
legobj.dest = legs[i + 1];
legobj.seg = new Array();
itin.push(legobj);
}
// extract basefares
var re = /Carrier\s([\w]{2})\s([\w]+).*?Covers\s([\w\(\)\s\-,]+)/g;
var bfs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
var bf = { c: "", f: "", l: new Array() };
for (i = 0; i < bfs.length; i += 3) {
bf.c = bfs[i];
bf.f = bfs[i + 1];
farebases.push(bf.f);
bf.l = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(bfs[i + 2], /(\w\w\w\-\w\w\w)/g);
for (j = 0; j < bf.l.length; j++) {
dirtyFare.push(bf.l[j] + "-" + bf.f + "-" + bf.c);
}
}
var segs = new Array();
var re = /35px\/(\w{2}).png[^\(]+\(([A-Z]{3})[^\(]+\(([A-Z]{3})[^\,]*\,\s*([a-zA-Z]{3})\s*([0-9]{1,2}).*?gwt-Label.*?([0-9]*)\<.*?Dep:[^0-9]+(.*?)\<.*?Arr:[^0-9]+(.*?)\<.*?([0-9]{1,2})h\s([0-9]{1,2})m.*?gwt-Label.*?\>(.*?)\<.*?gwt-Label\"\>(\w).*?\((\w)\).*?\<.*?tr(.*?)(table|airline_logos)/g;
segs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
// used massive regex to get all our segment-info in one extraction
var legnr = 0;
var segnr = 0;
for (i = 0; i < segs.length; i += 15) {
const dep12 = return12htime(segs[i + 6]);
const dep24 = (dep12.length == 4 ? "0" : "") + dep12;
const arr12 = return12htime(segs[i + 7]);
const arr24 = (arr12.length == 4 ? "0" : "") + arr12;
const addinformations = parseAddInfo(segs[i + 13]);
const day = parseInt(segs[i + 4]);
const month = monthnameToNumber(segs[i + 3]);
const year = getFlightYear(day, month);
let seg = {
carrier: segs[i],
orig: segs[i + 1],
dest: segs[i + 2],
dep: {
day,
month,
year,
timeDisplay: segs[i + 6],
time: dep12,
time24: dep24
},
arr: {
day: addinformations.arrDate ? addinformations.arrDate.day : day,
month: addinformations.arrDate ? addinformations.arrDate.month : month,
year: addinformations.arrDate ? addinformations.arrDate.year : year,
timeDisplay: segs[i + 7],
time: arr12,
time24: arr24
},
fnr: segs[i + 5],
duration: parseInt(segs[i + 8]) * 60 + parseInt(segs[i + 9]),
aircraft: segs[i + 10],
cabin: getcabincode(segs[i + 11]),
bookingclass: segs[i + 12],
codeshare: addinformations.codeshare,
layoverduration: addinformations.layoverduration,
airportchange: addinformations.airportchange,
farebase: "",
farecarrier: ""
};
// find farecode for leg
for (var j = 0; j < dirtyFare.length; j++) {
if (dirtyFare[j].indexOf(seg.orig + "-" + seg.dest + "-") != -1) {
//found farebase of this segment
var tmp = dirtyFare[j].split("-");
seg.farebase = tmp[2];
seg.farecarrier = tmp[3];
dirtyFare[j] = seg.farebase; // avoid reuse
j = dirtyFare.length;
}
}
if (itin[legnr] === undefined) itin[legnr] = new Object();
if (itin[legnr].seg === undefined) itin[legnr].seg = new Array();
itin[legnr].seg.push(seg);
// push carrier
if (!Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* inArray */ "f"])(seg.carrier, carrieruarray)) {
carrieruarray.push(seg.carrier);
}
// push dates and times into leg-array
if (segnr == 0) {
if (itin[legnr].dep === undefined) itin[legnr].dep = new Object();
itin[legnr].dep.day = seg.dep.day;
itin[legnr].dep.month = seg.dep.month;
itin[legnr].dep.year = seg.dep.year;
itin[legnr].dep.time = seg.dep.time;
}
if (itin[legnr].arr === undefined) itin[legnr].arr = new Object();
itin[legnr].arr.day = seg.arr.day;
itin[legnr].arr.month = seg.arr.month;
itin[legnr].arr.year = seg.arr.year;
itin[legnr].arr.time = seg.arr.time;
segnr++;
// check for legchange
if (segs[i + 14] == "table") {
legnr++;
segnr = 0;
}
}
// We need to apply remaining fares (Not nonstop - but direct flights)
for (var i = 0; i < dirtyFare.length; i++) {
var curfare = dirtyFare[i].split("-");
if (curfare.length > 1) {
var l = 0;
//currently unused so walk through itin to find flights
for (var legnr = 0; legnr < itin.length; legnr++) {
for (var segnr = 0; segnr < itin[legnr].seg.length; segnr++) {
if (
itin[legnr].seg[segnr].orig == curfare[0] &&
itin[legnr].seg[segnr].dest == curfare[1] &&
itin[legnr].seg[segnr].farebase == ""
) {
// found seg for fare
itin[legnr].seg[segnr].farebase = curfare[2];
itin[legnr].seg[segnr].farecarrier = curfare[3];
dirtyFare[i] = curfare[2];
segnr = itin[legnr].seg.length;
l = 1;
} else if (
itin[legnr].seg[segnr].orig == curfare[0] &&
itin[legnr].seg[segnr].dest != curfare[1] &&
itin[legnr].seg[segnr].farebase == ""
) {
// found start but multiple segs -> find end
for (var j = segnr + 1; j < itin[legnr].seg.length; j++) {
if (
itin[legnr].seg[j].dest == curfare[1] &&
itin[legnr].seg[j].farebase == ""
) {
//found end attach fares
for (var k = segnr; k <= j; k++) {
itin[legnr].seg[k].farebase = curfare[2];
itin[legnr].seg[k].farecarrier = curfare[3];
dirtyFare[i] = curfare[2];
}
j = itin[legnr].seg.length;
segnr = itin[legnr].seg.length;
l = 1;
} else if (itin[legnr].seg[segnr + j].farebase != "") {
//farebase attached - skip
j = itin[legnr].seg.length;
}
}
}
}
if (l == 1) {
legnr = itin.length;
}
}
if (l == 0) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "h"])("Unused fare:" + dirtyFare[i]);
}
}
}
// Combine technical stops into a single segment
itin.forEach(itin => {
if (itin.seg) itin.seg = combineTechnicalStops(itin.seg);
});
// extract mileage paxcount and total price
var milepaxprice = new Array();
var re = /Mileage.*?([0-9,]+)\stotal\smiles.*?Total\scost\sfor\s([0-9])\spassenger.*?<div.*?>(.*?([1-9][0-9,.]+)[^\<]*)/g;
milepaxprice = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
// detect currency
for (i = 0; i < matrixCurrencies.length; i++) {
if (matrixCurrencies[i].p.test(milepaxprice[2]) === true) {
itinCur = matrixCurrencies[i].c;
i = matrixCurrencies.length;
}
}
currentItin = {
itin: itin,
price: Number(milepaxprice[3].replace(/\,/, "")),
numPax: Number(milepaxprice[1]),
carriers: carrieruarray,
cur: itinCur,
farebases: farebases,
dist: Number(milepaxprice[0].replace(/\,/, ""))
};
console.log("parsed itinerary: ", currentItin);
}
function parseAddInfo(info) {
var ret = {
codeshare: 0,
layoverduration: 0,
airportchange: 0,
arrDate: null
};
var re = /contains\s*airport\s*changes/g;
if (re.test(info) === true) {
ret.airportchange = 1;
}
var re = /OPERATED\s*BY/g;
if (re.test(info) === true) {
ret.codeshare = 1;
}
var temp = new Array();
var re = /\,\s*([a-zA-Z]{3})\s*([0-9]{1,2})/g;
temp = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(info, re);
if (temp.length == 2) {
// Got datechange
const month = monthnameToNumber(temp[0]);
const day = parseInt(temp[1]);
ret.arrDate = {
month,
day,
year: getFlightYear(day, month)
};
}
var temp = new Array();
var re = /([0-9]{1,2})h\s([0-9]{1,2})m/g;
temp = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(info, re);
if (temp.length == 2) {
// Got layover
ret.layoverduration = parseInt(temp[0]) * 60 + parseInt(temp[1]);
}
return ret;
}
function getCurrentSegs() {
return currentItin.itin
.map(function(p) {
return p.seg;
})
.reduce(function(a, b) {
return a.concat(b);
}, []);
}
function combineTechnicalStops(allSegs) {
if (allSegs.length <= 1) return allSegs;
const segs = [];
for (let i = 0; i < allSegs.length; i++) {
const currSeg = allSegs[i];
const nextSeg = allSegs[i + 1];
if (
nextSeg &&
nextSeg.fnr === currSeg.fnr &&
nextSeg.orig === currSeg.dest
) {
segs.push({
...currSeg,
dest: nextSeg.dest,
arr: nextSeg.arr
});
i++;
} else {
segs.push(currSeg);
}
}
return segs;
}
/**************************************** General Functions *****************************************/
function getcabincode(cabin) {
switch (cabin) {
case "E":
cabin = 0;
break;
case "P":
cabin = 1;
break;
case "B":
cabin = 2;
break;
case "F":
cabin = 3;
break;
default:
cabin = 0;
}
return cabin;
}
function monthnameToNumber(month) {
var monthnames = [
"JAN",
"FEB",
"MAR",
"APR",
"MAY",
"JUN",
"JUL",
"AUG",
"SEP",
"OCT",
"NOV",
"DEC"
];
return monthnames.indexOf(month.toUpperCase()) + 1;
}
function getFlightYear(day, month) {
//Do date magic
var d = new Date();
var cmonth = d.getMonth();
var cday = d.getDate();
var cyear = d.getFullYear();
// make sure to handle the 0-11 issue of getMonth()
if (cmonth > month - 1 || (cmonth == month - 1 && day < cday)) {
cyear += 1; // The flight is next year
}
return cyear;
}
function return12htime(match) {
var regex = /([01]?\d)(:\d{2})(AM|PM|am|pm| AM| PM| am| pm)/g;
match = regex.exec(match);
var offset = 0;
match[3] = trimStr(match[3]);
if ((match[3] == "AM" || match[3] == "am") && match[1] == "12") {
offset = -12;
} else if ((match[3] == "PM" || match[3] == "pm") && match[1] != "12") {
offset = 12;
}
return +match[1] + offset + match[2];
}
function trimStr(x) {
return x.replace(/^\s+|\s+$/gm, "");
}
/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return findtarget; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return findtargets; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return hasClass; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return toggleVis; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return clearNotification; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return printNotification; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return exRE; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return inArray; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return to2digits; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return to4digits; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return to4digitTime; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return monthnumberToName; });
function findtarget(tclass, nth) {
var elems = document.getElementsByTagName("*"),
i;
let j = 0;
for (i in elems) {
if ((" " + elems[i].className + " ").indexOf(" " + tclass + " ") > -1) {
j++;
if (j == nth) {
return elems[i];
break;
}
}
}
}
function findtargets(tclass) {
var elems = document.getElementsByTagName("*"),
i;
var ret = new Array();
for (i in elems) {
if ((" " + elems[i].className + " ").indexOf(" " + tclass + " ") > -1) {
ret.push(elems[i]);
}
}
return ret;
}
function hasClass(element, cls) {
return (" " + element.className + " ").indexOf(" " + cls + " ") > -1;
}
function toggleVis(target, blockType = "block") {
if (hasClass(target, "vis")) {
target.setAttribute("class", "invis");
target.style.display = "none";
} else {
target.setAttribute("class", "vis");
target.style.display = blockType;
}
}
function clearNotification() {
var target = document.getElementById("mtpNotification");
target.innerHTML = "";
}
function printNotification(text) {
// log the text to the browser's developer console:
console.log(text);
// display for user:
var target = document.getElementById("mtpNotification");
if (target === null) {
//alert("mtp Error: Notification container not Found");
console.log("mtp Error: Notification container not Found");
} else {
//possibility to print multiple notifications
var temp = document.createElement("div");
temp.appendChild(document.createTextNode(text));
target.appendChild(temp);
}
}
//Parses all of the outputs of regexp matches into an array
function exRE(str, re) {
var ret = new Array();
var m;
var i = 0;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
for (let k = 1; k < m.length; k++) {
ret[i++] = m[k];
}
}
return ret;
}
function inArray(needle, haystack) {
var length = haystack.length;
for (var i = 0; i < length; i++) {
if (haystack[i] == needle) return true;
}
return false;
}
function to2digits(str) {
return ("00" + str).slice(-2);
}
function to4digits(str) {
return ("0000" + str).slice(-4);
}
function to4digitTime(time) {
return to4digits(time.replace(":", ""));
}
function monthnumberToName(month) {
var monthnames = [
"JAN",
"FEB",
"MAR",
"APR",
"MAY",
"JUN",
"JUL",
"AUG",
"SEP",
"OCT",
"NOV",
"DEC"
];
return monthnames[month - 1];
}
/***/ }),
/* 2 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return registeredSettings; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return registerSetting; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return saveUserSettings; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return loadUserSettings; });
/* harmony import */ var _appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
const defaultSettings = {
timeformat: "12h", // replaces times on resultpage - valid: 12h / 24h
language: "en", // replaces several items on resultpage - valid: en / de
linkFontsize: 100, // fontsize of links - valid: 50-200
showAllAirlines: 0, // shows all airline links regardless of search results
// booleans to toggle specific settings:
enableDeviders: 1, // Print deviders in links after group (airlines/otas/other stuff) - valid: 0 / 1
enableInlineMode: 0, // enables inline mode - valid: 0 / 1
enableEditormode: 0, // prevents the script from automatically parsing the itinerary - valid: 0 / 1
enableIMGautoload: 0, // enables images to auto load - valid: 0 / 1
enableFarerules: 1, // enables fare rule opening in new window - valid: 0 / 1
enablePricebreakdown: 1, // enables price breakdown - valid: 0 / 1
enablePlanefinder: 1, // enables Planefinder - click on flight numbers to open Planefinder for this flight - valid: 0 / 1
enableSeatguru: 1, // enables Seatguru - click on plane type to open Seatguru for this flight - valid: 0 / 1
enableWheretocredit: 1, // enables Wheretocredit - click on booking class to open wheretocredit for this flight - valid: 0 / 1
enableAffiliates: 1
};
const registeredSettings = {};
/**
* Registers a link
* @param {string} name
* @param {string} id
* @param {{ name: string, value: string }[]} values
* @param {string} defaultValue
*/
function registerSetting(name, id, values, defaultValue) {
registeredSettings[id] = { name, values };
defaultSettings[id] = defaultValue;
}
async function saveUserSettings(settings = defaultSettings) {
switch (_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].scriptEngine) {
case 0:
localStorage.setItem("mptUserSettings", JSON.stringify(settings));
break;
case 1:
await GM.setValue("mptUserSettings", JSON.stringify(settings));
break;
}
}
async function loadUserSettings() {
let gmSavedUserSettings;
switch (_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].scriptEngine) {
case 0:
gmSavedUserSettings = localStorage.getItem("mptUserSettings");
break;
case 1:
gmSavedUserSettings = await GM.getValue("mptUserSettings");
break;
}
console.log("mptSavedUserSettings: " + gmSavedUserSettings);
if (!gmSavedUserSettings || typeof gmSavedUserSettings !== "string") return;
/** @type typeof defaultSettings */
const savedUserSettings = JSON.parse(gmSavedUserSettings);
if (!savedUserSettings) return;
Object.assign(defaultSettings, savedUserSettings);
}
/* harmony default export */ __webpack_exports__["a"] = (defaultSettings);
/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return registerLink; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return printLinksContainer; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return validatePaxcount; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return printItemInline; });
/* unused harmony export printImageInline */
/* unused harmony export getSidebarContainer */
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
/* harmony import */ var _settings_translations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
/* harmony import */ var _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1);
/** @type {{ [key: string]: ((itin: typeof currentItin) => { url: string, title: string, desc?: string, nth?: number, extra?: string })[]}} */
const links = {};
__webpack_require__(10);
var skimlinks = document.createElement("script");
skimlinks.setAttribute(
"src",
"https://s.skimresources.com/js/122783X1611548.skimlinks.js"
);
/**
* Registers a link
* @param {keyof links} type
* @param {(itin: typeof currentItin) => { url: string, title: string, desc?: string, nth?: number, extra?: string, target?: string }} factory
*/
function registerLink(type, factory) {
if (!links[type]) links[type] = [];
links[type].push(factory);
}
function printLinksContainer() {
// do nothing if editor mode is active
if (Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtargets */ "d"])("editoritem").length > 0) {
return false;
}
// empty outputcontainer
if (document.getElementById("powertoolslinkcontainer") != undefined) {
const div = document.getElementById("powertoolslinkcontainer");
div.innerHTML = "";
}
// S&D powertool items
const elems = Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtargets */ "d"])("powertoolsitem");
for (let i = elems.length - 1; i >= 1; i--) {
elems[i].parentElement.removeChild(elems[i]);
}
for (let group in links) {
const groupLinks = links[group]
.map(link => link(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"]))
.sort((a, b) => {
return a.title.localeCompare(b.title);
});
groupLinks.forEach(link => {
if (!link) return;
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
printUrlInline(
link.url,
link.title,
link.desc,
link.nth,
link.extra,
link.target
);
} else {
printUrl(link.url, link.title, link.desc, link.extra, link.target);
}
});
_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableDeviders == 1 &&
links[group].length &&
printSeperator();
}
printGCM();
printWheretocredit();
/*** attach JS events after building link container ***/
bindLinkClicks();
}
function printGCM() {
var url = "";
// Build multi-city search based on segments
// Keeping continous path as long as possible
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
url += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig + "-";
if (j + 1 < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest != _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + 1].orig
) {
url += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest + ";";
}
} else {
url += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest + ";";
}
}
}
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
printImageInline(
"http://www.gcmap.com/map?MR=900&MX=182x182&PM=*&P=" + url,
"http://www.gcmap.com/mapui?P=" + url
);
} else {
printUrl("http://www.gcmap.com/mapui?P=" + url, "GCM", "");
}
}
function printWheretocredit() {
var extra =
'<span id="wheretocredit-container" style="display: none;"> <img src="data:image/gif;base64,R0lGODlhIAAgAMQAAKurq/Hx8f39/e3t7enp6Xh4eOHh4d3d3eXl5dXV1Wtra5GRkYqKitHR0bm5ucnJydnZ2bS0tKGhofb29sHBwZmZmZWVlbGxsb29vcXFxfr6+s3NzZ2dnaampmZmZv///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQECgAAACwAAAAAIAAgAAAF/+AnjiR5ecxQrmwrnp6CuTSpHRRQeDyq1qxJA7Ao7noxhwBIMkSK0CMSRVgCEx1odMpjEDRWV0Ji0RqnCodGM5mEV4aOpVy0RBodpHfdbr9HEw5zcwsXBy88Mh8CfH1uKwkVknMOASMnDAYjjI4TGiUaEZKSF5aXFyucbQGPIwajFRyHTAITAbcBnyMPHKMOTIC4rCQOHL0VCcAiGsKmIgDGxj/AAgED184fEtvGutTX4CQd29vetODXJADkEtNMGgTxBO4Y7BDKHxPy8yR4Hf8Z8A1AQBBBNgT//gHQxGQCAgMGCE6wgaEDgIsUsrWABxFilRIHLop8oBEUgQMHOnaWnJBB5IULDxC0CGAAAsqUH1cQcPDyZQQHDQwEEFBrgIEESCHYNDCxhQGeFyL8dICBAoUMDzY0aIA0gc2SJQxQkOqgbNWrD7JuRXoArM4NZamexaqWK1NlGgw8oGoVbdYNBwaYAwbvQIMHWBtAEPoHn+PHj0MAACH5BAQKAAAALAEAAAAeAB8AAAX/4CeOZGme6CiIw0AYwfBpIp2W2nRQ0SUBnQsmQfgcOpNbLRHhVCyMBSPKqAAiEg9DiXBwFpWFxbIomxkFhccjOwkgF8uzEiZTy+m154IyAJx0YBI/ABUSCwUFeh4FNiQDHXQcch1DMAYDEA55iwcmGIYcThEHbSoRnHodKyICBoMSXw4ErCMTDQyLegVFIhMUsBwASSYBHQqKaXkKDqwEAMGeKBsHDg0ZGBsVDhYQNG8SHR0SzUqtH0lJAisaD+IdAAm15jMfAhoa9xTw8Aj0KhMCBhTwCx6AC6boERQ4gSAFABAjJDS3UOC9DBcyRuj1j2AAiwI2ZMx4YJ6SHAFSrDY00iNChAyOzE1IqZKFA5cRHCAwiUIDzZQ2QuZ04OBBAIoxWgwIUIsA0acbiLnxSUDpAKn2EjjAgIEChgcD8pFYN5OAWRdMSwR4QKFtBgoZDhBQmXIAgrtmq8YcMYAt3AeAEyQ4cMCAgcIG8BLAqpZtBsAbNjQQDIGwYcNXeZLQkADwA8mTE1QufADB1X8EIHRusEHw4MJz1/1DF+DF5btXxc7enCPHCs0jQgAAIfkEBAoAAAAsAQABAB8AHgAABf/gJ47kGBBBMH1C6b4j8UTX1QFOBg1wHySXSkVSsQgXwssm0OrFKACJlMMRCi2WBedyaMIEhoh0TMUWsdmFJKHpGWydjrQoAQA4koVez1h7SQQON3EcHRgHAQMEBAkUeXtaBn8fEw92doYGJS0Tb5AMFwEkAgcRlwAUTF8DDhYMehWHCZwZNReook6UGAwMBb8LBSuBNQARCLoiBBi/Cgoe0A0fEBHVFw9tTgeCDM/P0AUCGhvVEQ6augkM0OzsEuIPDvIOPLqdBe3sGZQZ8xm5ySZI+AaORyUHGHIADJiB4AIR4zBQoIBhYTINBwo8u9CkwUSKyJKNguALwwgDFDKfZKAwSyTENhA21KOU8oFNiz0ETNj5QYMXAQls2jywQpe4nTsF/CHQ4MGGDQ0MTJg0CinSSRMOOG3QIIGBANlKaJiQAqlPFxMScE3A9gCKCRrikk1RVgVVEQEgdE0A4cABAwgIKBI8gK6KsC4EBDjAtu9fA4AJFy571skEBAf6Qo68aIDnwyKVBkCwGXLgznZdjhibqLNnuKoTs1BaOVkIACH5BAQKAAAALAEAAQAfAB4AAAX/4CeOpPBN6BCQbOt+AZJkWOTcD/LuwnRkF4Ck05EYKxVAYrUjETYOgBRALBolHIlD1xQgKJFLkGq9cjgVS+eg2REol/A46IhILBU0siJJuAQDGTdyERsHAyoBBxh3ewsSBi0TCTd1ETkTHyYkBhF7aRFMIwiCGDcbAZstAgEOSBZ4DaoCGxS2DhuZTTARsBYLAKIBtrYYBLsjBhwLzBUQmwYUGRkUssgiGg7MzBkjCQ8P1MfXIgkVzAwXmRrf4A+65ATnzB0rkw8bDwnwTQMmEx0YMOOwgt2GBhv2IRMQ5qCEBRYYdDim4UCDiwp3CQCgoICFAgUYMADQRoCBBglSqQ64BsGDSw8dCyyA0IZAypQIVO3QUOAlTJgVugWAkAAChAOieHTw6bObBgNGDxwg0GbXA6ZAdSmSasDAgKo7AvR8WSBCCQIHuhpAMIDfCAECNEywQDYBWBETEKhFgIBAgAlw4WqQO/gCTAupXORd25cAogB/UUj+QEHguD8TCDR2nAiy5AkaBhxCFpoA586fUcAl12MAZ8iwUQzWSU4u7MgaVpN7EVj3rhAAIfkEBAoAAAAsAQAAAB8AHwAABf/gJ47kKJRoqn7aFwTEEGvaua6BkTwU5VCYB2Qwsd1Mhw0l4rg4ARcAwNEYGG8Bpc/hiESeUkkncpgcCbweBuN9dqSdDgewMacEhM0jkwE6+ns+AGJxYhsqAQ0PixkYFAcIEwEaMgkOABwSmhwHVywHD3o8CRMtJRMDGx2aEhUdASUDDQ0begdHiRWZrQ+mLAazswe+KwIUuhwVAAQjARAJ0AmwRyIBABXYHAkjA8/QBp43D9gVCxQnAggQ6xDT1CIGrdgXsBoIB/gGdu8uHRbYr1jcy0eMmrUFFSxIYJbugIGH+95NALDAwoKFH/A8NBCJn4gBEixYDChgwEMECAK1hCvhLoHFBQsu2JnAEUGMlSMIkIwAE+Y5ERoICBUaEcWFAhQmEHhZEYIJGDEGWFEhoIAHBhQo9gQQMWjUAZPCIfBAlkGBcjATeAogFWyAUgKuXCBLtgCDBQwuFMzI1u1buHE1WCWrQEGBBQAQqNDwovFfuBDoElbAwMANDZJeTNgMt4NkuhYs3xCw+XEpBAUUfPaA9B0NzpsfpLarwMJhBkWLCaBBI0CGA1U4Trjl0YQRdEdCAAAh+QQECgAAACwBAAAAHgAgAAAF/+AnjmRpnmiqrqMQGFDzZE9zEBpLasOxbY8ZZYhxPAw51sSQaDSAQgqm6HBsCKvAIdF8BjPEqiMSoRhSWgi3CwRLq+TLxXE2LQ8QNdcwmAhcBg1jcnIOWCQCBAYHjBAGASgID3IAlRkTJC8GizdJKAEPlaIHLYqbBjgsARSiHRhJEwgImwiYOgYAHbodCCIBsrIDOiMZux0NIgMEywS2wxAS0RIYycypwx8D0hIAyQPfAwLYHxrbHd7g4tgaHBzSvuAB6sMD7e3dHwH6+p46CRUV2jkQMWFfAGc6HAAM+ECEBoN+hh3gsLBCHQEFJ2jUMG+EnEwXKkbwpEGjSY4jDHMw8HBhRAAHFiwsTIDI5EaUGBR4YCniwIUFMWM6QPgB40kNBFbu9HAsgoUFUGN2qFPCqAYNDnQu9VAAqlegEmiiEIBU6VauX6F2EJsikdmtXb9GoLpCQNazcRcAaECUxYC3BQBQONBv3IecO1saRvGXJ4sQACH5BAQKAAAALAEAAQAeAB8AAAX/4CeO5CdoU4qaZesKwjQgyGHYxhC4vBkQt0Ni2GhsGgmDoEeSIQxByDBhfFgbu15s9oRChNTNxpqhUBA9zYBAg7qhQ+ujbFa2BGsCG0HQTVBODxR0GBkELQEDinoDfy0oCRgUGBgODxMkaoprARpMH5GVDg4HSyYTAYk6pkwTDaMOERSYHxqpt56fIgEYEb4OBiK2t7S6Ig2+vg0wqLjGIwgRF9OzMSkprMYBDgAXAA4B1tfZuhMYAOgRA+LYz7sOHejg7BPknwEX8d87Kxr2nwYAdBiIAdMSNDBqKWQiIIMECR0kPFgi4MBDDg8kOsDQAEOuFgMiPgRwYESCAgoKp3hI6UFlh5ItJkSwcDFCFhEMPOjc6YHBrBJ4KFjg8FBCgmwPeK5UAGBApgAGMFSoQLTChWIiJihQWqBDkhxCKEioYGEqhw6HWlTYqSAlAw4LInaAu2Dq1A4QeEBgW2DBAgZ//da1u+DC0R5bCxQALLixBQsMJDhA8G/EBQ8SKklgAFlwhQUSIiQIp8tBgw8BDmxw4A2ArwwGOrmjtSTABAI/DLpj+CwEACH5BAQKAAAALAAAAQAfAB8AAAX/4CeOJKlpgqB9Qum+oxYMNGEPwQrDwjTbBATCQDQgBqidyUcbAIfEA+RgCLR2Kl9gVoMaDlJIAjK4vjTabY1AE4Ih4kZiwPOlt5PUaWYQJxpyViU9E4V4OoMTBn8NGw8HEyVohZRmZwaNjhsIJCmUE0lKHxMHD6YPDWYqo4WWSgGnGRQBI7ANLIiiLBAUGbIHIxQFDKm6JQMYFMrFAhEeCgUJkcYiE8oUGA/TCx7dCg6CxrAOGA4PtAEF3d4WtMYTGQ7yFJEP6/fR06/y8hmRHffuMdigy4CDCBEubEChztszBh0wAFOiYcMFhBESfICwTgG0Ag7o6EKQ8MIFBwhSohRYwKDAMAbgXLkIQAEAgAsA6Img8oDDApYLLhCQKUIATZs2IxywFMABg58/AUCI5MoAhg4dkGobhEAC1J8VHDRAwGYABAcSOGAF0MEBARgHJDz9yqGCTQ4WKkiQgLVDBANYIHT4aaFw3sIcOOxd/JcoCYM+C1eYXCGxYr4U3urqkSBC3QWT80qYHGEqtVoGHmDAidDBBs2nO7GagCO2bVEhAAAh+QQECgAAACwAAAEAHwAeAAAF/+AnjuQonGepruWpTVMgB5PG3p8Lz8HgE4OJAEc6wY4xmW9AAE6InwBk8Dryfk0EQXgbWAqOD9K6JCAQBsRTJQhYFB5AraZBCWKDs2FvWI80CQUegww1QysaeXwHBDYjDoKDHgoERAIDeweaAyIaFXCSgxhQAgSaEBAGNhuhoRyOOBMGqKgBHw8VggqgHgV+N6UJwgmVAgZfBbweDVBREMINqjkXDAwFBRYMCh2wNxMJDeEQNgMdDBYLHOEOF90s3xsNGwk2ExIMCwwSth+cUN8PNjxI8GRChwUIFyBoNmLCg4cDC0bAt8ACM4b9KGR4mODQg4QLIrgDlkBjBgoHRq8cqJCwQspmAyjIlMkvCoCK6C74i7XBwcwNh3IkqGDBQoUKDgYEbRGggQMHGBxkMFBiggOjRytEoKpiAoIHESI8ddDglwgEB7Na4OBgyhIIYC9cEOtT6YoDHbJW4EBUwgUHAC4ACDz3AoWFLIwBMMqBg4THjzt0GCw3wuGlKwhgkOAYsuTJgwE4eEAA87sEF4567iAhcIYDXDB+ILAhqoMIGDIkMFBTNokJQWDkwBECACH5BAQKAAAALAAAAQAfAB4AAAX/4CeOo/BN5yesK+m+4uRAFJVdTpVo2sS3MFegoPAUjB6P4tKbOJ3A4CexSFqTBUPTGQhApSqJoniV+J7c7sQEEyQsxKsnIeD1unhv0MCxMI5WBWsqdRN4A4goLhMXDAsLRGQdLiuGiJdsIw2PC35wSRBtE5cEBAGZEwCOjxEQHQoFGlIBBAOlA7IiBxWcFgYfBgsAYAK2pQSKHw8WnBcmAg8DYB8BCNYGA88OFswWDSO5YBMECAYGBLKM3BYcv9MkGuXmCLIBAJ0WEgTv8AgH5gZQpFpQgR0CfiX8HfiHQkOEChArHEAoQoOBAxD+ydJAISKHDZneBYBAEoKBZ28iuwJI9s5AgpcJ9okgAKACB4gJEAaA+TLAiAkUOHCQUEHfuwkQGihtcCCcAAIShkqwcEGLlAkJHmzYoFSaiwdFJXSQECEmyx4EHlB4wPbBgZAxIkiVIAEABabkECR1YCMD2wQ+YQxwMLaD4Q4XIkSgEAHD4hoZMmzw2oYABbEdAGgGcCGxAwcYMNTYEBhMgAYRMmvurPgz3ww7KCLY4CAx5wgXMDh4EJOiiBUDDijV2iABNpa+K/o4hQKuixAAOw==" style="width: 1em; height: 1em;"></span>';
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
printUrlInline(
"javascript: void(0);",
"wheretocredit.com to calculate miles",
"",
1,
extra,
"_self"
);
} else {
printUrl(
"javascript: void(0);",
"wheretocredit.com to calculate miles",
"",
extra,
"_self"
);
}
}
function bindLinkClicks() {
var container;
var linkid = 0;
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
container = getSidebarContainer(1);
} else {
container = document.getElementById("powertoolslinkcontainer");
}
var links = container.getElementsByTagName("a");
/*
if (typeof(currentItin.itin[0].dep.offset)==="undefined") {
links[linkid].onclick=function () {
resolveTimezones();
};
linkid++;
}
*/
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode != 1) {
linkid = links.length - 1;
}
links[linkid].onclick = function() {
links[linkid].onclick = null;
openWheretocredit(links[linkid]);
};
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableAffiliates == 1) {
skimlinks.parentNode && skimlinks.parentNode.removeChild(skimlinks);
document.body.appendChild(skimlinks);
}
}
function openWheretocredit(link) {
var container = document.getElementById("wheretocredit-container");
container.style.display = "inline";
var itin = {
ticketingCarrier:
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers.length == 1 ? _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers[0] : null,
baseFareUSD: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].basefares + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].surcharges,
segments: []
};
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
itin.segments.push({
origin: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig,
destination: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest,
departure: new Date(
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.year,
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.month,
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day
),
carrier: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier,
bookingClass: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass,
codeshare: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].codeshare,
flightNumber: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr
});
}
}
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://www.wheretocredit.com/api/beta/calculate");
xhr.setRequestHeader("Accept", "application/json;charset=UTF-8");
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
link.href = "https://www.wheretocredit.com";
link.target = "_blank";
link.innerHTML = "Data provided by wheretocredit.com";
var data, result, temp;
try {
data = JSON.parse(xhr.responseText);
} catch (e) {
data = xhr.responseText;
}
if (
xhr.status === 200 &&
data &&
data.success &&
data.value &&
data.value.length &&
data.value[0].success
) {
data.value[0].value.totals.sort(function(a, b) {
if (a.value === b.value) {
return +(a.name > b.name) || +(a.name === b.name) - 1;
}
return b.value - a.value; // desc
});
result = document.createElement("div");
temp = data.value[0].value.totals.map(function(seg, i) {
return (
parseInt(seg.value)
.toString()
.replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
" " +
seg.name +
" miles"
);
});
for (var i = 0; i < temp.length; i++) {
result.appendChild(document.createTextNode(temp[i]));
result.appendChild(document.createElement("br"));
}
result.removeChild(result.lastChild);
} else {
result = data.errorMessage || data || "API quota exceeded :-/";
result = document.createTextNode(result);
}
container.style.display = "block";
container.innerHTML = "";
container.appendChild(result);
}
};
xhr.send(JSON.stringify([itin]));
}
function validatePaxcount(config) {
//{maxPaxcount:7, countInf:false, childAsAdult:12, sepInfSeat:false, childMinAge:2}
var tmpChildren = new Array();
// push cur children
for (var i = 0; i < _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].cAges.length; i++) {
tmpChildren.push(_settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].cAges[i]);
}
var ret = {
adults: _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].adults,
children: new Array(),
infLap: _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].infantsLap,
infSeat: 0
};
if (config.sepInfSeat === true) {
ret.infSeat = _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].infantsSeat;
} else {
for (var i = 0; i < _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].infantsSeat; i++) {
tmpChildren.push(config.childMinAge);
}
}
// process children
for (var i = 0; i < tmpChildren.length; i++) {
if (tmpChildren[i] < config.childAsAdult) {
ret.children.push(tmpChildren[i]);
} else {
ret.adults++;
}
}
// check Pax-Count
if (config.countInf === true) {
if (
config.maxPaxcount <
ret.adults + ret.infLap + ret.infSeat + ret.children.length
) {
console.log("Too many passengers");
return;
}
} else {
if (config.maxPaxcount < ret.adults + ret.infSeat + ret.children.length) {
console.log("Too many passengers");
return;
}
}
if (0 === ret.adults + ret.infSeat + ret.children.length) {
console.log("No passengers");
return;
}
return ret;
}
// Inline Stuff
function printUrlInline(url, text, desc, nth, extra, target) {
var otext = '<a href="' + url + '" target="' + (target || "_blank") + '">';
otext +=
(_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language] &&
_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language]["use"]) ||
"Use ";
otext += " " + text + "</a>" + (extra || "");
printItemInline(otext, desc, nth);
}
function printItemInline(text, desc, nth) {
const div = getSidebarContainer(nth);
div.innerHTML =
div.innerHTML +
'<li class="powertoolsitem">' +
text +
(desc ? "<br/><small>(" + desc + ")</small>" : "") +
"</li>";
}
function printImageInline(src, url, nth) {
const div = getSidebarContainer(nth).parentElement;
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableIMGautoload == 1) {
div.innerHTML =
div.innerHTML +
(url
? '<a href="' + url + '" target="_blank" class="powertoolsitem">'
: "") +
'<img src="' +
src +
'" style="margin-top:10px;"' +
(!url ? ' class="powertoolsitem"' : "") +
"/>" +
(url ? "</a>" : "");
} else {
var id = Math.random().toString();
div.innerHTML =
div.innerHTML +
'<div id="' +
id +
'" class="powertoolsitem" style="width:184px;height:100px;background-color:white;cursor:pointer;text-align:center;margin-top:10px;padding-top:84px;"><span>Click</span></div>';
document.getElementById(id).onclick = function() {
var newdiv = document.createElement("div");
newdiv.setAttribute("class", "powertoolsitem");
newdiv.innerHTML =
(url ? '<a href="' + url + '" target="_blank">' : "") +
'<img src="' +
src +
'" style="margin-top:10px;"' +
(!url ? ' class="powertoolsitem"' : "") +
"/>" +
(url ? "</a>" : "");
document
.getElementById(id)
.parentElement.replaceChild(newdiv, document.getElementById(id));
};
}
}
function getSidebarContainer(nth) {
var div =
!nth || nth >= 4
? document.getElementById("powertoolslinkinlinecontainer")
: Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtarget */ "c"])(_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcHeader, nth).nextElementSibling;
return div || createUrlContainerInline();
}
function createUrlContainerInline() {
var newdiv = document.createElement("div");
newdiv.setAttribute("class", _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcDiv);
newdiv.innerHTML =
'<div class="' +
_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcHeader +
'">Powertools</div><ul id="powertoolslinkinlinecontainer" class="' +
_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcLinkList +
'"></ul>';
Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtarget */ "c"])(_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcDiv, 1).parentElement.appendChild(
newdiv
);
return document.getElementById("powertoolslinkinlinecontainer");
}
// Printing Stuff
function printUrl(url, name, desc, extra, target) {
if (document.getElementById("powertoolslinkcontainer") == undefined) {
createUrlContainer();
}
var text =
'<div style="margin:5px 0px 10px 0px"><label style="font-size:' +
Number(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].linkFontsize) +
'%;font-weight:600"><a href="' +
url +
'" target=' +
(target || "_blank") +
">";
text +=
(_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language] &&
_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language]["use"]) ||
"Use ";
text +=
" " +
name +
"</a></label>" +
(extra || "") +
(desc
? '<br><label style="font-size:' +
(Number(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].linkFontsize) - 15) +
'%">(' +
desc +
")</label>"
: "") +
"</div>";
var target = document.getElementById("powertoolslinkcontainer");
target.innerHTML = target.innerHTML + text;
}
function createUrlContainer() {
var newdiv = document.createElement("div");
newdiv.setAttribute("id", "powertoolslinkcontainer");
newdiv.setAttribute("style", "margin:15px 0px 0px 10px");
Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtarget */ "c"])(
_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.htbContainer,
1
).parentElement.parentElement.parentElement.appendChild(newdiv);
}
function printSeperator() {
var container =
document.getElementById("powertoolslinkcontainer") || getSidebarContainer();
if (container) {
container.innerHTML =
container.innerHTML +
(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode
? '<hr class="powertoolsitem"/>'
: "<hr/>");
}
}
/***/ }),
/* 4 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return reset; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getCabin; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getForcedCabin; });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
// General settings
const appSettings = {
scriptEngine:
typeof GM === "undefined" || typeof GM.info === "undefined" ? 0 : 1, // 0 - console mode, 1 - tamper or grease mode
itaLanguage: "en",
version: "0.44.4",
retrycount: 1,
laststatus: "",
scriptrunning: 1,
cabin: "Auto"
};
function reset() {
// reset Notification due to pagechange
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* clearNotification */ "a"])();
// reset Editor Mode
document.getElementById("mptStartparse").setAttribute("class", "invis");
document.getElementById("mptStartparse").style.display = "none";
appSettings.itaLanguage = "en";
appSettings.retrycount = 1;
}
function getCabin(autoCabin) {
return appSettings.cabin === "Auto" ? autoCabin : getForcedCabin();
}
function getForcedCabin() {
switch (appSettings.cabin) {
case "Y":
return 0;
case "Y+":
return 1;
case "C":
return 2;
case "F":
return 3;
default:
return 0;
}
}
/* harmony default export */ __webpack_exports__["a"] = (appSettings);
/***/ }),
/* 5 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return findTargetSetVersion; });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
// ITA Matrix CSS class definitions:
const itaSettings = [
{
startpage: {
maindiv: "KIR33AB-w-d" //Container of main content. Unfortunately id "contentwrapper" is used twice
},
resultpage: {
itin: "KIR33AB-v-d", //Container with headline: "Itinerary"
itinRow: "KIR33AB-j-i", // TR in itin with Orig, Dest and date
milagecontainer: "KIR33AB-v-e", // TD-Container on the right
rulescontainer: "KIR33AB-k-d", // First container before rulelinks (the one with Fare X:)
htbContainer: "KIR33AB-k-k", // full "how to buy"-container inner div (td=>div=>div)
htbLeft: "KIR33AB-k-g", // Left column in the "how to buy"-container
htbRight: "KIR33AB-k-f", // Class for normal right column
htbGreyBorder: "KIR33AB-k-l", // Class for right cell with light grey border (used for subtotal of passenger)
//inline
mcDiv: "KIR33AB-y-d", // Right menu sections class (3 divs surrounding entire Mileage, Emissions, and Airport Info)
mcHeader: "KIR33AB-y-b", // Right menu header class ("Mileage", etc.)
mcLinkList: "KIR33AB-y-c" // Right menu ul list class (immediately following header)
}
},
{
startpage: {
maindiv: "IR6M2QD-w-d" //Container of main content. Unfortunately id "contentwrapper" is used twice
},
resultpage: {
itin: "IR6M2QD-v-d", //Container with headline: "Itinerary"
itinRow: "IR6M2QD-j-i", // TR in itin with Orig, Dest and date
milagecontainer: "IR6M2QD-v-e", // TD-Container on the right
rulescontainer: "IR6M2QD-k-d", // First container before rulelinks (the one with Fare X:)
htbContainer: "IR6M2QD-k-k", // full "how to buy"-container inner div (td=>div=>div)
htbLeft: "IR6M2QD-k-g", // Left column in the "how to buy"-container
htbRight: "IR6M2QD-k-f", // Class for normal right column
htbGreyBorder: "IR6M2QD-k-l", // Class for right cell with light grey border (used for subtotal of passenger)
//inline
mcDiv: "IR6M2QD-y-d", // Right menu sections class (3 divs surrounding entire Mileage, Emissions, and Airport Info)
mcHeader: "IR6M2QD-y-b", // Right menu header class ("Mileage", etc.)
mcLinkList: "IR6M2QD-y-c" // Right menu ul list class (immediately following header)
}
}
];
const classSettings = itaSettings[0];
function findTargetSetVersion(classSelector, nth) {
for (let setting of itaSettings) {
const className = classSelector(setting);
const target = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* findtarget */ "c"])(className, nth);
if (target) {
console.log(`ITA Version detected: ${className}`);
Object.assign(classSettings, setting);
return target;
}
}
}
/* harmony default export */ __webpack_exports__["a"] = (classSettings);
/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// initialize local storage for passenger details
/* harmony default export */ __webpack_exports__["a"] = ({
adults: 1,
infantsLap: 0,
infantsSeat: 0,
cAges: new Array()
});
/***/ }),
/* 7 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getAmadeusUrl; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getAmadeusPax; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getAmadeusTriptype; });
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
// **** START AMADEUS ****
function getAmadeusUrl(config) {
config = config || {
sepcabin: 1,
detailed: 0,
inctimes: 1,
enablesegskip: 1,
allowpremium: 1
};
config.sepcabin = config.sepcabin === undefined ? 1 : config.sepcabin;
config.detailed = config.detailed === undefined ? 0 : config.detailed;
config.inctimes = config.inctimes === undefined ? 1 : config.inctimes;
config.enablesegskip =
config.enablesegskip === undefined ? 1 : config.enablesegskip;
config.allowpremium =
config.allowpremium === undefined ? 1 : config.allowpremium;
var curleg = 0;
var lastcabin = 0;
var curseg = 0;
var lastdest = "";
var maxcabin = 0;
var url = "";
var lastarrtime = "";
var cabins = ["E", "N", "B", "F"];
cabins[1] = config.allowpremium != 1 ? cabins[0] : cabins[1];
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length; i++) {
curseg = 3; // need to toggle segskip on first leg
lastcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[0].cabin;
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440 ||
config.enablesegskip == 0
)
break;
k++;
}
curseg++;
if (
curseg > 3 ||
(_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin != lastcabin && config.sepcabin == 1)
) {
if (lastdest != "") {
//close prior flight
url += "&E_LOCATION_" + curleg + "=" + lastdest;
url += "&E_DATE_" + curleg + "=" + lastarrtime;
}
curseg = 1;
curleg++;
url += "&B_LOCATION_" + curleg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
url += "&B_ANY_TIME_" + curleg + "=FALSE";
url +=
"&B_DATE_" +
curleg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
(config.inctimes == 1
? (
"0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")
).slice(-4)
: "0000");
url +=
"&CABIN_" + curleg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin];
url += "&ALLOW_ALTERNATE_AVAILABILITY_" + curleg + "=FALSE";
url += "&DATE_RANGE_VALUE_" + curleg + "=0";
}
lastarrtime =
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
(config.inctimes == 1
? (
"0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time.replace(":", "")
).slice(-4)
: "0000");
if (config.detailed === 1) {
url +=
"&B_LOCATION_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
url +=
"&B_LOCATION_CITY_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
url +=
"&B_DATE_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
(config.inctimes == 1
? (
"0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")
).slice(-4)
: "0000");
url +=
"&E_LOCATION_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url +=
"&E_LOCATION_CITY_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url += "&E_DATE_" + curleg + "_" + curseg + "=" + lastarrtime;
}
url +=
"&AIRLINE_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].carrier;
url +=
"&FLIGHT_NUMBER_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&RBD_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
url +=
"&FARE_CLASS_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].farebase;
lastdest = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
lastcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin;
if (_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin > maxcabin)
maxcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin;
j += k;
}
}
url += "&E_LOCATION_" + curleg + "=" + lastdest; // push final dest
url += "&E_DATE_" + curleg + "=" + lastarrtime; // push arr time
url +=
"&CABIN=" +
cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? maxcabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()] +
""; // push cabin
return url;
}
function getAmadeusPax(pax, config) {
config = config || {
allowinf: 1,
youthage: 0
};
config.allowinf = config.allowinf === undefined ? 1 : config.allowinf;
config.youthage = config.sepyouth === undefined ? 0 : config.sepyouth;
var tmpPax = { c: 0, y: 0 };
var curPax = 1;
var url = "&IS_PRIMARY_TRAVELLER_1=True";
for (let i = 0; i < pax.children.length; i++) {
if (pax.children[i] >= config.youthage && config.youthage > 0) {
tmpPax.y++;
} else if (pax.children[i] >= 12) {
pax.adults++;
} else {
tmpPax.c++;
}
}
for (let i = 0; i < pax.adults; i++) {
url += "&TRAVELLER_TYPE_" + curPax + "=ADT";
url +=
"&HAS_INFANT_" +
curPax +
"=" +
(i < pax.infLap && config.allowinf == 1 ? "True" : "False");
url += "&IS_YOUTH_" + curPax + "=False";
curPax++;
}
for (let i = 0; i < tmpPax.y; i++) {
url += "&TRAVELLER_TYPE_" + curPax + "=ADT";
url += "&HAS_INFANT_" + curPax + "=False";
url += "&IS_YOUTH_" + curPax + "=True";
curPax++;
}
for (let i = 0; i < tmpPax.c; i++) {
url += "&TRAVELLER_TYPE_" + curPax + "=CHD";
url += "&HAS_INFANT_" + curPax + "=False";
url += "&IS_YOUTH_" + curPax + "=False";
curPax++;
}
return {
url: url,
adults: pax.adults,
youth: tmpPax.y,
children: tmpPax.c,
infants: pax.infLap
};
}
function getAmadeusTriptype() {
return _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length > 1
? _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].orig
? "R"
: "M"
: "O";
}
// **** END AMADEUS ****
/***/ }),
/* 8 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// Supported translations for the PowerTools interface:
const de = {
use: "Öffne ",
resultpage: {
"Dep:": "Abflug:",
"Arr:": "Ankunft:",
"Layover in": "Umst. in",
" to ": " nach ",
"Mon,": "Mo.,",
"Tue,": "Di.,",
"Wed,": "Mi.,",
"Thu,": "Do.,",
"Fri,": "Fr.,",
"Sat,": "Sa.,",
"Sun,": "So.,",
" Jan ": " Januar ",
" Feb ": " Februar ",
" Mar ": " Mä,rz ",
" Apr ": " April ",
" May ": " Mai ",
" Jun ": " Juni ",
" Jul ": " Juli ",
" Aug ": " August ",
" Sep ": " September ",
" Oct ": " Oktober ",
" Nov ": " November ",
" Dec ": " Dezember ",
"OPERATED BY ": "Durchgefü,hrt von "
}
};
/* harmony default export */ __webpack_exports__["a"] = ({
de
});
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js
;(function (global, factory) {
true ? module.exports = factory() :
undefined
}(this, (function () { 'use strict';
var hookCallback;
function hooks () {
return hookCallback.apply(null, arguments);
}
// This is done to register the method called with moment()
// without creating circular dependencies.
function setHookCallback (callback) {
hookCallback = callback;
}
function isArray(input) {
return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
}
function isObject(input) {
// IE8 will treat undefined and null as object if it wasn't for
// input != null
return input != null && Object.prototype.toString.call(input) === '[object Object]';
}
function isObjectEmpty(obj) {
if (Object.getOwnPropertyNames) {
return (Object.getOwnPropertyNames(obj).length === 0);
} else {
var k;
for (k in obj) {
if (obj.hasOwnProperty(k)) {
return false;
}
}
return true;
}
}
function isUndefined(input) {
return input === void 0;
}
function isNumber(input) {
return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
}
function isDate(input) {
return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
}
function map(arr, fn) {
var res = [], i;
for (i = 0; i < arr.length; ++i) {
res.push(fn(arr[i], i));
}
return res;
}
function hasOwnProp(a, b) {
return Object.prototype.hasOwnProperty.call(a, b);
}
function extend(a, b) {
for (var i in b) {
if (hasOwnProp(b, i)) {
a[i] = b[i];
}
}
if (hasOwnProp(b, 'toString')) {
a.toString = b.toString;
}
if (hasOwnProp(b, 'valueOf')) {
a.valueOf = b.valueOf;
}
return a;
}
function createUTC (input, format, locale, strict) {
return createLocalOrUTC(input, format, locale, strict, true).utc();
}
function defaultParsingFlags() {
// We need to deep clone this object.
return {
empty : false,
unusedTokens : [],
unusedInput : [],
overflow : -2,
charsLeftOver : 0,
nullInput : false,
invalidMonth : null,
invalidFormat : false,
userInvalidated : false,
iso : false,
parsedDateParts : [],
meridiem : null,
rfc2822 : false,
weekdayMismatch : false
};
}
function getParsingFlags(m) {
if (m._pf == null) {
m._pf = defaultParsingFlags();
}
return m._pf;
}
var some;
if (Array.prototype.some) {
some = Array.prototype.some;
} else {
some = function (fun) {
var t = Object(this);
var len = t.length >>> 0;
for (var i = 0; i < len; i++) {
if (i in t && fun.call(this, t[i], i, t)) {
return true;
}
}
return false;
};
}
function isValid(m) {
if (m._isValid == null) {
var flags = getParsingFlags(m);
var parsedParts = some.call(flags.parsedDateParts, function (i) {
return i != null;
});
var isNowValid = !isNaN(m._d.getTime()) &&
flags.overflow < 0 &&
!flags.empty &&
!flags.invalidMonth &&
!flags.invalidWeekday &&
!flags.weekdayMismatch &&
!flags.nullInput &&
!flags.invalidFormat &&
!flags.userInvalidated &&
(!flags.meridiem || (flags.meridiem && parsedParts));
if (m._strict) {
isNowValid = isNowValid &&
flags.charsLeftOver === 0 &&
flags.unusedTokens.length === 0 &&
flags.bigHour === undefined;
}
if (Object.isFrozen == null || !Object.isFrozen(m)) {
m._isValid = isNowValid;
}
else {
return isNowValid;
}
}
return m._isValid;
}
function createInvalid (flags) {
var m = createUTC(NaN);
if (flags != null) {
extend(getParsingFlags(m), flags);
}
else {
getParsingFlags(m).userInvalidated = true;
}
return m;
}
// Plugins that add properties should also add the key here (null value),
// so we can properly clone ourselves.
var momentProperties = hooks.momentProperties = [];
function copyConfig(to, from) {
var i, prop, val;
if (!isUndefined(from._isAMomentObject)) {
to._isAMomentObject = from._isAMomentObject;
}
if (!isUndefined(from._i)) {
to._i = from._i;
}
if (!isUndefined(from._f)) {
to._f = from._f;
}
if (!isUndefined(from._l)) {
to._l = from._l;
}
if (!isUndefined(from._strict)) {
to._strict = from._strict;
}
if (!isUndefined(from._tzm)) {
to._tzm = from._tzm;
}
if (!isUndefined(from._isUTC)) {
to._isUTC = from._isUTC;
}
if (!isUndefined(from._offset)) {
to._offset = from._offset;
}
if (!isUndefined(from._pf)) {
to._pf = getParsingFlags(from);
}
if (!isUndefined(from._locale)) {
to._locale = from._locale;
}
if (momentProperties.length > 0) {
for (i = 0; i < momentProperties.length; i++) {
prop = momentProperties[i];
val = from[prop];
if (!isUndefined(val)) {
to[prop] = val;
}
}
}
return to;
}
var updateInProgress = false;
// Moment prototype object
function Moment(config) {
copyConfig(this, config);
this._d = new Date(config._d != null ? config._d.getTime() : NaN);
if (!this.isValid()) {
this._d = new Date(NaN);
}
// Prevent infinite loop in case updateOffset creates new moment
// objects.
if (updateInProgress === false) {
updateInProgress = true;
hooks.updateOffset(this);
updateInProgress = false;
}
}
function isMoment (obj) {
return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
}
function absFloor (number) {
if (number < 0) {
// -0 -> 0
return Math.ceil(number) || 0;
} else {
return Math.floor(number);
}
}
function toInt(argumentForCoercion) {
var coercedNumber = +argumentForCoercion,
value = 0;
if (coercedNumber !== 0 && isFinite(coercedNumber)) {
value = absFloor(coercedNumber);
}
return value;
}
// compare two arrays, return the number of differences
function compareArrays(array1, array2, dontConvert) {
var len = Math.min(array1.length, array2.length),
lengthDiff = Math.abs(array1.length - array2.length),
diffs = 0,
i;
for (i = 0; i < len; i++) {
if ((dontConvert && array1[i] !== array2[i]) ||
(!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
diffs++;
}
}
return diffs + lengthDiff;
}
function warn(msg) {
if (hooks.suppressDeprecationWarnings === false &&
(typeof console !== 'undefined') && console.warn) {
console.warn('Deprecation warning: ' + msg);
}
}
function deprecate(msg, fn) {
var firstTime = true;
return extend(function () {
if (hooks.deprecationHandler != null) {
hooks.deprecationHandler(null, msg);
}
if (firstTime) {
var args = [];
var arg;
for (var i = 0; i < arguments.length; i++) {
arg = '';
if (typeof arguments[i] === 'object') {
arg += '\n[' + i + '] ';
for (var key in arguments[0]) {
arg += key + ': ' + arguments[0][key] + ', ';
}
arg = arg.slice(0, -2); // Remove trailing comma and space
} else {
arg = arguments[i];
}
args.push(arg);
}
warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
firstTime = false;
}
return fn.apply(this, arguments);
}, fn);
}
var deprecations = {};
function deprecateSimple(name, msg) {
if (hooks.deprecationHandler != null) {
hooks.deprecationHandler(name, msg);
}
if (!deprecations[name]) {
warn(msg);
deprecations[name] = true;
}
}
hooks.suppressDeprecationWarnings = false;
hooks.deprecationHandler = null;
function isFunction(input) {
return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
}
function set (config) {
var prop, i;
for (i in config) {
prop = config[i];
if (isFunction(prop)) {
this[i] = prop;
} else {
this['_' + i] = prop;
}
}
this._config = config;
// Lenient ordinal parsing accepts just a number in addition to
// number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
// TODO: Remove "ordinalParse" fallback in next major release.
this._dayOfMonthOrdinalParseLenient = new RegExp(
(this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
'|' + (/\d{1,2}/).source);
}
function mergeConfigs(parentConfig, childConfig) {
var res = extend({}, parentConfig), prop;
for (prop in childConfig) {
if (hasOwnProp(childConfig, prop)) {
if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
res[prop] = {};
extend(res[prop], parentConfig[prop]);
extend(res[prop], childConfig[prop]);
} else if (childConfig[prop] != null) {
res[prop] = childConfig[prop];
} else {
delete res[prop];
}
}
}
for (prop in parentConfig) {
if (hasOwnProp(parentConfig, prop) &&
!hasOwnProp(childConfig, prop) &&
isObject(parentConfig[prop])) {
// make sure changes to properties don't modify parent config
res[prop] = extend({}, res[prop]);
}
}
return res;
}
function Locale(config) {
if (config != null) {
this.set(config);
}
}
var keys;
if (Object.keys) {
keys = Object.keys;
} else {
keys = function (obj) {
var i, res = [];
for (i in obj) {
if (hasOwnProp(obj, i)) {
res.push(i);
}
}
return res;
};
}
var defaultCalendar = {
sameDay : '[Today at] LT',
nextDay : '[Tomorrow at] LT',
nextWeek : 'dddd [at] LT',
lastDay : '[Yesterday at] LT',
lastWeek : '[Last] dddd [at] LT',
sameElse : 'L'
};
function calendar (key, mom, now) {
var output = this._calendar[key] || this._calendar['sameElse'];
return isFunction(output) ? output.call(mom, now) : output;
}
var defaultLongDateFormat = {
LTS : 'h:mm:ss A',
LT : 'h:mm A',
L : 'MM/DD/YYYY',
LL : 'MMMM D, YYYY',
LLL : 'MMMM D, YYYY h:mm A',
LLLL : 'dddd, MMMM D, YYYY h:mm A'
};
function longDateFormat (key) {
var format = this._longDateFormat[key],
formatUpper = this._longDateFormat[key.toUpperCase()];
if (format || !formatUpper) {
return format;
}
this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
return val.slice(1);
});
return this._longDateFormat[key];
}
var defaultInvalidDate = 'Invalid date';
function invalidDate () {
return this._invalidDate;
}
var defaultOrdinal = '%d';
var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
function ordinal (number) {
return this._ordinal.replace('%d', number);
}
var defaultRelativeTime = {
future : 'in %s',
past : '%s ago',
s : 'a few seconds',
ss : '%d seconds',
m : 'a minute',
mm : '%d minutes',
h : 'an hour',
hh : '%d hours',
d : 'a day',
dd : '%d days',
M : 'a month',
MM : '%d months',
y : 'a year',
yy : '%d years'
};
function relativeTime (number, withoutSuffix, string, isFuture) {
var output = this._relativeTime[string];
return (isFunction(output)) ?
output(number, withoutSuffix, string, isFuture) :
output.replace(/%d/i, number);
}
function pastFuture (diff, output) {
var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
return isFunction(format) ? format(output) : format.replace(/%s/i, output);
}
var aliases = {};
function addUnitAlias (unit, shorthand) {
var lowerCase = unit.toLowerCase();
aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
}
function normalizeUnits(units) {
return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
}
function normalizeObjectUnits(inputObject) {
var normalizedInput = {},
normalizedProp,
prop;
for (prop in inputObject) {
if (hasOwnProp(inputObject, prop)) {
normalizedProp = normalizeUnits(prop);
if (normalizedProp) {
normalizedInput[normalizedProp] = inputObject[prop];
}
}
}
return normalizedInput;
}
var priorities = {};
function addUnitPriority(unit, priority) {
priorities[unit] = priority;
}
function getPrioritizedUnits(unitsObj) {
var units = [];
for (var u in unitsObj) {
units.push({unit: u, priority: priorities[u]});
}
units.sort(function (a, b) {
return a.priority - b.priority;
});
return units;
}
function zeroFill(number, targetLength, forceSign) {
var absNumber = '' + Math.abs(number),
zerosToFill = targetLength - absNumber.length,
sign = number >= 0;
return (sign ? (forceSign ? '+' : '') : '-') +
Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
}
var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
var formatFunctions = {};
var formatTokenFunctions = {};
// token: 'M'
// padded: ['MM', 2]
// ordinal: 'Mo'
// callback: function () { this.month() + 1 }
function addFormatToken (token, padded, ordinal, callback) {
var func = callback;
if (typeof callback === 'string') {
func = function () {
return this[callback]();
};
}
if (token) {
formatTokenFunctions[token] = func;
}
if (padded) {
formatTokenFunctions[padded[0]] = function () {
return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
};
}
if (ordinal) {
formatTokenFunctions[ordinal] = function () {
return this.localeData().ordinal(func.apply(this, arguments), token);
};
}
}
function removeFormattingTokens(input) {
if (input.match(/\[[\s\S]/)) {
return input.replace(/^\[|\]$/g, '');
}
return input.replace(/\\/g, '');
}
function makeFormatFunction(format) {
var array = format.match(formattingTokens), i, length;
for (i = 0, length = array.length; i < length; i++) {
if (formatTokenFunctions[array[i]]) {
array[i] = formatTokenFunctions[array[i]];
} else {
array[i] = removeFormattingTokens(array[i]);
}
}
return function (mom) {
var output = '', i;
for (i = 0; i < length; i++) {
output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
}
return output;
};
}
// format date using native date object
function formatMoment(m, format) {
if (!m.isValid()) {
return m.localeData().invalidDate();
}
format = expandFormat(format, m.localeData());
formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
return formatFunctions[format](m);
}
function expandFormat(format, locale) {
var i = 5;
function replaceLongDateFormatTokens(input) {
return locale.longDateFormat(input) || input;
}
localFormattingTokens.lastIndex = 0;
while (i >= 0 && localFormattingTokens.test(format)) {
format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
localFormattingTokens.lastIndex = 0;
i -= 1;
}
return format;
}
var match1 = /\d/; // 0 - 9
var match2 = /\d\d/; // 00 - 99
var match3 = /\d{3}/; // 000 - 999
var match4 = /\d{4}/; // 0000 - 9999
var match6 = /[+-]?\d{6}/; // -999999 - 999999
var match1to2 = /\d\d?/; // 0 - 99
var match3to4 = /\d\d\d\d?/; // 999 - 9999
var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999
var match1to3 = /\d{1,3}/; // 0 - 999
var match1to4 = /\d{1,4}/; // 0 - 9999
var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
var matchUnsigned = /\d+/; // 0 - inf
var matchSigned = /[+-]?\d+/; // -inf - inf
var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
// any word (or two) characters or numbers including two/three word month in arabic.
// includes scottish gaelic two word and hyphenated months
var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;
var regexes = {};
function addRegexToken (token, regex, strictRegex) {
regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
return (isStrict && strictRegex) ? strictRegex : regex;
};
}
function getParseRegexForToken (token, config) {
if (!hasOwnProp(regexes, token)) {
return new RegExp(unescapeFormat(token));
}
return regexes[token](config._strict, config._locale);
}
// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
function unescapeFormat(s) {
return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
return p1 || p2 || p3 || p4;
}));
}
function regexEscape(s) {
return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}
var tokens = {};
function addParseToken (token, callback) {
var i, func = callback;
if (typeof token === 'string') {
token = [token];
}
if (isNumber(callback)) {
func = function (input, array) {
array[callback] = toInt(input);
};
}
for (i = 0; i < token.length; i++) {
tokens[token[i]] = func;
}
}
function addWeekParseToken (token, callback) {
addParseToken(token, function (input, array, config, token) {
config._w = config._w || {};
callback(input, config._w, config, token);
});
}
function addTimeToArrayFromToken(token, input, config) {
if (input != null && hasOwnProp(tokens, token)) {
tokens[token](input, config._a, config, token);
}
}
var YEAR = 0;
var MONTH = 1;
var DATE = 2;
var HOUR = 3;
var MINUTE = 4;
var SECOND = 5;
var MILLISECOND = 6;
var WEEK = 7;
var WEEKDAY = 8;
// FORMATTING
addFormatToken('Y', 0, 0, function () {
var y = this.year();
return y <= 9999 ? '' + y : '+' + y;
});
addFormatToken(0, ['YY', 2], 0, function () {
return this.year() % 100;
});
addFormatToken(0, ['YYYY', 4], 0, 'year');
addFormatToken(0, ['YYYYY', 5], 0, 'year');
addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
// ALIASES
addUnitAlias('year', 'y');
// PRIORITIES
addUnitPriority('year', 1);
// PARSING
addRegexToken('Y', matchSigned);
addRegexToken('YY', match1to2, match2);
addRegexToken('YYYY', match1to4, match4);
addRegexToken('YYYYY', match1to6, match6);
addRegexToken('YYYYYY', match1to6, match6);
addParseToken(['YYYYY', 'YYYYYY'], YEAR);
addParseToken('YYYY', function (input, array) {
array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
});
addParseToken('YY', function (input, array) {
array[YEAR] = hooks.parseTwoDigitYear(input);
});
addParseToken('Y', function (input, array) {
array[YEAR] = parseInt(input, 10);
});
// HELPERS
function daysInYear(year) {
return isLeapYear(year) ? 366 : 365;
}
function isLeapYear(year) {
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
}
// HOOKS
hooks.parseTwoDigitYear = function (input) {
return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
};
// MOMENTS
var getSetYear = makeGetSet('FullYear', true);
function getIsLeapYear () {
return isLeapYear(this.year());
}
function makeGetSet (unit, keepTime) {
return function (value) {
if (value != null) {
set$1(this, unit, value);
hooks.updateOffset(this, keepTime);
return this;
} else {
return get(this, unit);
}
};
}
function get (mom, unit) {
return mom.isValid() ?
mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
}
function set$1 (mom, unit, value) {
if (mom.isValid() && !isNaN(value)) {
if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
}
else {
mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
}
}
}
// MOMENTS
function stringGet (units) {
units = normalizeUnits(units);
if (isFunction(this[units])) {
return this[units]();
}
return this;
}
function stringSet (units, value) {
if (typeof units === 'object') {
units = normalizeObjectUnits(units);
var prioritized = getPrioritizedUnits(units);
for (var i = 0; i < prioritized.length; i++) {
this[prioritized[i].unit](units[prioritized[i].unit]);
}
} else {
units = normalizeUnits(units);
if (isFunction(this[units])) {
return this[units](value);
}
}
return this;
}
function mod(n, x) {
return ((n % x) + x) % x;
}
var indexOf;
if (Array.prototype.indexOf) {
indexOf = Array.prototype.indexOf;
} else {
indexOf = function (o) {
// I know
var i;
for (i = 0; i < this.length; ++i) {
if (this[i] === o) {
return i;
}
}
return -1;
};
}
function daysInMonth(year, month) {
if (isNaN(year) || isNaN(month)) {
return NaN;
}
var modMonth = mod(month, 12);
year += (month - modMonth) / 12;
return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);
}
// FORMATTING
addFormatToken('M', ['MM', 2], 'Mo', function () {
return this.month() + 1;
});
addFormatToken('MMM', 0, 0, function (format) {
return this.localeData().monthsShort(this, format);
});
addFormatToken('MMMM', 0, 0, function (format) {
return this.localeData().months(this, format);
});
// ALIASES
addUnitAlias('month', 'M');
// PRIORITY
addUnitPriority('month', 8);
// PARSING
addRegexToken('M', match1to2);
addRegexToken('MM', match1to2, match2);
addRegexToken('MMM', function (isStrict, locale) {
return locale.monthsShortRegex(isStrict);
});
addRegexToken('MMMM', function (isStrict, locale) {
return locale.monthsRegex(isStrict);
});
addParseToken(['M', 'MM'], function (input, array) {
array[MONTH] = toInt(input) - 1;
});
addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
var month = config._locale.monthsParse(input, token, config._strict);
// if we didn't find a month name, mark the date as invalid.
if (month != null) {
array[MONTH] = month;
} else {
getParsingFlags(config).invalidMonth = input;
}
});
// LOCALES
var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
function localeMonths (m, format) {
if (!m) {
return isArray(this._months) ? this._months :
this._months['standalone'];
}
return isArray(this._months) ? this._months[m.month()] :
this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
}
var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
function localeMonthsShort (m, format) {
if (!m) {
return isArray(this._monthsShort) ? this._monthsShort :
this._monthsShort['standalone'];
}
return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
}
function handleStrictParse(monthName, format, strict) {
var i, ii, mom, llc = monthName.toLocaleLowerCase();
if (!this._monthsParse) {
// this is not used
this._monthsParse = [];
this._longMonthsParse = [];
this._shortMonthsParse = [];
for (i = 0; i < 12; ++i) {
mom = createUTC([2000, i]);
this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
}
}
if (strict) {
if (format === 'MMM') {
ii = indexOf.call(this._shortMonthsParse, llc);
return ii !== -1 ? ii : null;
} else {
ii = indexOf.call(this._longMonthsParse, llc);
return ii !== -1 ? ii : null;
}
} else {
if (format === 'MMM') {
ii = indexOf.call(this._shortMonthsParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._longMonthsParse, llc);
return ii !== -1 ? ii : null;
} else {
ii = indexOf.call(this._longMonthsParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._shortMonthsParse, llc);
return ii !== -1 ? ii : null;
}
}
}
function localeMonthsParse (monthName, format, strict) {
var i, mom, regex;
if (this._monthsParseExact) {
return handleStrictParse.call(this, monthName, format, strict);
}
if (!this._monthsParse) {
this._monthsParse = [];
this._longMonthsParse = [];
this._shortMonthsParse = [];
}
// TODO: add sorting
// Sorting makes sure if one month (or abbr) is a prefix of another
// see sorting in computeMonthsParse
for (i = 0; i < 12; i++) {
// make the regex if we don't have it already
mom = createUTC([2000, i]);
if (strict && !this._longMonthsParse[i]) {
this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
}
if (!strict && !this._monthsParse[i]) {
regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
}
// test the regex
if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
return i;
} else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
return i;
} else if (!strict && this._monthsParse[i].test(monthName)) {
return i;
}
}
}
// MOMENTS
function setMonth (mom, value) {
var dayOfMonth;
if (!mom.isValid()) {
// No op
return mom;
}
if (typeof value === 'string') {
if (/^\d+$/.test(value)) {
value = toInt(value);
} else {
value = mom.localeData().monthsParse(value);
// TODO: Another silent failure?
if (!isNumber(value)) {
return mom;
}
}
}
dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
return mom;
}
function getSetMonth (value) {
if (value != null) {
setMonth(this, value);
hooks.updateOffset(this, true);
return this;
} else {
return get(this, 'Month');
}
}
function getDaysInMonth () {
return daysInMonth(this.year(), this.month());
}
var defaultMonthsShortRegex = matchWord;
function monthsShortRegex (isStrict) {
if (this._monthsParseExact) {
if (!hasOwnProp(this, '_monthsRegex')) {
computeMonthsParse.call(this);
}
if (isStrict) {
return this._monthsShortStrictRegex;
} else {
return this._monthsShortRegex;
}
} else {
if (!hasOwnProp(this, '_monthsShortRegex')) {
this._monthsShortRegex = defaultMonthsShortRegex;
}
return this._monthsShortStrictRegex && isStrict ?
this._monthsShortStrictRegex : this._monthsShortRegex;
}
}
var defaultMonthsRegex = matchWord;
function monthsRegex (isStrict) {
if (this._monthsParseExact) {
if (!hasOwnProp(this, '_monthsRegex')) {
computeMonthsParse.call(this);
}
if (isStrict) {
return this._monthsStrictRegex;
} else {
return this._monthsRegex;
}
} else {
if (!hasOwnProp(this, '_monthsRegex')) {
this._monthsRegex = defaultMonthsRegex;
}
return this._monthsStrictRegex && isStrict ?
this._monthsStrictRegex : this._monthsRegex;
}
}
function computeMonthsParse () {
function cmpLenRev(a, b) {
return b.length - a.length;
}
var shortPieces = [], longPieces = [], mixedPieces = [],
i, mom;
for (i = 0; i < 12; i++) {
// make the regex if we don't have it already
mom = createUTC([2000, i]);
shortPieces.push(this.monthsShort(mom, ''));
longPieces.push(this.months(mom, ''));
mixedPieces.push(this.months(mom, ''));
mixedPieces.push(this.monthsShort(mom, ''));
}
// Sorting makes sure if one month (or abbr) is a prefix of another it
// will match the longer piece.
shortPieces.sort(cmpLenRev);
longPieces.sort(cmpLenRev);
mixedPieces.sort(cmpLenRev);
for (i = 0; i < 12; i++) {
shortPieces[i] = regexEscape(shortPieces[i]);
longPieces[i] = regexEscape(longPieces[i]);
}
for (i = 0; i < 24; i++) {
mixedPieces[i] = regexEscape(mixedPieces[i]);
}
this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
this._monthsShortRegex = this._monthsRegex;
this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
}
function createDate (y, m, d, h, M, s, ms) {
// can't just apply() to create a date:
// https://stackoverflow.com/q/181348
var date;
// the date constructor remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0) {
// preserve leap years using a full 400 year cycle, then reset
date = new Date(y + 400, m, d, h, M, s, ms);
if (isFinite(date.getFullYear())) {
date.setFullYear(y);
}
} else {
date = new Date(y, m, d, h, M, s, ms);
}
return date;
}
function createUTCDate (y) {
var date;
// the Date.UTC function remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0) {
var args = Array.prototype.slice.call(arguments);
// preserve leap years using a full 400 year cycle, then reset
args[0] = y + 400;
date = new Date(Date.UTC.apply(null, args));
if (isFinite(date.getUTCFullYear())) {
date.setUTCFullYear(y);
}
} else {
date = new Date(Date.UTC.apply(null, arguments));
}
return date;
}
// start-of-first-week - start-of-year
function firstWeekOffset(year, dow, doy) {
var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
fwd = 7 + dow - doy,
// first-week day local weekday -- which local weekday is fwd
fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
return -fwdlw + fwd - 1;
}
// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
var localWeekday = (7 + weekday - dow) % 7,
weekOffset = firstWeekOffset(year, dow, doy),
dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
resYear, resDayOfYear;
if (dayOfYear <= 0) {
resYear = year - 1;
resDayOfYear = daysInYear(resYear) + dayOfYear;
} else if (dayOfYear > daysInYear(year)) {
resYear = year + 1;
resDayOfYear = dayOfYear - daysInYear(year);
} else {
resYear = year;
resDayOfYear = dayOfYear;
}
return {
year: resYear,
dayOfYear: resDayOfYear
};
}
function weekOfYear(mom, dow, doy) {
var weekOffset = firstWeekOffset(mom.year(), dow, doy),
week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
resWeek, resYear;
if (week < 1) {
resYear = mom.year() - 1;
resWeek = week + weeksInYear(resYear, dow, doy);
} else if (week > weeksInYear(mom.year(), dow, doy)) {
resWeek = week - weeksInYear(mom.year(), dow, doy);
resYear = mom.year() + 1;
} else {
resYear = mom.year();
resWeek = week;
}
return {
week: resWeek,
year: resYear
};
}
function weeksInYear(year, dow, doy) {
var weekOffset = firstWeekOffset(year, dow, doy),
weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
}
// FORMATTING
addFormatToken('w', ['ww', 2], 'wo', 'week');
addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
// ALIASES
addUnitAlias('week', 'w');
addUnitAlias('isoWeek', 'W');
// PRIORITIES
addUnitPriority('week', 5);
addUnitPriority('isoWeek', 5);
// PARSING
addRegexToken('w', match1to2);
addRegexToken('ww', match1to2, match2);
addRegexToken('W', match1to2);
addRegexToken('WW', match1to2, match2);
addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
week[token.substr(0, 1)] = toInt(input);
});
// HELPERS
// LOCALES
function localeWeek (mom) {
return weekOfYear(mom, this._week.dow, this._week.doy).week;
}
var defaultLocaleWeek = {
dow : 0, // Sunday is the first day of the week.
doy : 6 // The week that contains Jan 6th is the first week of the year.
};
function localeFirstDayOfWeek () {
return this._week.dow;
}
function localeFirstDayOfYear () {
return this._week.doy;
}
// MOMENTS
function getSetWeek (input) {
var week = this.localeData().week(this);
return input == null ? week : this.add((input - week) * 7, 'd');
}
function getSetISOWeek (input) {
var week = weekOfYear(this, 1, 4).week;
return input == null ? week : this.add((input - week) * 7, 'd');
}
// FORMATTING
addFormatToken('d', 0, 'do', 'day');
addFormatToken('dd', 0, 0, function (format) {
return this.localeData().weekdaysMin(this, format);
});
addFormatToken('ddd', 0, 0, function (format) {
return this.localeData().weekdaysShort(this, format);
});
addFormatToken('dddd', 0, 0, function (format) {
return this.localeData().weekdays(this, format);
});
addFormatToken('e', 0, 0, 'weekday');
addFormatToken('E', 0, 0, 'isoWeekday');
// ALIASES
addUnitAlias('day', 'd');
addUnitAlias('weekday', 'e');
addUnitAlias('isoWeekday', 'E');
// PRIORITY
addUnitPriority('day', 11);
addUnitPriority('weekday', 11);
addUnitPriority('isoWeekday', 11);
// PARSING
addRegexToken('d', match1to2);
addRegexToken('e', match1to2);
addRegexToken('E', match1to2);
addRegexToken('dd', function (isStrict, locale) {
return locale.weekdaysMinRegex(isStrict);
});
addRegexToken('ddd', function (isStrict, locale) {
return locale.weekdaysShortRegex(isStrict);
});
addRegexToken('dddd', function (isStrict, locale) {
return locale.weekdaysRegex(isStrict);
});
addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
var weekday = config._locale.weekdaysParse(input, token, config._strict);
// if we didn't get a weekday name, mark the date as invalid
if (weekday != null) {
week.d = weekday;
} else {
getParsingFlags(config).invalidWeekday = input;
}
});
addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
week[token] = toInt(input);
});
// HELPERS
function parseWeekday(input, locale) {
if (typeof input !== 'string') {
return input;
}
if (!isNaN(input)) {
return parseInt(input, 10);
}
input = locale.weekdaysParse(input);
if (typeof input === 'number') {
return input;
}
return null;
}
function parseIsoWeekday(input, locale) {
if (typeof input === 'string') {
return locale.weekdaysParse(input) % 7 || 7;
}
return isNaN(input) ? null : input;
}
// LOCALES
function shiftWeekdays (ws, n) {
return ws.slice(n, 7).concat(ws.slice(0, n));
}
var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
function localeWeekdays (m, format) {
var weekdays = isArray(this._weekdays) ? this._weekdays :
this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];
return (m === true) ? shiftWeekdays(weekdays, this._week.dow)
: (m) ? weekdays[m.day()] : weekdays;
}
var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
function localeWeekdaysShort (m) {
return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)
: (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
}
var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
function localeWeekdaysMin (m) {
return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)
: (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
}
function handleStrictParse$1(weekdayName, format, strict) {
var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
if (!this._weekdaysParse) {
this._weekdaysParse = [];
this._shortWeekdaysParse = [];
this._minWeekdaysParse = [];
for (i = 0; i < 7; ++i) {
mom = createUTC([2000, 1]).day(i);
this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
}
}
if (strict) {
if (format === 'dddd') {
ii = indexOf.call(this._weekdaysParse, llc);
return ii !== -1 ? ii : null;
} else if (format === 'ddd') {
ii = indexOf.call(this._shortWeekdaysParse, llc);
return ii !== -1 ? ii : null;
} else {
ii = indexOf.call(this._minWeekdaysParse, llc);
return ii !== -1 ? ii : null;
}
} else {
if (format === 'dddd') {
ii = indexOf.call(this._weekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._shortWeekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._minWeekdaysParse, llc);
return ii !== -1 ? ii : null;
} else if (format === 'ddd') {
ii = indexOf.call(this._shortWeekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._weekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._minWeekdaysParse, llc);
return ii !== -1 ? ii : null;
} else {
ii = indexOf.call(this._minWeekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._weekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._shortWeekdaysParse, llc);
return ii !== -1 ? ii : null;
}
}
}
function localeWeekdaysParse (weekdayName, format, strict) {
var i, mom, regex;
if (this._weekdaysParseExact) {
return handleStrictParse$1.call(this, weekdayName, format, strict);
}
if (!this._weekdaysParse) {
this._weekdaysParse = [];
this._minWeekdaysParse = [];
this._shortWeekdaysParse = [];
this._fullWeekdaysParse = [];
}
for (i = 0; i < 7; i++) {
// make the regex if we don't have it already
mom = createUTC([2000, 1]).day(i);
if (strict && !this._fullWeekdaysParse[i]) {
this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');
this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');
this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');
}
if (!this._weekdaysParse[i]) {
regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
}
// test the regex
if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
return i;
} else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
return i;
} else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
return i;
} else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
return i;
}
}
}
// MOMENTS
function getSetDayOfWeek (input) {
if (!this.isValid()) {
return input != null ? this : NaN;
}
var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
if (input != null) {
input = parseWeekday(input, this.localeData());
return this.add(input - day, 'd');
} else {
return day;
}
}
function getSetLocaleDayOfWeek (input) {
if (!this.isValid()) {
return input != null ? this : NaN;
}
var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
return input == null ? weekday : this.add(input - weekday, 'd');
}
function getSetISODayOfWeek (input) {
if (!this.isValid()) {
return input != null ? this : NaN;
}
// behaves the same as moment#day except
// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
// as a setter, sunday should belong to the previous week.
if (input != null) {
var weekday = parseIsoWeekday(input, this.localeData());
return this.day(this.day() % 7 ? weekday : weekday - 7);
} else {
return this.day() || 7;
}
}
var defaultWeekdaysRegex = matchWord;
function weekdaysRegex (isStrict) {
if (this._weekdaysParseExact) {
if (!hasOwnProp(this, '_weekdaysRegex')) {
computeWeekdaysParse.call(this);
}
if (isStrict) {
return this._weekdaysStrictRegex;
} else {
return this._weekdaysRegex;
}
} else {
if (!hasOwnProp(this, '_weekdaysRegex')) {
this._weekdaysRegex = defaultWeekdaysRegex;
}
return this._weekdaysStrictRegex && isStrict ?
this._weekdaysStrictRegex : this._weekdaysRegex;
}
}
var defaultWeekdaysShortRegex = matchWord;
function weekdaysShortRegex (isStrict) {
if (this._weekdaysParseExact) {
if (!hasOwnProp(this, '_weekdaysRegex')) {
computeWeekdaysParse.call(this);
}
if (isStrict) {
return this._weekdaysShortStrictRegex;
} else {
return this._weekdaysShortRegex;
}
} else {
if (!hasOwnProp(this, '_weekdaysShortRegex')) {
this._weekdaysShortRegex = defaultWeekdaysShortRegex;
}
return this._weekdaysShortStrictRegex && isStrict ?
this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
}
}
var defaultWeekdaysMinRegex = matchWord;
function weekdaysMinRegex (isStrict) {
if (this._weekdaysParseExact) {
if (!hasOwnProp(this, '_weekdaysRegex')) {
computeWeekdaysParse.call(this);
}
if (isStrict) {
return this._weekdaysMinStrictRegex;
} else {
return this._weekdaysMinRegex;
}
} else {
if (!hasOwnProp(this, '_weekdaysMinRegex')) {
this._weekdaysMinRegex = defaultWeekdaysMinRegex;
}
return this._weekdaysMinStrictRegex && isStrict ?
this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
}
}
function computeWeekdaysParse () {
function cmpLenRev(a, b) {
return b.length - a.length;
}
var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
i, mom, minp, shortp, longp;
for (i = 0; i < 7; i++) {
// make the regex if we don't have it already
mom = createUTC([2000, 1]).day(i);
minp = this.weekdaysMin(mom, '');
shortp = this.weekdaysShort(mom, '');
longp = this.weekdays(mom, '');
minPieces.push(minp);
shortPieces.push(shortp);
longPieces.push(longp);
mixedPieces.push(minp);
mixedPieces.push(shortp);
mixedPieces.push(longp);
}
// Sorting makes sure if one weekday (or abbr) is a prefix of another it
// will match the longer piece.
minPieces.sort(cmpLenRev);
shortPieces.sort(cmpLenRev);
longPieces.sort(cmpLenRev);
mixedPieces.sort(cmpLenRev);
for (i = 0; i < 7; i++) {
shortPieces[i] = regexEscape(shortPieces[i]);
longPieces[i] = regexEscape(longPieces[i]);
mixedPieces[i] = regexEscape(mixedPieces[i]);
}
this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
this._weekdaysShortRegex = this._weekdaysRegex;
this._weekdaysMinRegex = this._weekdaysRegex;
this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
}
// FORMATTING
function hFormat() {
return this.hours() % 12 || 12;
}
function kFormat() {
return this.hours() || 24;
}
addFormatToken('H', ['HH', 2], 0, 'hour');
addFormatToken('h', ['hh', 2], 0, hFormat);
addFormatToken('k', ['kk', 2], 0, kFormat);
addFormatToken('hmm', 0, 0, function () {
return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
});
addFormatToken('hmmss', 0, 0, function () {
return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
zeroFill(this.seconds(), 2);
});
addFormatToken('Hmm', 0, 0, function () {
return '' + this.hours() + zeroFill(this.minutes(), 2);
});
addFormatToken('Hmmss', 0, 0, function () {
return '' + this.hours() + zeroFill(this.minutes(), 2) +
zeroFill(this.seconds(), 2);
});
function meridiem (token, lowercase) {
addFormatToken(token, 0, 0, function () {
return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
});
}
meridiem('a', true);
meridiem('A', false);
// ALIASES
addUnitAlias('hour', 'h');
// PRIORITY
addUnitPriority('hour', 13);
// PARSING
function matchMeridiem (isStrict, locale) {
return locale._meridiemParse;
}
addRegexToken('a', matchMeridiem);
addRegexToken('A', matchMeridiem);
addRegexToken('H', match1to2);
addRegexToken('h', match1to2);
addRegexToken('k', match1to2);
addRegexToken('HH', match1to2, match2);
addRegexToken('hh', match1to2, match2);
addRegexToken('kk', match1to2, match2);
addRegexToken('hmm', match3to4);
addRegexToken('hmmss', match5to6);
addRegexToken('Hmm', match3to4);
addRegexToken('Hmmss', match5to6);
addParseToken(['H', 'HH'], HOUR);
addParseToken(['k', 'kk'], function (input, array, config) {
var kInput = toInt(input);
array[HOUR] = kInput === 24 ? 0 : kInput;
});
addParseToken(['a', 'A'], function (input, array, config) {
config._isPm = config._locale.isPM(input);
config._meridiem = input;
});
addParseToken(['h', 'hh'], function (input, array, config) {
array[HOUR] = toInt(input);
getParsingFlags(config).bigHour = true;
});
addParseToken('hmm', function (input, array, config) {
var pos = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos));
array[MINUTE] = toInt(input.substr(pos));
getParsingFlags(config).bigHour = true;
});
addParseToken('hmmss', function (input, array, config) {
var pos1 = input.length - 4;
var pos2 = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos1));
array[MINUTE] = toInt(input.substr(pos1, 2));
array[SECOND] = toInt(input.substr(pos2));
getParsingFlags(config).bigHour = true;
});
addParseToken('Hmm', function (input, array, config) {
var pos = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos));
array[MINUTE] = toInt(input.substr(pos));
});
addParseToken('Hmmss', function (input, array, config) {
var pos1 = input.length - 4;
var pos2 = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos1));
array[MINUTE] = toInt(input.substr(pos1, 2));
array[SECOND] = toInt(input.substr(pos2));
});
// LOCALES
function localeIsPM (input) {
// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
// Using charAt should be more compatible.
return ((input + '').toLowerCase().charAt(0) === 'p');
}
var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
function localeMeridiem (hours, minutes, isLower) {
if (hours > 11) {
return isLower ? 'pm' : 'PM';
} else {
return isLower ? 'am' : 'AM';
}
}
// MOMENTS
// Setting the hour should keep the time, because the user explicitly
// specified which hour they want. So trying to maintain the same hour (in
// a new timezone) makes sense. Adding/subtracting hours does not follow
// this rule.
var getSetHour = makeGetSet('Hours', true);
var baseConfig = {
calendar: defaultCalendar,
longDateFormat: defaultLongDateFormat,
invalidDate: defaultInvalidDate,
ordinal: defaultOrdinal,
dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
relativeTime: defaultRelativeTime,
months: defaultLocaleMonths,
monthsShort: defaultLocaleMonthsShort,
week: defaultLocaleWeek,
weekdays: defaultLocaleWeekdays,
weekdaysMin: defaultLocaleWeekdaysMin,
weekdaysShort: defaultLocaleWeekdaysShort,
meridiemParse: defaultLocaleMeridiemParse
};
// internal storage for locale config files
var locales = {};
var localeFamilies = {};
var globalLocale;
function normalizeLocale(key) {
return key ? key.toLowerCase().replace('_', '-') : key;
}
// pick the locale from the array
// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
function chooseLocale(names) {
var i = 0, j, next, locale, split;
while (i < names.length) {
split = normalizeLocale(names[i]).split('-');
j = split.length;
next = normalizeLocale(names[i + 1]);
next = next ? next.split('-') : null;
while (j > 0) {
locale = loadLocale(split.slice(0, j).join('-'));
if (locale) {
return locale;
}
if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
//the next array item is better than a shallower substring of this one
break;
}
j--;
}
i++;
}
return globalLocale;
}
function loadLocale(name) {
var oldLocale = null;
// TODO: Find a better way to register and load all the locales in Node
if (!locales[name] && (typeof module !== 'undefined') &&
module && module.exports) {
try {
oldLocale = globalLocale._abbr;
var aliasedRequire = require;
__webpack_require__(19)("./" + name);
getSetGlobalLocale(oldLocale);
} catch (e) {}
}
return locales[name];
}
// This function will load locale and then set the global locale. If
// no arguments are passed in, it will simply return the current global
// locale key.
function getSetGlobalLocale (key, values) {
var data;
if (key) {
if (isUndefined(values)) {
data = getLocale(key);
}
else {
data = defineLocale(key, values);
}
if (data) {
// moment.duration._locale = moment._locale = data;
globalLocale = data;
}
else {
if ((typeof console !== 'undefined') && console.warn) {
//warn user if arguments are passed but the locale could not be set
console.warn('Locale ' + key + ' not found. Did you forget to load it?');
}
}
}
return globalLocale._abbr;
}
function defineLocale (name, config) {
if (config !== null) {
var locale, parentConfig = baseConfig;
config.abbr = name;
if (locales[name] != null) {
deprecateSimple('defineLocaleOverride',
'use moment.updateLocale(localeName, config) to change ' +
'an existing locale. moment.defineLocale(localeName, ' +
'config) should only be used for creating a new locale ' +
'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
parentConfig = locales[name]._config;
} else if (config.parentLocale != null) {
if (locales[config.parentLocale] != null) {
parentConfig = locales[config.parentLocale]._config;
} else {
locale = loadLocale(config.parentLocale);
if (locale != null) {
parentConfig = locale._config;
} else {
if (!localeFamilies[config.parentLocale]) {
localeFamilies[config.parentLocale] = [];
}
localeFamilies[config.parentLocale].push({
name: name,
config: config
});
return null;
}
}
}
locales[name] = new Locale(mergeConfigs(parentConfig, config));
if (localeFamilies[name]) {
localeFamilies[name].forEach(function (x) {
defineLocale(x.name, x.config);
});
}
// backwards compat for now: also set the locale
// make sure we set the locale AFTER all child locales have been
// created, so we won't end up with the child locale set.
getSetGlobalLocale(name);
return locales[name];
} else {
// useful for testing
delete locales[name];
return null;
}
}
function updateLocale(name, config) {
if (config != null) {
var locale, tmpLocale, parentConfig = baseConfig;
// MERGE
tmpLocale = loadLocale(name);
if (tmpLocale != null) {
parentConfig = tmpLocale._config;
}
config = mergeConfigs(parentConfig, config);
locale = new Locale(config);
locale.parentLocale = locales[name];
locales[name] = locale;
// backwards compat for now: also set the locale
getSetGlobalLocale(name);
} else {
// pass null for config to unupdate, useful for tests
if (locales[name] != null) {
if (locales[name].parentLocale != null) {
locales[name] = locales[name].parentLocale;
} else if (locales[name] != null) {
delete locales[name];
}
}
}
return locales[name];
}
// returns locale data
function getLocale (key) {
var locale;
if (key && key._locale && key._locale._abbr) {
key = key._locale._abbr;
}
if (!key) {
return globalLocale;
}
if (!isArray(key)) {
//short-circuit everything else
locale = loadLocale(key);
if (locale) {
return locale;
}
key = [key];
}
return chooseLocale(key);
}
function listLocales() {
return keys(locales);
}
function checkOverflow (m) {
var overflow;
var a = m._a;
if (a && getParsingFlags(m).overflow === -2) {
overflow =
a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
-1;
if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
overflow = DATE;
}
if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
overflow = WEEK;
}
if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
overflow = WEEKDAY;
}
getParsingFlags(m).overflow = overflow;
}
return m;
}
// Pick the first defined of two or three arguments.
function defaults(a, b, c) {
if (a != null) {
return a;
}
if (b != null) {
return b;
}
return c;
}
function currentDateArray(config) {
// hooks is actually the exported moment object
var nowValue = new Date(hooks.now());
if (config._useUTC) {
return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
}
return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
}
// convert an array to a date.
// the array should mirror the parameters below
// note: all values past the year are optional and will default to the lowest possible value.
// [year, month, day , hour, minute, second, millisecond]
function configFromArray (config) {
var i, date, input = [], currentDate, expectedWeekday, yearToUse;
if (config._d) {
return;
}
currentDate = currentDateArray(config);
//compute day of the year from weeks and weekdays
if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
dayOfYearFromWeekInfo(config);
}
//if the day of the year is set, figure out what it is
if (config._dayOfYear != null) {
yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
getParsingFlags(config)._overflowDayOfYear = true;
}
date = createUTCDate(yearToUse, 0, config._dayOfYear);
config._a[MONTH] = date.getUTCMonth();
config._a[DATE] = date.getUTCDate();
}
// Default to current date.
// * if no year, month, day of month are given, default to today
// * if day of month is given, default month and year
// * if month is given, default only year
// * if year is given, don't default anything
for (i = 0; i < 3 && config._a[i] == null; ++i) {
config._a[i] = input[i] = currentDate[i];
}
// Zero out whatever was not defaulted, including time
for (; i < 7; i++) {
config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
}
// Check for 24:00:00.000
if (config._a[HOUR] === 24 &&
config._a[MINUTE] === 0 &&
config._a[SECOND] === 0 &&
config._a[MILLISECOND] === 0) {
config._nextDay = true;
config._a[HOUR] = 0;
}
config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();
// Apply timezone offset from input. The actual utcOffset can be changed
// with parseZone.
if (config._tzm != null) {
config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
}
if (config._nextDay) {
config._a[HOUR] = 24;
}
// check for mismatching day of week
if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {
getParsingFlags(config).weekdayMismatch = true;
}
}
function dayOfYearFromWeekInfo(config) {
var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
w = config._w;
if (w.GG != null || w.W != null || w.E != null) {
dow = 1;
doy = 4;
// TODO: We need to take the current isoWeekYear, but that depends on
// how we interpret now (local, utc, fixed offset). So create
// a now version of current config (take local/utc/offset flags, and
// create now).
weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
week = defaults(w.W, 1);
weekday = defaults(w.E, 1);
if (weekday < 1 || weekday > 7) {
weekdayOverflow = true;
}
} else {
dow = config._locale._week.dow;
doy = config._locale._week.doy;
var curWeek = weekOfYear(createLocal(), dow, doy);
weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
// Default to current week.
week = defaults(w.w, curWeek.week);
if (w.d != null) {
// weekday -- low day numbers are considered next week
weekday = w.d;
if (weekday < 0 || weekday > 6) {
weekdayOverflow = true;
}
} else if (w.e != null) {
// local weekday -- counting starts from beginning of week
weekday = w.e + dow;
if (w.e < 0 || w.e > 6) {
weekdayOverflow = true;
}
} else {
// default to beginning of week
weekday = dow;
}
}
if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
getParsingFlags(config)._overflowWeeks = true;
} else if (weekdayOverflow != null) {
getParsingFlags(config)._overflowWeekday = true;
} else {
temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
config._a[YEAR] = temp.year;
config._dayOfYear = temp.dayOfYear;
}
}
// iso 8601 regex
// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;
var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;
var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
var isoDates = [
['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
['GGGG-[W]WW', /\d{4}-W\d\d/, false],
['YYYY-DDD', /\d{4}-\d{3}/],
['YYYY-MM', /\d{4}-\d\d/, false],
['YYYYYYMMDD', /[+-]\d{10}/],
['YYYYMMDD', /\d{8}/],
// YYYYMM is NOT allowed by the standard
['GGGG[W]WWE', /\d{4}W\d{3}/],
['GGGG[W]WW', /\d{4}W\d{2}/, false],
['YYYYDDD', /\d{7}/]
];
// iso time formats and regexes
var isoTimes = [
['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
['HH:mm:ss', /\d\d:\d\d:\d\d/],
['HH:mm', /\d\d:\d\d/],
['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
['HHmmss', /\d\d\d\d\d\d/],
['HHmm', /\d\d\d\d/],
['HH', /\d\d/]
];
var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
// date from iso format
function configFromISO(config) {
var i, l,
string = config._i,
match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
allowTime, dateFormat, timeFormat, tzFormat;
if (match) {
getParsingFlags(config).iso = true;
for (i = 0, l = isoDates.length; i < l; i++) {
if (isoDates[i][1].exec(match[1])) {
dateFormat = isoDates[i][0];
allowTime = isoDates[i][2] !== false;
break;
}
}
if (dateFormat == null) {
config._isValid = false;
return;
}
if (match[3]) {
for (i = 0, l = isoTimes.length; i < l; i++) {
if (isoTimes[i][1].exec(match[3])) {
// match[2] should be 'T' or space
timeFormat = (match[2] || ' ') + isoTimes[i][0];
break;
}
}
if (timeFormat == null) {
config._isValid = false;
return;
}
}
if (!allowTime && timeFormat != null) {
config._isValid = false;
return;
}
if (match[4]) {
if (tzRegex.exec(match[4])) {
tzFormat = 'Z';
} else {
config._isValid = false;
return;
}
}
config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
configFromStringAndFormat(config);
} else {
config._isValid = false;
}
}
// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;
function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
var result = [
untruncateYear(yearStr),
defaultLocaleMonthsShort.indexOf(monthStr),
parseInt(dayStr, 10),
parseInt(hourStr, 10),
parseInt(minuteStr, 10)
];
if (secondStr) {
result.push(parseInt(secondStr, 10));
}
return result;
}
function untruncateYear(yearStr) {
var year = parseInt(yearStr, 10);
if (year <= 49) {
return 2000 + year;
} else if (year <= 999) {
return 1900 + year;
}
return year;
}
function preprocessRFC2822(s) {
// Remove comments and folding whitespace and replace multiple-spaces with a single space
return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
function checkWeekday(weekdayStr, parsedInput, config) {
if (weekdayStr) {
// TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
if (weekdayProvided !== weekdayActual) {
getParsingFlags(config).weekdayMismatch = true;
config._isValid = false;
return false;
}
}
return true;
}
var obsOffsets = {
UT: 0,
GMT: 0,
EDT: -4 * 60,
EST: -5 * 60,
CDT: -5 * 60,
CST: -6 * 60,
MDT: -6 * 60,
MST: -7 * 60,
PDT: -7 * 60,
PST: -8 * 60
};
function calculateOffset(obsOffset, militaryOffset, numOffset) {
if (obsOffset) {
return obsOffsets[obsOffset];
} else if (militaryOffset) {
// the only allowed military tz is Z
return 0;
} else {
var hm = parseInt(numOffset, 10);
var m = hm % 100, h = (hm - m) / 100;
return h * 60 + m;
}
}
// date and time from ref 2822 format
function configFromRFC2822(config) {
var match = rfc2822.exec(preprocessRFC2822(config._i));
if (match) {
var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
if (!checkWeekday(match[1], parsedArray, config)) {
return;
}
config._a = parsedArray;
config._tzm = calculateOffset(match[8], match[9], match[10]);
config._d = createUTCDate.apply(null, config._a);
config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
getParsingFlags(config).rfc2822 = true;
} else {
config._isValid = false;
}
}
// date from iso format or fallback
function configFromString(config) {
var matched = aspNetJsonRegex.exec(config._i);
if (matched !== null) {
config._d = new Date(+matched[1]);
return;
}
configFromISO(config);
if (config._isValid === false) {
delete config._isValid;
} else {
return;
}
configFromRFC2822(config);
if (config._isValid === false) {
delete config._isValid;
} else {
return;
}
// Final attempt, use Input Fallback
hooks.createFromInputFallback(config);
}
hooks.createFromInputFallback = deprecate(
'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
'discouraged and will be removed in an upcoming major release. Please refer to ' +
'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
function (config) {
config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
}
);
// constant that refers to the ISO standard
hooks.ISO_8601 = function () {};
// constant that refers to the RFC 2822 form
hooks.RFC_2822 = function () {};
// date from string and format string
function configFromStringAndFormat(config) {
// TODO: Move this to another part of the creation flow to prevent circular deps
if (config._f === hooks.ISO_8601) {
configFromISO(config);
return;
}
if (config._f === hooks.RFC_2822) {
configFromRFC2822(config);
return;
}
config._a = [];
getParsingFlags(config).empty = true;
// This array is used to make a Date, either with `new Date` or `Date.UTC`
var string = '' + config._i,
i, parsedInput, tokens, token, skipped,
stringLength = string.length,
totalParsedInputLength = 0;
tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
for (i = 0; i < tokens.length; i++) {
token = tokens[i];
parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
// console.log('token', token, 'parsedInput', parsedInput,
// 'regex', getParseRegexForToken(token, config));
if (parsedInput) {
skipped = string.substr(0, string.indexOf(parsedInput));
if (skipped.length > 0) {
getParsingFlags(config).unusedInput.push(skipped);
}
string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
totalParsedInputLength += parsedInput.length;
}
// don't parse if it's not a known token
if (formatTokenFunctions[token]) {
if (parsedInput) {
getParsingFlags(config).empty = false;
}
else {
getParsingFlags(config).unusedTokens.push(token);
}
addTimeToArrayFromToken(token, parsedInput, config);
}
else if (config._strict && !parsedInput) {
getParsingFlags(config).unusedTokens.push(token);
}
}
// add remaining unparsed input length to the string
getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
if (string.length > 0) {
getParsingFlags(config).unusedInput.push(string);
}
// clear _12h flag if hour is <= 12
if (config._a[HOUR] <= 12 &&
getParsingFlags(config).bigHour === true &&
config._a[HOUR] > 0) {
getParsingFlags(config).bigHour = undefined;
}
getParsingFlags(config).parsedDateParts = config._a.slice(0);
getParsingFlags(config).meridiem = config._meridiem;
// handle meridiem
config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
configFromArray(config);
checkOverflow(config);
}
function meridiemFixWrap (locale, hour, meridiem) {
var isPm;
if (meridiem == null) {
// nothing to do
return hour;
}
if (locale.meridiemHour != null) {
return locale.meridiemHour(hour, meridiem);
} else if (locale.isPM != null) {
// Fallback
isPm = locale.isPM(meridiem);
if (isPm && hour < 12) {
hour += 12;
}
if (!isPm && hour === 12) {
hour = 0;
}
return hour;
} else {
// this is not supposed to happen
return hour;
}
}
// date from string and array of format strings
function configFromStringAndArray(config) {
var tempConfig,
bestMoment,
scoreToBeat,
i,
currentScore;
if (config._f.length === 0) {
getParsingFlags(config).invalidFormat = true;
config._d = new Date(NaN);
return;
}
for (i = 0; i < config._f.length; i++) {
currentScore = 0;
tempConfig = copyConfig({}, config);
if (config._useUTC != null) {
tempConfig._useUTC = config._useUTC;
}
tempConfig._f = config._f[i];
configFromStringAndFormat(tempConfig);
if (!isValid(tempConfig)) {
continue;
}
// if there is any input that was not parsed add a penalty for that format
currentScore += getParsingFlags(tempConfig).charsLeftOver;
//or tokens
currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
getParsingFlags(tempConfig).score = currentScore;
if (scoreToBeat == null || currentScore < scoreToBeat) {
scoreToBeat = currentScore;
bestMoment = tempConfig;
}
}
extend(config, bestMoment || tempConfig);
}
function configFromObject(config) {
if (config._d) {
return;
}
var i = normalizeObjectUnits(config._i);
config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
return obj && parseInt(obj, 10);
});
configFromArray(config);
}
function createFromConfig (config) {
var res = new Moment(checkOverflow(prepareConfig(config)));
if (res._nextDay) {
// Adding is smart enough around DST
res.add(1, 'd');
res._nextDay = undefined;
}
return res;
}
function prepareConfig (config) {
var input = config._i,
format = config._f;
config._locale = config._locale || getLocale(config._l);
if (input === null || (format === undefined && input === '')) {
return createInvalid({nullInput: true});
}
if (typeof input === 'string') {
config._i = input = config._locale.preparse(input);
}
if (isMoment(input)) {
return new Moment(checkOverflow(input));
} else if (isDate(input)) {
config._d = input;
} else if (isArray(format)) {
configFromStringAndArray(config);
} else if (format) {
configFromStringAndFormat(config);
} else {
configFromInput(config);
}
if (!isValid(config)) {
config._d = null;
}
return config;
}
function configFromInput(config) {
var input = config._i;
if (isUndefined(input)) {
config._d = new Date(hooks.now());
} else if (isDate(input)) {
config._d = new Date(input.valueOf());
} else if (typeof input === 'string') {
configFromString(config);
} else if (isArray(input)) {
config._a = map(input.slice(0), function (obj) {
return parseInt(obj, 10);
});
configFromArray(config);
} else if (isObject(input)) {
configFromObject(config);
} else if (isNumber(input)) {
// from milliseconds
config._d = new Date(input);
} else {
hooks.createFromInputFallback(config);
}
}
function createLocalOrUTC (input, format, locale, strict, isUTC) {
var c = {};
if (locale === true || locale === false) {
strict = locale;
locale = undefined;
}
if ((isObject(input) && isObjectEmpty(input)) ||
(isArray(input) && input.length === 0)) {
input = undefined;
}
// object construction must be done this way.
// https://github.com/moment/moment/issues/1423
c._isAMomentObject = true;
c._useUTC = c._isUTC = isUTC;
c._l = locale;
c._i = input;
c._f = format;
c._strict = strict;
return createFromConfig(c);
}
function createLocal (input, format, locale, strict) {
return createLocalOrUTC(input, format, locale, strict, false);
}
var prototypeMin = deprecate(
'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
function () {
var other = createLocal.apply(null, arguments);
if (this.isValid() && other.isValid()) {
return other < this ? this : other;
} else {
return createInvalid();
}
}
);
var prototypeMax = deprecate(
'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
function () {
var other = createLocal.apply(null, arguments);
if (this.isValid() && other.isValid()) {
return other > this ? this : other;
} else {
return createInvalid();
}
}
);
// Pick a moment m from moments so that m[fn](other) is true for all
// other. This relies on the function fn to be transitive.
//
// moments should either be an array of moment objects or an array, whose
// first element is an array of moment objects.
function pickBy(fn, moments) {
var res, i;
if (moments.length === 1 && isArray(moments[0])) {
moments = moments[0];
}
if (!moments.length) {
return createLocal();
}
res = moments[0];
for (i = 1; i < moments.length; ++i) {
if (!moments[i].isValid() || moments[i][fn](res)) {
res = moments[i];
}
}
return res;
}
// TODO: Use [].sort instead?
function min () {
var args = [].slice.call(arguments, 0);
return pickBy('isBefore', args);
}
function max () {
var args = [].slice.call(arguments, 0);
return pickBy('isAfter', args);
}
var now = function () {
return Date.now ? Date.now() : +(new Date());
};
var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
function isDurationValid(m) {
for (var key in m) {
if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
return false;
}
}
var unitHasDecimal = false;
for (var i = 0; i < ordering.length; ++i) {
if (m[ordering[i]]) {
if (unitHasDecimal) {
return false; // only allow non-integers for smallest unit
}
if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
unitHasDecimal = true;
}
}
}
return true;
}
function isValid$1() {
return this._isValid;
}
function createInvalid$1() {
return createDuration(NaN);
}
function Duration (duration) {
var normalizedInput = normalizeObjectUnits(duration),
years = normalizedInput.year || 0,
quarters = normalizedInput.quarter || 0,
months = normalizedInput.month || 0,
weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
days = normalizedInput.day || 0,
hours = normalizedInput.hour || 0,
minutes = normalizedInput.minute || 0,
seconds = normalizedInput.second || 0,
milliseconds = normalizedInput.millisecond || 0;
this._isValid = isDurationValid(normalizedInput);
// representation for dateAddRemove
this._milliseconds = +milliseconds +
seconds * 1e3 + // 1000
minutes * 6e4 + // 1000 * 60
hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
// Because of dateAddRemove treats 24 hours as different from a
// day when working around DST, we need to store them separately
this._days = +days +
weeks * 7;
// It is impossible to translate months into days without knowing
// which months you are are talking about, so we have to store
// it separately.
this._months = +months +
quarters * 3 +
years * 12;
this._data = {};
this._locale = getLocale();
this._bubble();
}
function isDuration (obj) {
return obj instanceof Duration;
}
function absRound (number) {
if (number < 0) {
return Math.round(-1 * number) * -1;
} else {
return Math.round(number);
}
}
// FORMATTING
function offset (token, separator) {
addFormatToken(token, 0, 0, function () {
var offset = this.utcOffset();
var sign = '+';
if (offset < 0) {
offset = -offset;
sign = '-';
}
return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
});
}
offset('Z', ':');
offset('ZZ', '');
// PARSING
addRegexToken('Z', matchShortOffset);
addRegexToken('ZZ', matchShortOffset);
addParseToken(['Z', 'ZZ'], function (input, array, config) {
config._useUTC = true;
config._tzm = offsetFromString(matchShortOffset, input);
});
// HELPERS
// timezone chunker
// '+10:00' > ['10', '00']
// '-1530' > ['-15', '30']
var chunkOffset = /([\+\-]|\d\d)/gi;
function offsetFromString(matcher, string) {
var matches = (string || '').match(matcher);
if (matches === null) {
return null;
}
var chunk = matches[matches.length - 1] || [];
var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
var minutes = +(parts[1] * 60) + toInt(parts[2]);
return minutes === 0 ?
0 :
parts[0] === '+' ? minutes : -minutes;
}
// Return a moment from input, that is local/utc/zone equivalent to model.
function cloneWithOffset(input, model) {
var res, diff;
if (model._isUTC) {
res = model.clone();
diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
// Use low-level api, because this fn is low-level api.
res._d.setTime(res._d.valueOf() + diff);
hooks.updateOffset(res, false);
return res;
} else {
return createLocal(input).local();
}
}
function getDateOffset (m) {
// On Firefox.24 Date#getTimezoneOffset returns a floating point.
// https://github.com/moment/moment/pull/1871
return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
}
// HOOKS
// This function will be called whenever a moment is mutated.
// It is intended to keep the offset in sync with the timezone.
hooks.updateOffset = function () {};
// MOMENTS
// keepLocalTime = true means only change the timezone, without
// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
// +0200, so we adjust the time as needed, to be valid.
//
// Keeping the time actually adds/subtracts (one hour)
// from the actual represented time. That is why we call updateOffset
// a second time. In case it wants us to change the offset again
// _changeInProgress == true case, then we have to adjust, because
// there is no such time in the given timezone.
function getSetOffset (input, keepLocalTime, keepMinutes) {
var offset = this._offset || 0,
localAdjust;
if (!this.isValid()) {
return input != null ? this : NaN;
}
if (input != null) {
if (typeof input === 'string') {
input = offsetFromString(matchShortOffset, input);
if (input === null) {
return this;
}
} else if (Math.abs(input) < 16 && !keepMinutes) {
input = input * 60;
}
if (!this._isUTC && keepLocalTime) {
localAdjust = getDateOffset(this);
}
this._offset = input;
this._isUTC = true;
if (localAdjust != null) {
this.add(localAdjust, 'm');
}
if (offset !== input) {
if (!keepLocalTime || this._changeInProgress) {
addSubtract(this, createDuration(input - offset, 'm'), 1, false);
} else if (!this._changeInProgress) {
this._changeInProgress = true;
hooks.updateOffset(this, true);
this._changeInProgress = null;
}
}
return this;
} else {
return this._isUTC ? offset : getDateOffset(this);
}
}
function getSetZone (input, keepLocalTime) {
if (input != null) {
if (typeof input !== 'string') {
input = -input;
}
this.utcOffset(input, keepLocalTime);
return this;
} else {
return -this.utcOffset();
}
}
function setOffsetToUTC (keepLocalTime) {
return this.utcOffset(0, keepLocalTime);
}
function setOffsetToLocal (keepLocalTime) {
if (this._isUTC) {
this.utcOffset(0, keepLocalTime);
this._isUTC = false;
if (keepLocalTime) {
this.subtract(getDateOffset(this), 'm');
}
}
return this;
}
function setOffsetToParsedOffset () {
if (this._tzm != null) {
this.utcOffset(this._tzm, false, true);
} else if (typeof this._i === 'string') {
var tZone = offsetFromString(matchOffset, this._i);
if (tZone != null) {
this.utcOffset(tZone);
}
else {
this.utcOffset(0, true);
}
}
return this;
}
function hasAlignedHourOffset (input) {
if (!this.isValid()) {
return false;
}
input = input ? createLocal(input).utcOffset() : 0;
return (this.utcOffset() - input) % 60 === 0;
}
function isDaylightSavingTime () {
return (
this.utcOffset() > this.clone().month(0).utcOffset() ||
this.utcOffset() > this.clone().month(5).utcOffset()
);
}
function isDaylightSavingTimeShifted () {
if (!isUndefined(this._isDSTShifted)) {
return this._isDSTShifted;
}
var c = {};
copyConfig(c, this);
c = prepareConfig(c);
if (c._a) {
var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
this._isDSTShifted = this.isValid() &&
compareArrays(c._a, other.toArray()) > 0;
} else {
this._isDSTShifted = false;
}
return this._isDSTShifted;
}
function isLocal () {
return this.isValid() ? !this._isUTC : false;
}
function isUtcOffset () {
return this.isValid() ? this._isUTC : false;
}
function isUtc () {
return this.isValid() ? this._isUTC && this._offset === 0 : false;
}
// ASP.NET json date format regex
var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
// and further modified to allow for strings containing both week and day
var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
function createDuration (input, key) {
var duration = input,
// matching against regexp is expensive, do it on demand
match = null,
sign,
ret,
diffRes;
if (isDuration(input)) {
duration = {
ms : input._milliseconds,
d : input._days,
M : input._months
};
} else if (isNumber(input)) {
duration = {};
if (key) {
duration[key] = input;
} else {
duration.milliseconds = input;
}
} else if (!!(match = aspNetRegex.exec(input))) {
sign = (match[1] === '-') ? -1 : 1;
duration = {
y : 0,
d : toInt(match[DATE]) * sign,
h : toInt(match[HOUR]) * sign,
m : toInt(match[MINUTE]) * sign,
s : toInt(match[SECOND]) * sign,
ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
};
} else if (!!(match = isoRegex.exec(input))) {
sign = (match[1] === '-') ? -1 : 1;
duration = {
y : parseIso(match[2], sign),
M : parseIso(match[3], sign),
w : parseIso(match[4], sign),
d : parseIso(match[5], sign),
h : parseIso(match[6], sign),
m : parseIso(match[7], sign),
s : parseIso(match[8], sign)
};
} else if (duration == null) {// checks for null or undefined
duration = {};
} else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
duration = {};
duration.ms = diffRes.milliseconds;
duration.M = diffRes.months;
}
ret = new Duration(duration);
if (isDuration(input) && hasOwnProp(input, '_locale')) {
ret._locale = input._locale;
}
return ret;
}
createDuration.fn = Duration.prototype;
createDuration.invalid = createInvalid$1;
function parseIso (inp, sign) {
// We'd normally use ~~inp for this, but unfortunately it also
// converts floats to ints.
// inp may be undefined, so careful calling replace on it.
var res = inp && parseFloat(inp.replace(',', '.'));
// apply sign while we're at it
return (isNaN(res) ? 0 : res) * sign;
}
function positiveMomentsDifference(base, other) {
var res = {};
res.months = other.month() - base.month() +
(other.year() - base.year()) * 12;
if (base.clone().add(res.months, 'M').isAfter(other)) {
--res.months;
}
res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
return res;
}
function momentsDifference(base, other) {
var res;
if (!(base.isValid() && other.isValid())) {
return {milliseconds: 0, months: 0};
}
other = cloneWithOffset(other, base);
if (base.isBefore(other)) {
res = positiveMomentsDifference(base, other);
} else {
res = positiveMomentsDifference(other, base);
res.milliseconds = -res.milliseconds;
res.months = -res.months;
}
return res;
}
// TODO: remove 'name' arg after deprecation is removed
function createAdder(direction, name) {
return function (val, period) {
var dur, tmp;
//invert the arguments, but complain about it
if (period !== null && !isNaN(+period)) {
deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
tmp = val; val = period; period = tmp;
}
val = typeof val === 'string' ? +val : val;
dur = createDuration(val, period);
addSubtract(this, dur, direction);
return this;
};
}
function addSubtract (mom, duration, isAdding, updateOffset) {
var milliseconds = duration._milliseconds,
days = absRound(duration._days),
months = absRound(duration._months);
if (!mom.isValid()) {
// No op
return;
}
updateOffset = updateOffset == null ? true : updateOffset;
if (months) {
setMonth(mom, get(mom, 'Month') + months * isAdding);
}
if (days) {
set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
}
if (milliseconds) {
mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
}
if (updateOffset) {
hooks.updateOffset(mom, days || months);
}
}
var add = createAdder(1, 'add');
var subtract = createAdder(-1, 'subtract');
function getCalendarFormat(myMoment, now) {
var diff = myMoment.diff(now, 'days', true);
return diff < -6 ? 'sameElse' :
diff < -1 ? 'lastWeek' :
diff < 0 ? 'lastDay' :
diff < 1 ? 'sameDay' :
diff < 2 ? 'nextDay' :
diff < 7 ? 'nextWeek' : 'sameElse';
}
function calendar$1 (time, formats) {
// We want to compare the start of today, vs this.
// Getting start-of-today depends on whether we're local/utc/offset or not.
var now = time || createLocal(),
sod = cloneWithOffset(now, this).startOf('day'),
format = hooks.calendarFormat(this, sod) || 'sameElse';
var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
}
function clone () {
return new Moment(this);
}
function isAfter (input, units) {
var localInput = isMoment(input) ? input : createLocal(input);
if (!(this.isValid() && localInput.isValid())) {
return false;
}
units = normalizeUnits(units) || 'millisecond';
if (units === 'millisecond') {
return this.valueOf() > localInput.valueOf();
} else {
return localInput.valueOf() < this.clone().startOf(units).valueOf();
}
}
function isBefore (input, units) {
var localInput = isMoment(input) ? input : createLocal(input);
if (!(this.isValid() && localInput.isValid())) {
return false;
}
units = normalizeUnits(units) || 'millisecond';
if (units === 'millisecond') {
return this.valueOf() < localInput.valueOf();
} else {
return this.clone().endOf(units).valueOf() < localInput.valueOf();
}
}
function isBetween (from, to, units, inclusivity) {
var localFrom = isMoment(from) ? from : createLocal(from),
localTo = isMoment(to) ? to : createLocal(to);
if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
return false;
}
inclusivity = inclusivity || '()';
return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&
(inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));
}
function isSame (input, units) {
var localInput = isMoment(input) ? input : createLocal(input),
inputMs;
if (!(this.isValid() && localInput.isValid())) {
return false;
}
units = normalizeUnits(units) || 'millisecond';
if (units === 'millisecond') {
return this.valueOf() === localInput.valueOf();
} else {
inputMs = localInput.valueOf();
return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
}
}
function isSameOrAfter (input, units) {
return this.isSame(input, units) || this.isAfter(input, units);
}
function isSameOrBefore (input, units) {
return this.isSame(input, units) || this.isBefore(input, units);
}
function diff (input, units, asFloat) {
var that,
zoneDelta,
output;
if (!this.isValid()) {
return NaN;
}
that = cloneWithOffset(input, this);
if (!that.isValid()) {
return NaN;
}
zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
units = normalizeUnits(units);
switch (units) {
case 'year': output = monthDiff(this, that) / 12; break;
case 'month': output = monthDiff(this, that); break;
case 'quarter': output = monthDiff(this, that) / 3; break;
case 'second': output = (this - that) / 1e3; break; // 1000
case 'minute': output = (this - that) / 6e4; break; // 1000 * 60
case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60
case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst
case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst
default: output = this - that;
}
return asFloat ? output : absFloor(output);
}
function monthDiff (a, b) {
// difference in months
var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
// b is in (anchor - 1 month, anchor + 1 month)
anchor = a.clone().add(wholeMonthDiff, 'months'),
anchor2, adjust;
if (b - anchor < 0) {
anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
// linear across the month
adjust = (b - anchor) / (anchor - anchor2);
} else {
anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
// linear across the month
adjust = (b - anchor) / (anchor2 - anchor);
}
//check for negative zero, return zero if negative zero
return -(wholeMonthDiff + adjust) || 0;
}
hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
function toString () {
return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
}
function toISOString(keepOffset) {
if (!this.isValid()) {
return null;
}
var utc = keepOffset !== true;
var m = utc ? this.clone().utc() : this;
if (m.year() < 0 || m.year() > 9999) {
return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');
}
if (isFunction(Date.prototype.toISOString)) {
// native implementation is ~50x faster, use it when we can
if (utc) {
return this.toDate().toISOString();
} else {
return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));
}
}
return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');
}
/**
* Return a human readable representation of a moment that can
* also be evaluated to get a new moment which is the same
*
* @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
*/
function inspect () {
if (!this.isValid()) {
return 'moment.invalid(/* ' + this._i + ' */)';
}
var func = 'moment';
var zone = '';
if (!this.isLocal()) {
func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
zone = 'Z';
}
var prefix = '[' + func + '("]';
var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
var datetime = '-MM-DD[T]HH:mm:ss.SSS';
var suffix = zone + '[")]';
return this.format(prefix + year + datetime + suffix);
}
function format (inputString) {
if (!inputString) {
inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
}
var output = formatMoment(this, inputString);
return this.localeData().postformat(output);
}
function from (time, withoutSuffix) {
if (this.isValid() &&
((isMoment(time) && time.isValid()) ||
createLocal(time).isValid())) {
return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
} else {
return this.localeData().invalidDate();
}
}
function fromNow (withoutSuffix) {
return this.from(createLocal(), withoutSuffix);
}
function to (time, withoutSuffix) {
if (this.isValid() &&
((isMoment(time) && time.isValid()) ||
createLocal(time).isValid())) {
return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
} else {
return this.localeData().invalidDate();
}
}
function toNow (withoutSuffix) {
return this.to(createLocal(), withoutSuffix);
}
// If passed a locale key, it will set the locale for this
// instance. Otherwise, it will return the locale configuration
// variables for this instance.
function locale (key) {
var newLocaleData;
if (key === undefined) {
return this._locale._abbr;
} else {
newLocaleData = getLocale(key);
if (newLocaleData != null) {
this._locale = newLocaleData;
}
return this;
}
}
var lang = deprecate(
'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
function (key) {
if (key === undefined) {
return this.localeData();
} else {
return this.locale(key);
}
}
);
function localeData () {
return this._locale;
}
var MS_PER_SECOND = 1000;
var MS_PER_MINUTE = 60 * MS_PER_SECOND;
var MS_PER_HOUR = 60 * MS_PER_MINUTE;
var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
// actual modulo - handles negative numbers (for dates before 1970):
function mod$1(dividend, divisor) {
return (dividend % divisor + divisor) % divisor;
}
function localStartOfDate(y, m, d) {
// the date constructor remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0) {
// preserve leap years using a full 400 year cycle, then reset
return new Date(y + 400, m, d) - MS_PER_400_YEARS;
} else {
return new Date(y, m, d).valueOf();
}
}
function utcStartOfDate(y, m, d) {
// Date.UTC remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0) {
// preserve leap years using a full 400 year cycle, then reset
return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
} else {
return Date.UTC(y, m, d);
}
}
function startOf (units) {
var time;
units = normalizeUnits(units);
if (units === undefined || units === 'millisecond' || !this.isValid()) {
return this;
}
var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
switch (units) {
case 'year':
time = startOfDate(this.year(), 0, 1);
break;
case 'quarter':
time = startOfDate(this.year(), this.month() - this.month() % 3, 1);
break;
case 'month':
time = startOfDate(this.year(), this.month(), 1);
break;
case 'week':
time = startOfDate(this.year(), this.month(), this.date() - this.weekday());
break;
case 'isoWeek':
time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
break;
case 'day':
case 'date':
time = startOfDate(this.year(), this.month(), this.date());
break;
case 'hour':
time = this._d.valueOf();
time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);
break;
case 'minute':
time = this._d.valueOf();
time -= mod$1(time, MS_PER_MINUTE);
break;
case 'second':
time = this._d.valueOf();
time -= mod$1(time, MS_PER_SECOND);
break;
}
this._d.setTime(time);
hooks.updateOffset(this, true);
return this;
}
function endOf (units) {
var time;
units = normalizeUnits(units);
if (units === undefined || units === 'millisecond' || !this.isValid()) {
return this;
}
var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
switch (units) {
case 'year':
time = startOfDate(this.year() + 1, 0, 1) - 1;
break;
case 'quarter':
time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
break;
case 'month':
time = startOfDate(this.year(), this.month() + 1, 1) - 1;
break;
case 'week':
time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
break;
case 'isoWeek':
time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
break;
case 'day':
case 'date':
time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
break;
case 'hour':
time = this._d.valueOf();
time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;
break;
case 'minute':
time = this._d.valueOf();
time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
break;
case 'second':
time = this._d.valueOf();
time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
break;
}
this._d.setTime(time);
hooks.updateOffset(this, true);
return this;
}
function valueOf () {
return this._d.valueOf() - ((this._offset || 0) * 60000);
}
function unix () {
return Math.floor(this.valueOf() / 1000);
}
function toDate () {
return new Date(this.valueOf());
}
function toArray () {
var m = this;
return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
}
function toObject () {
var m = this;
return {
years: m.year(),
months: m.month(),
date: m.date(),
hours: m.hours(),
minutes: m.minutes(),
seconds: m.seconds(),
milliseconds: m.milliseconds()
};
}
function toJSON () {
// new Date(NaN).toJSON() === null
return this.isValid() ? this.toISOString() : null;
}
function isValid$2 () {
return isValid(this);
}
function parsingFlags () {
return extend({}, getParsingFlags(this));
}
function invalidAt () {
return getParsingFlags(this).overflow;
}
function creationData() {
return {
input: this._i,
format: this._f,
locale: this._locale,
isUTC: this._isUTC,
strict: this._strict
};
}
// FORMATTING
addFormatToken(0, ['gg', 2], 0, function () {
return this.weekYear() % 100;
});
addFormatToken(0, ['GG', 2], 0, function () {
return this.isoWeekYear() % 100;
});
function addWeekYearFormatToken (token, getter) {
addFormatToken(0, [token, token.length], 0, getter);
}
addWeekYearFormatToken('gggg', 'weekYear');
addWeekYearFormatToken('ggggg', 'weekYear');
addWeekYearFormatToken('GGGG', 'isoWeekYear');
addWeekYearFormatToken('GGGGG', 'isoWeekYear');
// ALIASES
addUnitAlias('weekYear', 'gg');
addUnitAlias('isoWeekYear', 'GG');
// PRIORITY
addUnitPriority('weekYear', 1);
addUnitPriority('isoWeekYear', 1);
// PARSING
addRegexToken('G', matchSigned);
addRegexToken('g', matchSigned);
addRegexToken('GG', match1to2, match2);
addRegexToken('gg', match1to2, match2);
addRegexToken('GGGG', match1to4, match4);
addRegexToken('gggg', match1to4, match4);
addRegexToken('GGGGG', match1to6, match6);
addRegexToken('ggggg', match1to6, match6);
addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
week[token.substr(0, 2)] = toInt(input);
});
addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
week[token] = hooks.parseTwoDigitYear(input);
});
// MOMENTS
function getSetWeekYear (input) {
return getSetWeekYearHelper.call(this,
input,
this.week(),
this.weekday(),
this.localeData()._week.dow,
this.localeData()._week.doy);
}
function getSetISOWeekYear (input) {
return getSetWeekYearHelper.call(this,
input, this.isoWeek(), this.isoWeekday(), 1, 4);
}
function getISOWeeksInYear () {
return weeksInYear(this.year(), 1, 4);
}
function getWeeksInYear () {
var weekInfo = this.localeData()._week;
return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
}
function getSetWeekYearHelper(input, week, weekday, dow, doy) {
var weeksTarget;
if (input == null) {
return weekOfYear(this, dow, doy).year;
} else {
weeksTarget = weeksInYear(input, dow, doy);
if (week > weeksTarget) {
week = weeksTarget;
}
return setWeekAll.call(this, input, week, weekday, dow, doy);
}
}
function setWeekAll(weekYear, week, weekday, dow, doy) {
var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
this.year(date.getUTCFullYear());
this.month(date.getUTCMonth());
this.date(date.getUTCDate());
return this;
}
// FORMATTING
addFormatToken('Q', 0, 'Qo', 'quarter');
// ALIASES
addUnitAlias('quarter', 'Q');
// PRIORITY
addUnitPriority('quarter', 7);
// PARSING
addRegexToken('Q', match1);
addParseToken('Q', function (input, array) {
array[MONTH] = (toInt(input) - 1) * 3;
});
// MOMENTS
function getSetQuarter (input) {
return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
}
// FORMATTING
addFormatToken('D', ['DD', 2], 'Do', 'date');
// ALIASES
addUnitAlias('date', 'D');
// PRIORITY
addUnitPriority('date', 9);
// PARSING
addRegexToken('D', match1to2);
addRegexToken('DD', match1to2, match2);
addRegexToken('Do', function (isStrict, locale) {
// TODO: Remove "ordinalParse" fallback in next major release.
return isStrict ?
(locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
locale._dayOfMonthOrdinalParseLenient;
});
addParseToken(['D', 'DD'], DATE);
addParseToken('Do', function (input, array) {
array[DATE] = toInt(input.match(match1to2)[0]);
});
// MOMENTS
var getSetDayOfMonth = makeGetSet('Date', true);
// FORMATTING
addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
// ALIASES
addUnitAlias('dayOfYear', 'DDD');
// PRIORITY
addUnitPriority('dayOfYear', 4);
// PARSING
addRegexToken('DDD', match1to3);
addRegexToken('DDDD', match3);
addParseToken(['DDD', 'DDDD'], function (input, array, config) {
config._dayOfYear = toInt(input);
});
// HELPERS
// MOMENTS
function getSetDayOfYear (input) {
var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
}
// FORMATTING
addFormatToken('m', ['mm', 2], 0, 'minute');
// ALIASES
addUnitAlias('minute', 'm');
// PRIORITY
addUnitPriority('minute', 14);
// PARSING
addRegexToken('m', match1to2);
addRegexToken('mm', match1to2, match2);
addParseToken(['m', 'mm'], MINUTE);
// MOMENTS
var getSetMinute = makeGetSet('Minutes', false);
// FORMATTING
addFormatToken('s', ['ss', 2], 0, 'second');
// ALIASES
addUnitAlias('second', 's');
// PRIORITY
addUnitPriority('second', 15);
// PARSING
addRegexToken('s', match1to2);
addRegexToken('ss', match1to2, match2);
addParseToken(['s', 'ss'], SECOND);
// MOMENTS
var getSetSecond = makeGetSet('Seconds', false);
// FORMATTING
addFormatToken('S', 0, 0, function () {
return ~~(this.millisecond() / 100);
});
addFormatToken(0, ['SS', 2], 0, function () {
return ~~(this.millisecond() / 10);
});
addFormatToken(0, ['SSS', 3], 0, 'millisecond');
addFormatToken(0, ['SSSS', 4], 0, function () {
return this.millisecond() * 10;
});
addFormatToken(0, ['SSSSS', 5], 0, function () {
return this.millisecond() * 100;
});
addFormatToken(0, ['SSSSSS', 6], 0, function () {
return this.millisecond() * 1000;
});
addFormatToken(0, ['SSSSSSS', 7], 0, function () {
return this.millisecond() * 10000;
});
addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
return this.millisecond() * 100000;
});
addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
return this.millisecond() * 1000000;
});
// ALIASES
addUnitAlias('millisecond', 'ms');
// PRIORITY
addUnitPriority('millisecond', 16);
// PARSING
addRegexToken('S', match1to3, match1);
addRegexToken('SS', match1to3, match2);
addRegexToken('SSS', match1to3, match3);
var token;
for (token = 'SSSS'; token.length <= 9; token += 'S') {
addRegexToken(token, matchUnsigned);
}
function parseMs(input, array) {
array[MILLISECOND] = toInt(('0.' + input) * 1000);
}
for (token = 'S'; token.length <= 9; token += 'S') {
addParseToken(token, parseMs);
}
// MOMENTS
var getSetMillisecond = makeGetSet('Milliseconds', false);
// FORMATTING
addFormatToken('z', 0, 0, 'zoneAbbr');
addFormatToken('zz', 0, 0, 'zoneName');
// MOMENTS
function getZoneAbbr () {
return this._isUTC ? 'UTC' : '';
}
function getZoneName () {
return this._isUTC ? 'Coordinated Universal Time' : '';
}
var proto = Moment.prototype;
proto.add = add;
proto.calendar = calendar$1;
proto.clone = clone;
proto.diff = diff;
proto.endOf = endOf;
proto.format = format;
proto.from = from;
proto.fromNow = fromNow;
proto.to = to;
proto.toNow = toNow;
proto.get = stringGet;
proto.invalidAt = invalidAt;
proto.isAfter = isAfter;
proto.isBefore = isBefore;
proto.isBetween = isBetween;
proto.isSame = isSame;
proto.isSameOrAfter = isSameOrAfter;
proto.isSameOrBefore = isSameOrBefore;
proto.isValid = isValid$2;
proto.lang = lang;
proto.locale = locale;
proto.localeData = localeData;
proto.max = prototypeMax;
proto.min = prototypeMin;
proto.parsingFlags = parsingFlags;
proto.set = stringSet;
proto.startOf = startOf;
proto.subtract = subtract;
proto.toArray = toArray;
proto.toObject = toObject;
proto.toDate = toDate;
proto.toISOString = toISOString;
proto.inspect = inspect;
proto.toJSON = toJSON;
proto.toString = toString;
proto.unix = unix;
proto.valueOf = valueOf;
proto.creationData = creationData;
proto.year = getSetYear;
proto.isLeapYear = getIsLeapYear;
proto.weekYear = getSetWeekYear;
proto.isoWeekYear = getSetISOWeekYear;
proto.quarter = proto.quarters = getSetQuarter;
proto.month = getSetMonth;
proto.daysInMonth = getDaysInMonth;
proto.week = proto.weeks = getSetWeek;
proto.isoWeek = proto.isoWeeks = getSetISOWeek;
proto.weeksInYear = getWeeksInYear;
proto.isoWeeksInYear = getISOWeeksInYear;
proto.date = getSetDayOfMonth;
proto.day = proto.days = getSetDayOfWeek;
proto.weekday = getSetLocaleDayOfWeek;
proto.isoWeekday = getSetISODayOfWeek;
proto.dayOfYear = getSetDayOfYear;
proto.hour = proto.hours = getSetHour;
proto.minute = proto.minutes = getSetMinute;
proto.second = proto.seconds = getSetSecond;
proto.millisecond = proto.milliseconds = getSetMillisecond;
proto.utcOffset = getSetOffset;
proto.utc = setOffsetToUTC;
proto.local = setOffsetToLocal;
proto.parseZone = setOffsetToParsedOffset;
proto.hasAlignedHourOffset = hasAlignedHourOffset;
proto.isDST = isDaylightSavingTime;
proto.isLocal = isLocal;
proto.isUtcOffset = isUtcOffset;
proto.isUtc = isUtc;
proto.isUTC = isUtc;
proto.zoneAbbr = getZoneAbbr;
proto.zoneName = getZoneName;
proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
function createUnix (input) {
return createLocal(input * 1000);
}
function createInZone () {
return createLocal.apply(null, arguments).parseZone();
}
function preParsePostFormat (string) {
return string;
}
var proto$1 = Locale.prototype;
proto$1.calendar = calendar;
proto$1.longDateFormat = longDateFormat;
proto$1.invalidDate = invalidDate;
proto$1.ordinal = ordinal;
proto$1.preparse = preParsePostFormat;
proto$1.postformat = preParsePostFormat;
proto$1.relativeTime = relativeTime;
proto$1.pastFuture = pastFuture;
proto$1.set = set;
proto$1.months = localeMonths;
proto$1.monthsShort = localeMonthsShort;
proto$1.monthsParse = localeMonthsParse;
proto$1.monthsRegex = monthsRegex;
proto$1.monthsShortRegex = monthsShortRegex;
proto$1.week = localeWeek;
proto$1.firstDayOfYear = localeFirstDayOfYear;
proto$1.firstDayOfWeek = localeFirstDayOfWeek;
proto$1.weekdays = localeWeekdays;
proto$1.weekdaysMin = localeWeekdaysMin;
proto$1.weekdaysShort = localeWeekdaysShort;
proto$1.weekdaysParse = localeWeekdaysParse;
proto$1.weekdaysRegex = weekdaysRegex;
proto$1.weekdaysShortRegex = weekdaysShortRegex;
proto$1.weekdaysMinRegex = weekdaysMinRegex;
proto$1.isPM = localeIsPM;
proto$1.meridiem = localeMeridiem;
function get$1 (format, index, field, setter) {
var locale = getLocale();
var utc = createUTC().set(setter, index);
return locale[field](utc, format);
}
function listMonthsImpl (format, index, field) {
if (isNumber(format)) {
index = format;
format = undefined;
}
format = format || '';
if (index != null) {
return get$1(format, index, field, 'month');
}
var i;
var out = [];
for (i = 0; i < 12; i++) {
out[i] = get$1(format, i, field, 'month');
}
return out;
}
// ()
// (5)
// (fmt, 5)
// (fmt)
// (true)
// (true, 5)
// (true, fmt, 5)
// (true, fmt)
function listWeekdaysImpl (localeSorted, format, index, field) {
if (typeof localeSorted === 'boolean') {
if (isNumber(format)) {
index = format;
format = undefined;
}
format = format || '';
} else {
format = localeSorted;
index = format;
localeSorted = false;
if (isNumber(format)) {
index = format;
format = undefined;
}
format = format || '';
}
var locale = getLocale(),
shift = localeSorted ? locale._week.dow : 0;
if (index != null) {
return get$1(format, (index + shift) % 7, field, 'day');
}
var i;
var out = [];
for (i = 0; i < 7; i++) {
out[i] = get$1(format, (i + shift) % 7, field, 'day');
}
return out;
}
function listMonths (format, index) {
return listMonthsImpl(format, index, 'months');
}
function listMonthsShort (format, index) {
return listMonthsImpl(format, index, 'monthsShort');
}
function listWeekdays (localeSorted, format, index) {
return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
}
function listWeekdaysShort (localeSorted, format, index) {
return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
}
function listWeekdaysMin (localeSorted, format, index) {
return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
}
getSetGlobalLocale('en', {
dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal : function (number) {
var b = number % 10,
output = (toInt(number % 100 / 10) === 1) ? 'th' :
(b === 1) ? 'st' :
(b === 2) ? 'nd' :
(b === 3) ? 'rd' : 'th';
return number + output;
}
});
// Side effect imports
hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
var mathAbs = Math.abs;
function abs () {
var data = this._data;
this._milliseconds = mathAbs(this._milliseconds);
this._days = mathAbs(this._days);
this._months = mathAbs(this._months);
data.milliseconds = mathAbs(data.milliseconds);
data.seconds = mathAbs(data.seconds);
data.minutes = mathAbs(data.minutes);
data.hours = mathAbs(data.hours);
data.months = mathAbs(data.months);
data.years = mathAbs(data.years);
return this;
}
function addSubtract$1 (duration, input, value, direction) {
var other = createDuration(input, value);
duration._milliseconds += direction * other._milliseconds;
duration._days += direction * other._days;
duration._months += direction * other._months;
return duration._bubble();
}
// supports only 2.0-style add(1, 's') or add(duration)
function add$1 (input, value) {
return addSubtract$1(this, input, value, 1);
}
// supports only 2.0-style subtract(1, 's') or subtract(duration)
function subtract$1 (input, value) {
return addSubtract$1(this, input, value, -1);
}
function absCeil (number) {
if (number < 0) {
return Math.floor(number);
} else {
return Math.ceil(number);
}
}
function bubble () {
var milliseconds = this._milliseconds;
var days = this._days;
var months = this._months;
var data = this._data;
var seconds, minutes, hours, years, monthsFromDays;
// if we have a mix of positive and negative values, bubble down first
// check: https://github.com/moment/moment/issues/2166
if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
(milliseconds <= 0 && days <= 0 && months <= 0))) {
milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
days = 0;
months = 0;
}
// The following code bubbles up values, see the tests for
// examples of what that means.
data.milliseconds = milliseconds % 1000;
seconds = absFloor(milliseconds / 1000);
data.seconds = seconds % 60;
minutes = absFloor(seconds / 60);
data.minutes = minutes % 60;
hours = absFloor(minutes / 60);
data.hours = hours % 24;
days += absFloor(hours / 24);
// convert days to months
monthsFromDays = absFloor(daysToMonths(days));
months += monthsFromDays;
days -= absCeil(monthsToDays(monthsFromDays));
// 12 months -> 1 year
years = absFloor(months / 12);
months %= 12;
data.days = days;
data.months = months;
data.years = years;
return this;
}
function daysToMonths (days) {
// 400 years have 146097 days (taking into account leap year rules)
// 400 years have 12 months === 4800
return days * 4800 / 146097;
}
function monthsToDays (months) {
// the reverse of daysToMonths
return months * 146097 / 4800;
}
function as (units) {
if (!this.isValid()) {
return NaN;
}
var days;
var months;
var milliseconds = this._milliseconds;
units = normalizeUnits(units);
if (units === 'month' || units === 'quarter' || units === 'year') {
days = this._days + milliseconds / 864e5;
months = this._months + daysToMonths(days);
switch (units) {
case 'month': return months;
case 'quarter': return months / 3;
case 'year': return months / 12;
}
} else {
// handle milliseconds separately because of floating point math errors (issue #1867)
days = this._days + Math.round(monthsToDays(this._months));
switch (units) {
case 'week' : return days / 7 + milliseconds / 6048e5;
case 'day' : return days + milliseconds / 864e5;
case 'hour' : return days * 24 + milliseconds / 36e5;
case 'minute' : return days * 1440 + milliseconds / 6e4;
case 'second' : return days * 86400 + milliseconds / 1000;
// Math.floor prevents floating point math errors here
case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
default: throw new Error('Unknown unit ' + units);
}
}
}
// TODO: Use this.as('ms')?
function valueOf$1 () {
if (!this.isValid()) {
return NaN;
}
return (
this._milliseconds +
this._days * 864e5 +
(this._months % 12) * 2592e6 +
toInt(this._months / 12) * 31536e6
);
}
function makeAs (alias) {
return function () {
return this.as(alias);
};
}
var asMilliseconds = makeAs('ms');
var asSeconds = makeAs('s');
var asMinutes = makeAs('m');
var asHours = makeAs('h');
var asDays = makeAs('d');
var asWeeks = makeAs('w');
var asMonths = makeAs('M');
var asQuarters = makeAs('Q');
var asYears = makeAs('y');
function clone$1 () {
return createDuration(this);
}
function get$2 (units) {
units = normalizeUnits(units);
return this.isValid() ? this[units + 's']() : NaN;
}
function makeGetter(name) {
return function () {
return this.isValid() ? this._data[name] : NaN;
};
}
var milliseconds = makeGetter('milliseconds');
var seconds = makeGetter('seconds');
var minutes = makeGetter('minutes');
var hours = makeGetter('hours');
var days = makeGetter('days');
var months = makeGetter('months');
var years = makeGetter('years');
function weeks () {
return absFloor(this.days() / 7);
}
var round = Math.round;
var thresholds = {
ss: 44, // a few seconds to seconds
s : 45, // seconds to minute
m : 45, // minutes to hour
h : 22, // hours to day
d : 26, // days to month
M : 11 // months to year
};
// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
}
function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
var duration = createDuration(posNegDuration).abs();
var seconds = round(duration.as('s'));
var minutes = round(duration.as('m'));
var hours = round(duration.as('h'));
var days = round(duration.as('d'));
var months = round(duration.as('M'));
var years = round(duration.as('y'));
var a = seconds <= thresholds.ss && ['s', seconds] ||
seconds < thresholds.s && ['ss', seconds] ||
minutes <= 1 && ['m'] ||
minutes < thresholds.m && ['mm', minutes] ||
hours <= 1 && ['h'] ||
hours < thresholds.h && ['hh', hours] ||
days <= 1 && ['d'] ||
days < thresholds.d && ['dd', days] ||
months <= 1 && ['M'] ||
months < thresholds.M && ['MM', months] ||
years <= 1 && ['y'] || ['yy', years];
a[2] = withoutSuffix;
a[3] = +posNegDuration > 0;
a[4] = locale;
return substituteTimeAgo.apply(null, a);
}
// This function allows you to set the rounding function for relative time strings
function getSetRelativeTimeRounding (roundingFunction) {
if (roundingFunction === undefined) {
return round;
}
if (typeof(roundingFunction) === 'function') {
round = roundingFunction;
return true;
}
return false;
}
// This function allows you to set a threshold for relative time strings
function getSetRelativeTimeThreshold (threshold, limit) {
if (thresholds[threshold] === undefined) {
return false;
}
if (limit === undefined) {
return thresholds[threshold];
}
thresholds[threshold] = limit;
if (threshold === 's') {
thresholds.ss = limit - 1;
}
return true;
}
function humanize (withSuffix) {
if (!this.isValid()) {
return this.localeData().invalidDate();
}
var locale = this.localeData();
var output = relativeTime$1(this, !withSuffix, locale);
if (withSuffix) {
output = locale.pastFuture(+this, output);
}
return locale.postformat(output);
}
var abs$1 = Math.abs;
function sign(x) {
return ((x > 0) - (x < 0)) || +x;
}
function toISOString$1() {
// for ISO strings we do not use the normal bubbling rules:
// * milliseconds bubble up until they become hours
// * days do not bubble at all
// * months bubble up until they become years
// This is because there is no context-free conversion between hours and days
// (think of clock changes)
// and also not between days and months (28-31 days per month)
if (!this.isValid()) {
return this.localeData().invalidDate();
}
var seconds = abs$1(this._milliseconds) / 1000;
var days = abs$1(this._days);
var months = abs$1(this._months);
var minutes, hours, years;
// 3600 seconds -> 60 minutes -> 1 hour
minutes = absFloor(seconds / 60);
hours = absFloor(minutes / 60);
seconds %= 60;
minutes %= 60;
// 12 months -> 1 year
years = absFloor(months / 12);
months %= 12;
// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
var Y = years;
var M = months;
var D = days;
var h = hours;
var m = minutes;
var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
var total = this.asSeconds();
if (!total) {
// this is the same as C#'s (Noda) and python (isodate)...
// but not other JS (goog.date)
return 'P0D';
}
var totalSign = total < 0 ? '-' : '';
var ymSign = sign(this._months) !== sign(total) ? '-' : '';
var daysSign = sign(this._days) !== sign(total) ? '-' : '';
var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
return totalSign + 'P' +
(Y ? ymSign + Y + 'Y' : '') +
(M ? ymSign + M + 'M' : '') +
(D ? daysSign + D + 'D' : '') +
((h || m || s) ? 'T' : '') +
(h ? hmsSign + h + 'H' : '') +
(m ? hmsSign + m + 'M' : '') +
(s ? hmsSign + s + 'S' : '');
}
var proto$2 = Duration.prototype;
proto$2.isValid = isValid$1;
proto$2.abs = abs;
proto$2.add = add$1;
proto$2.subtract = subtract$1;
proto$2.as = as;
proto$2.asMilliseconds = asMilliseconds;
proto$2.asSeconds = asSeconds;
proto$2.asMinutes = asMinutes;
proto$2.asHours = asHours;
proto$2.asDays = asDays;
proto$2.asWeeks = asWeeks;
proto$2.asMonths = asMonths;
proto$2.asQuarters = asQuarters;
proto$2.asYears = asYears;
proto$2.valueOf = valueOf$1;
proto$2._bubble = bubble;
proto$2.clone = clone$1;
proto$2.get = get$2;
proto$2.milliseconds = milliseconds;
proto$2.seconds = seconds;
proto$2.minutes = minutes;
proto$2.hours = hours;
proto$2.days = days;
proto$2.weeks = weeks;
proto$2.months = months;
proto$2.years = years;
proto$2.humanize = humanize;
proto$2.toISOString = toISOString$1;
proto$2.toString = toISOString$1;
proto$2.toJSON = toISOString$1;
proto$2.locale = locale;
proto$2.localeData = localeData;
proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
proto$2.lang = lang;
// Side effect imports
// FORMATTING
addFormatToken('X', 0, 0, 'unix');
addFormatToken('x', 0, 0, 'valueOf');
// PARSING
addRegexToken('x', matchSigned);
addRegexToken('X', matchTimestamp);
addParseToken('X', function (input, array, config) {
config._d = new Date(parseFloat(input, 10) * 1000);
});
addParseToken('x', function (input, array, config) {
config._d = new Date(toInt(input));
});
// Side effect imports
hooks.version = '2.24.0';
setHookCallback(createLocal);
hooks.fn = proto;
hooks.min = min;
hooks.max = max;
hooks.now = now;
hooks.utc = createUTC;
hooks.unix = createUnix;
hooks.months = listMonths;
hooks.isDate = isDate;
hooks.locale = getSetGlobalLocale;
hooks.invalid = createInvalid;
hooks.duration = createDuration;
hooks.isMoment = isMoment;
hooks.weekdays = listWeekdays;
hooks.parseZone = createInZone;
hooks.localeData = getLocale;
hooks.isDuration = isDuration;
hooks.monthsShort = listMonthsShort;
hooks.weekdaysMin = listWeekdaysMin;
hooks.defineLocale = defineLocale;
hooks.updateLocale = updateLocale;
hooks.locales = listLocales;
hooks.weekdaysShort = listWeekdaysShort;
hooks.normalizeUnits = normalizeUnits;
hooks.relativeTimeRounding = getSetRelativeTimeRounding;
hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
hooks.calendarFormat = getCalendarFormat;
hooks.prototype = proto;
// currently HTML5 input type only supports 24-hour formats
hooks.HTML5_FMT = {
DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
DATE: 'YYYY-MM-DD', // <input type="date" />
TIME: 'HH:mm', // <input type="time" />
TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
WEEK: 'GGGG-[W]WW', // <input type="week" />
MONTH: 'YYYY-MM' // <input type="month" />
};
return hooks;
})));
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(18)(module)))
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
const req = __webpack_require__(13);
const modules = req.keys().map(req);
module.exports = modules;
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
//! moment.js locale configuration
;(function (global, factory) {
true ? factory(__webpack_require__(9)) :
undefined
}(this, (function (moment) { 'use strict';
function processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eine Minute', 'einer Minute'],
'h': ['eine Stunde', 'einer Stunde'],
'd': ['ein Tag', 'einem Tag'],
'dd': [number + ' Tage', number + ' Tagen'],
'M': ['ein Monat', 'einem Monat'],
'MM': [number + ' Monate', number + ' Monaten'],
'y': ['ein Jahr', 'einem Jahr'],
'yy': [number + ' Jahre', number + ' Jahren']
};
return withoutSuffix ? format[key][0] : format[key][1];
}
var de = moment.defineLocale('de', {
months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
monthsParseExact : true,
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY HH:mm',
LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[heute um] LT [Uhr]',
sameElse: 'L',
nextDay: '[morgen um] LT [Uhr]',
nextWeek: 'dddd [um] LT [Uhr]',
lastDay: '[gestern um] LT [Uhr]',
lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
future : 'in %s',
past : 'vor %s',
s : 'ein paar Sekunden',
ss : '%d Sekunden',
m : processRelativeTime,
mm : '%d Minuten',
h : processRelativeTime,
hh : '%d Stunden',
d : processRelativeTime,
dd : processRelativeTime,
M : processRelativeTime,
MM : processRelativeTime,
y : processRelativeTime,
yy : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return de;
})));
/***/ }),
/* 12 */
/***/ (function(module) {
module.exports = JSON.parse("{\"AAA\":{\"Timezone\":\"Pacific/Tahiti\"},\"AAC\":{\"Timezone\":\"Africa/Cairo\"},\"AAE\":{\"Timezone\":\"Africa/Algiers\"},\"AAF\":{\"Timezone\":\"America/New_York\"},\"AAH\":{\"Timezone\":\"Europe/Berlin\"},\"AAK\":{\"Timezone\":null},\"AAL\":{\"Timezone\":\"Europe/Copenhagen\"},\"AAM\":{\"Timezone\":\"Africa/Johannesburg\"},\"AAN\":{\"Timezone\":\"Asia/Dubai\"},\"AAO\":{\"Timezone\":\"America/Caracas\"},\"AAP\":{\"Timezone\":\"America/Chicago\"},\"AAQ\":{\"Timezone\":\"Europe/Moscow\"},\"AAR\":{\"Timezone\":\"Europe/Copenhagen\"},\"AAT\":{\"Timezone\":\"Asia/Shanghai\"},\"AAV\":{\"Timezone\":null},\"AAX\":{\"Timezone\":\"America/Sao_Paulo\"},\"AAY\":{\"Timezone\":\"Asia/Aden\"},\"AAZ\":{\"Timezone\":\"America/Guatemala\"},\"ABA\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"ABB\":{\"Timezone\":\"Africa/Lagos\"},\"ABC\":{\"Timezone\":\"Europe/Madrid\"},\"ABD\":{\"Timezone\":\"Asia/Tehran\"},\"ABE\":{\"Timezone\":\"America/New_York\"},\"ABF\":{\"Timezone\":\"Pacific/Tarawa\"},\"ABH\":{\"Timezone\":null},\"ABI\":{\"Timezone\":\"America/Chicago\"},\"ABJ\":{\"Timezone\":\"Africa/Abidjan\"},\"ABK\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"ABL\":{\"Timezone\":\"America/Anchorage\"},\"ABM\":{\"Timezone\":\"Australia/Brisbane\"},\"ABN\":{\"Timezone\":\"America/Paramaribo\"},\"ABQ\":{\"Timezone\":\"America/Denver\"},\"ABR\":{\"Timezone\":\"America/Chicago\"},\"ABS\":{\"Timezone\":\"Africa/Cairo\"},\"ABT\":{\"Timezone\":\"Asia/Riyadh\"},\"ABV\":{\"Timezone\":\"Africa/Lagos\"},\"ABX\":{\"Timezone\":\"Australia/Sydney\"},\"ABY\":{\"Timezone\":\"America/New_York\"},\"ABZ\":{\"Timezone\":\"Europe/London\"},\"ACA\":{\"Timezone\":\"America/Mexico_City\"},\"ACC\":{\"Timezone\":\"Africa/Accra\"},\"ACD\":{\"Timezone\":\"America/Bogota\"},\"ACE\":{\"Timezone\":\"Atlantic/Canary\"},\"ACF\":{\"Timezone\":\"Australia/Brisbane\"},\"ACH\":{\"Timezone\":\"Europe/Zurich\"},\"ACI\":{\"Timezone\":\"Europe/Guernsey\"},\"ACJ\":{\"Timezone\":\"Asia/Colombo\"},\"ACK\":{\"Timezone\":\"America/New_York\"},\"ACN\":{\"Timezone\":\"America/Mexico_City\"},\"ACP\":{\"Timezone\":\"Asia/Tehran\"},\"ACR\":{\"Timezone\":\"America/Bogota\"},\"ACS\":{\"Timezone\":null},\"ACT\":{\"Timezone\":\"America/Chicago\"},\"ACV\":{\"Timezone\":\"America/Los_Angeles\"},\"ACX\":{\"Timezone\":\"Asia/Shanghai\"},\"ACY\":{\"Timezone\":\"America/New_York\"},\"ACZ\":{\"Timezone\":\"Asia/Tehran\"},\"ADA\":{\"Timezone\":\"Europe/Istanbul\"},\"ADB\":{\"Timezone\":\"Europe/Istanbul\"},\"ADD\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"ADE\":{\"Timezone\":\"Asia/Aden\"},\"ADF\":{\"Timezone\":\"Europe/Istanbul\"},\"ADH\":{\"Timezone\":\"Asia/Yakutsk\"},\"ADI\":{\"Timezone\":null},\"ADJ\":{\"Timezone\":\"Asia/Amman\"},\"ADK\":{\"Timezone\":\"America/Adak\"},\"ADL\":{\"Timezone\":\"Australia/Adelaide\"},\"ADM\":{\"Timezone\":\"America/Chicago\"},\"ADP\":{\"Timezone\":\"Asia/Colombo\"},\"ADQ\":{\"Timezone\":\"America/Anchorage\"},\"ADS\":{\"Timezone\":\"America/Chicago\"},\"ADT\":{\"Timezone\":\"America/Chicago\"},\"ADU\":{\"Timezone\":\"Asia/Tehran\"},\"ADW\":{\"Timezone\":\"America/New_York\"},\"ADX\":{\"Timezone\":\"Europe/London\"},\"ADY\":{\"Timezone\":\"Africa/Johannesburg\"},\"ADZ\":{\"Timezone\":\"America/Bogota\"},\"AEA\":{\"Timezone\":\"Pacific/Tarawa\"},\"AEB\":{\"Timezone\":\"Asia/Shanghai\"},\"AEG\":{\"Timezone\":\"Asia/Jakarta\"},\"AEH\":{\"Timezone\":\"Africa/Ndjamena\"},\"AEI\":{\"Timezone\":null},\"AEO\":{\"Timezone\":\"Africa/Nouakchott\"},\"AEP\":{\"Timezone\":\"America/Buenos_Aires\"},\"AER\":{\"Timezone\":\"Europe/Moscow\"},\"AES\":{\"Timezone\":\"Europe/Oslo\"},\"AET\":{\"Timezone\":\"America/Anchorage\"},\"AEU\":{\"Timezone\":\"Asia/Tehran\"},\"AEX\":{\"Timezone\":\"America/Chicago\"},\"AEY\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"AFA\":{\"Timezone\":\"America/Mendoza\"},\"AFL\":{\"Timezone\":\"America/Campo_Grande\"},\"AFS\":{\"Timezone\":\"Asia/Samarkand\"},\"AFT\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"AFW\":{\"Timezone\":\"America/Chicago\"},\"AFY\":{\"Timezone\":\"Europe/Istanbul\"},\"AFZ\":{\"Timezone\":\"Asia/Tehran\"},\"AGA\":{\"Timezone\":\"Africa/Casablanca\"},\"AGB\":{\"Timezone\":\"Europe/Berlin\"},\"AGC\":{\"Timezone\":\"America/New_York\"},\"AGE\":{\"Timezone\":\"Europe/Berlin\"},\"AGF\":{\"Timezone\":\"Europe/Paris\"},\"AGH\":{\"Timezone\":\"Europe/Stockholm\"},\"AGI\":{\"Timezone\":\"America/Paramaribo\"},\"AGJ\":{\"Timezone\":\"Asia/Tokyo\"},\"AGN\":{\"Timezone\":\"America/Anchorage\"},\"AGP\":{\"Timezone\":\"Europe/Madrid\"},\"AGQ\":{\"Timezone\":\"Europe/Athens\"},\"AGR\":{\"Timezone\":\"Asia/Calcutta\"},\"AGS\":{\"Timezone\":\"America/New_York\"},\"AGT\":{\"Timezone\":\"America/Asuncion\"},\"AGU\":{\"Timezone\":\"America/Mexico_City\"},\"AGV\":{\"Timezone\":\"America/Caracas\"},\"AGX\":{\"Timezone\":\"Asia/Calcutta\"},\"AGZ\":{\"Timezone\":\"Africa/Johannesburg\"},\"AHB\":{\"Timezone\":\"Asia/Riyadh\"},\"AHE\":{\"Timezone\":\"Pacific/Tahiti\"},\"AHJ\":{\"Timezone\":null},\"AHN\":{\"Timezone\":\"America/New_York\"},\"AHO\":{\"Timezone\":\"Europe/Rome\"},\"AHS\":{\"Timezone\":\"America/Tegucigalpa\"},\"AHU\":{\"Timezone\":\"Africa/Casablanca\"},\"AIA\":{\"Timezone\":\"America/Denver\"},\"AID\":{\"Timezone\":null},\"AIK\":{\"Timezone\":\"America/New_York\"},\"AIN\":{\"Timezone\":\"America/Anchorage\"},\"AIP\":{\"Timezone\":null},\"AIR\":{\"Timezone\":null},\"AIS\":{\"Timezone\":\"Pacific/Tarawa\"},\"AIT\":{\"Timezone\":\"Pacific/Rarotonga\"},\"AIU\":{\"Timezone\":\"Pacific/Rarotonga\"},\"AIZ\":{\"Timezone\":\"America/Chicago\"},\"AJA\":{\"Timezone\":\"Europe/Paris\"},\"AJF\":{\"Timezone\":\"Asia/Riyadh\"},\"AJI\":{\"Timezone\":\"Europe/Istanbul\"},\"AJK\":{\"Timezone\":\"Asia/Tehran\"},\"AJL\":{\"Timezone\":\"Asia/Calcutta\"},\"AJN\":{\"Timezone\":\"Indian/Comoro\"},\"AJR\":{\"Timezone\":\"Europe/Stockholm\"},\"AJU\":{\"Timezone\":\"America/Fortaleza\"},\"AJY\":{\"Timezone\":\"Africa/Niamey\"},\"AKA\":{\"Timezone\":\"Asia/Shanghai\"},\"AKB\":{\"Timezone\":\"America/Adak\"},\"AKC\":{\"Timezone\":\"America/New_York\"},\"AKD\":{\"Timezone\":\"Asia/Calcutta\"},\"AKF\":{\"Timezone\":\"Africa/Tripoli\"},\"AKH\":{\"Timezone\":\"Asia/Riyadh\"},\"AKI\":{\"Timezone\":\"America/Anchorage\"},\"AKJ\":{\"Timezone\":\"Asia/Tokyo\"},\"AKK\":{\"Timezone\":\"America/Anchorage\"},\"AKL\":{\"Timezone\":\"Pacific/Auckland\"},\"AKN\":{\"Timezone\":\"America/Anchorage\"},\"AKO\":{\"Timezone\":\"America/Denver\"},\"AKP\":{\"Timezone\":\"America/Anchorage\"},\"AKR\":{\"Timezone\":\"Africa/Lagos\"},\"AKS\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"AKT\":{\"Timezone\":\"Europe/London\"},\"AKU\":{\"Timezone\":\"Asia/Shanghai\"},\"AKV\":{\"Timezone\":\"America/Toronto\"},\"AKW\":{\"Timezone\":\"Asia/Tehran\"},\"AKX\":{\"Timezone\":\"Asia/Oral\"},\"AKY\":{\"Timezone\":\"Asia/Rangoon\"},\"ALA\":{\"Timezone\":\"Asia/Qyzylorda\"},\"ALB\":{\"Timezone\":\"America/New_York\"},\"ALC\":{\"Timezone\":\"Europe/Madrid\"},\"ALE\":{\"Timezone\":null},\"ALF\":{\"Timezone\":\"Europe/Oslo\"},\"ALG\":{\"Timezone\":\"Africa/Algiers\"},\"ALH\":{\"Timezone\":\"Australia/Perth\"},\"ALI\":{\"Timezone\":\"America/Chicago\"},\"ALJ\":{\"Timezone\":\"Africa/Johannesburg\"},\"ALL\":{\"Timezone\":\"Europe/Rome\"},\"ALM\":{\"Timezone\":\"America/Denver\"},\"ALN\":{\"Timezone\":null},\"ALO\":{\"Timezone\":\"America/Chicago\"},\"ALP\":{\"Timezone\":\"Asia/Damascus\"},\"ALR\":{\"Timezone\":\"Pacific/Auckland\"},\"ALS\":{\"Timezone\":\"America/Denver\"},\"ALU\":{\"Timezone\":\"Africa/Mogadishu\"},\"ALW\":{\"Timezone\":\"America/Los_Angeles\"},\"ALX\":{\"Timezone\":null},\"ALY\":{\"Timezone\":\"Africa/Cairo\"},\"AMA\":{\"Timezone\":\"America/Chicago\"},\"AMB\":{\"Timezone\":\"Indian/Antananarivo\"},\"AMC\":{\"Timezone\":\"Africa/Ndjamena\"},\"AMD\":{\"Timezone\":\"Asia/Calcutta\"},\"AMH\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"AMI\":{\"Timezone\":\"Asia/Makassar\"},\"AMM\":{\"Timezone\":\"Asia/Amman\"},\"AMN\":{\"Timezone\":null},\"AMQ\":{\"Timezone\":\"Asia/Jayapura\"},\"AMS\":{\"Timezone\":\"Europe/Amsterdam\"},\"AMT\":{\"Timezone\":null},\"AMV\":{\"Timezone\":\"Europe/Moscow\"},\"AMZ\":{\"Timezone\":\"Pacific/Auckland\"},\"ANB\":{\"Timezone\":\"America/Chicago\"},\"ANC\":{\"Timezone\":\"America/Anchorage\"},\"AND\":{\"Timezone\":\"America/New_York\"},\"ANE\":{\"Timezone\":\"Europe/Paris\"},\"ANF\":{\"Timezone\":\"America/Santiago\"},\"ANG\":{\"Timezone\":\"Europe/Paris\"},\"ANI\":{\"Timezone\":\"America/Anchorage\"},\"ANK\":{\"Timezone\":\"Europe/Istanbul\"},\"ANM\":{\"Timezone\":\"Indian/Antananarivo\"},\"ANN\":{\"Timezone\":\"America/Anchorage\"},\"ANP\":{\"Timezone\":\"America/New_York\"},\"ANQ\":{\"Timezone\":\"America/New_York\"},\"ANR\":{\"Timezone\":\"Europe/Brussels\"},\"ANS\":{\"Timezone\":\"America/Lima\"},\"ANU\":{\"Timezone\":\"America/Antigua\"},\"ANV\":{\"Timezone\":\"America/Anchorage\"},\"ANX\":{\"Timezone\":\"Europe/Oslo\"},\"AOC\":{\"Timezone\":\"Europe/Berlin\"},\"AOE\":{\"Timezone\":\"Europe/Istanbul\"},\"AOG\":{\"Timezone\":\"Asia/Shanghai\"},\"AOH\":{\"Timezone\":\"America/New_York\"},\"AOI\":{\"Timezone\":\"Europe/Rome\"},\"AOJ\":{\"Timezone\":\"Asia/Tokyo\"},\"AOK\":{\"Timezone\":\"Europe/Athens\"},\"AOL\":{\"Timezone\":\"America/Cordoba\"},\"AOO\":{\"Timezone\":\"America/New_York\"},\"AOP\":{\"Timezone\":\"America/Lima\"},\"AOR\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"AOT\":{\"Timezone\":\"Europe/Rome\"},\"AOU\":{\"Timezone\":null},\"APA\":{\"Timezone\":\"America/Denver\"},\"APC\":{\"Timezone\":\"America/Los_Angeles\"},\"APF\":{\"Timezone\":\"America/New_York\"},\"APG\":{\"Timezone\":\"America/New_York\"},\"API\":{\"Timezone\":null},\"APK\":{\"Timezone\":\"Pacific/Tahiti\"},\"APL\":{\"Timezone\":\"Africa/Maputo\"},\"APN\":{\"Timezone\":\"America/New_York\"},\"APO\":{\"Timezone\":\"America/Bogota\"},\"APQ\":{\"Timezone\":null},\"APT\":{\"Timezone\":null},\"APW\":{\"Timezone\":\"Pacific/Apia\"},\"APZ\":{\"Timezone\":\"America/Argentina/Salta\"},\"AQA\":{\"Timezone\":\"America/Sao_Paulo\"},\"AQB\":{\"Timezone\":\"America/Guatemala\"},\"AQG\":{\"Timezone\":\"Asia/Shanghai\"},\"AQI\":{\"Timezone\":\"Asia/Riyadh\"},\"AQJ\":{\"Timezone\":\"Asia/Amman\"},\"AQP\":{\"Timezone\":\"America/Lima\"},\"ARA\":{\"Timezone\":\"America/Chicago\"},\"ARB\":{\"Timezone\":\"America/New_York\"},\"ARC\":{\"Timezone\":\"America/Anchorage\"},\"ARD\":{\"Timezone\":\"Asia/Makassar\"},\"ARE\":{\"Timezone\":\"America/Puerto_Rico\"},\"ARH\":{\"Timezone\":\"Europe/Moscow\"},\"ARI\":{\"Timezone\":\"America/Santiago\"},\"ARK\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"ARM\":{\"Timezone\":\"Australia/Sydney\"},\"ARN\":{\"Timezone\":\"Europe/Stockholm\"},\"ARR\":{\"Timezone\":\"America/Catamarca\"},\"ART\":{\"Timezone\":\"America/New_York\"},\"ARU\":{\"Timezone\":\"America/Sao_Paulo\"},\"ARV\":{\"Timezone\":\"America/Chicago\"},\"ARW\":{\"Timezone\":\"Europe/Bucharest\"},\"ARY\":{\"Timezone\":null},\"ASA\":{\"Timezone\":\"Africa/Asmera\"},\"ASB\":{\"Timezone\":\"Asia/Ashgabat\"},\"ASD\":{\"Timezone\":\"America/Nassau\"},\"ASE\":{\"Timezone\":\"America/Denver\"},\"ASF\":{\"Timezone\":\"Europe/Samara\"},\"ASH\":{\"Timezone\":\"America/New_York\"},\"ASI\":{\"Timezone\":\"Atlantic/St_Helena\"},\"ASJ\":{\"Timezone\":\"Asia/Tokyo\"},\"ASK\":{\"Timezone\":\"Africa/Abidjan\"},\"ASM\":{\"Timezone\":\"Africa/Asmera\"},\"ASN\":{\"Timezone\":null},\"ASO\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"ASP\":{\"Timezone\":\"Australia/Darwin\"},\"ASR\":{\"Timezone\":\"Europe/Istanbul\"},\"ASS\":{\"Timezone\":null},\"AST\":{\"Timezone\":\"America/Los_Angeles\"},\"ASU\":{\"Timezone\":\"America/Asuncion\"},\"ASV\":{\"Timezone\":\"Africa/Nairobi\"},\"ASW\":{\"Timezone\":\"Africa/Cairo\"},\"ATA\":{\"Timezone\":\"America/Lima\"},\"ATB\":{\"Timezone\":\"Africa/Khartoum\"},\"ATC\":{\"Timezone\":\"America/Nassau\"},\"ATD\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"ATF\":{\"Timezone\":\"America/Guayaquil\"},\"ATG\":{\"Timezone\":null},\"ATH\":{\"Timezone\":\"Europe/Athens\"},\"ATI\":{\"Timezone\":null},\"ATJ\":{\"Timezone\":\"Indian/Antananarivo\"},\"ATK\":{\"Timezone\":\"America/Anchorage\"},\"ATL\":{\"Timezone\":\"America/New_York\"},\"ATM\":{\"Timezone\":\"America/Belem\"},\"ATO\":{\"Timezone\":\"America/New_York\"},\"ATQ\":{\"Timezone\":\"Asia/Calcutta\"},\"ATR\":{\"Timezone\":\"Africa/Nouakchott\"},\"ATW\":{\"Timezone\":\"America/Chicago\"},\"ATY\":{\"Timezone\":\"America/Chicago\"},\"ATZ\":{\"Timezone\":\"Africa/Cairo\"},\"AUA\":{\"Timezone\":\"America/Aruba\"},\"AUC\":{\"Timezone\":\"America/Bogota\"},\"AUF\":{\"Timezone\":\"Europe/Paris\"},\"AUG\":{\"Timezone\":\"America/New_York\"},\"AUH\":{\"Timezone\":\"Asia/Dubai\"},\"AUK\":{\"Timezone\":\"America/Anchorage\"},\"AUO\":{\"Timezone\":\"America/Chicago\"},\"AUQ\":{\"Timezone\":\"Pacific/Marquesas\"},\"AUR\":{\"Timezone\":\"Europe/Paris\"},\"AUS\":{\"Timezone\":\"America/Chicago\"},\"AUU\":{\"Timezone\":\"Australia/Brisbane\"},\"AUW\":{\"Timezone\":\"America/Chicago\"},\"AUX\":{\"Timezone\":\"America/Fortaleza\"},\"AUY\":{\"Timezone\":\"Pacific/Efate\"},\"AVA\":{\"Timezone\":\"Asia/Shanghai\"},\"AVB\":{\"Timezone\":\"Europe/Rome\"},\"AVI\":{\"Timezone\":\"America/Havana\"},\"AVK\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"AVL\":{\"Timezone\":\"America/New_York\"},\"AVN\":{\"Timezone\":\"Europe/Paris\"},\"AVO\":{\"Timezone\":\"America/New_York\"},\"AVP\":{\"Timezone\":\"America/New_York\"},\"AVR\":{\"Timezone\":\"Europe/Lisbon\"},\"AVV\":{\"Timezone\":\"Australia/Hobart\"},\"AVW\":{\"Timezone\":\"America/Phoenix\"},\"AVX\":{\"Timezone\":\"America/Los_Angeles\"},\"AWA\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"AWD\":{\"Timezone\":\"Pacific/Efate\"},\"AWK\":{\"Timezone\":\"Pacific/Johnston\"},\"AWZ\":{\"Timezone\":\"Asia/Tehran\"},\"AXA\":{\"Timezone\":\"America/Anguilla\"},\"AXD\":{\"Timezone\":\"Europe/Athens\"},\"AXF\":{\"Timezone\":null},\"AXJ\":{\"Timezone\":\"Asia/Tokyo\"},\"AXK\":{\"Timezone\":\"Asia/Aden\"},\"AXM\":{\"Timezone\":\"America/Bogota\"},\"AXN\":{\"Timezone\":null},\"AXP\":{\"Timezone\":\"America/Nassau\"},\"AXR\":{\"Timezone\":\"Pacific/Tahiti\"},\"AXT\":{\"Timezone\":\"Asia/Tokyo\"},\"AXU\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"AYK\":{\"Timezone\":\"Asia/Qyzylorda\"},\"AYO\":{\"Timezone\":\"America/Asuncion\"},\"AYP\":{\"Timezone\":\"America/Lima\"},\"AYQ\":{\"Timezone\":\"Australia/Darwin\"},\"AYS\":{\"Timezone\":null},\"AYT\":{\"Timezone\":\"Europe/Istanbul\"},\"AYW\":{\"Timezone\":null},\"AZA\":{\"Timezone\":\"America/Phoenix\"},\"AZD\":{\"Timezone\":\"Asia/Tehran\"},\"AZI\":{\"Timezone\":\"Asia/Dubai\"},\"AZN\":{\"Timezone\":\"Asia/Samarkand\"},\"AZO\":{\"Timezone\":\"America/New_York\"},\"AZR\":{\"Timezone\":\"Africa/Algiers\"},\"AZS\":{\"Timezone\":\"America/Santo_Domingo\"},\"BAB\":{\"Timezone\":\"America/Los_Angeles\"},\"BAD\":{\"Timezone\":\"America/Chicago\"},\"BAF\":{\"Timezone\":\"America/New_York\"},\"BAG\":{\"Timezone\":\"Asia/Manila\"},\"BAH\":{\"Timezone\":\"Asia/Bahrain\"},\"BAI\":{\"Timezone\":\"America/Costa_Rica\"},\"BAL\":{\"Timezone\":\"Europe/Istanbul\"},\"BAQ\":{\"Timezone\":\"America/Bogota\"},\"BAR\":{\"Timezone\":null},\"BAS\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"BAT\":{\"Timezone\":null},\"BAU\":{\"Timezone\":\"America/Sao_Paulo\"},\"BAV\":{\"Timezone\":\"Asia/Shanghai\"},\"BAX\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"BAY\":{\"Timezone\":\"Europe/Bucharest\"},\"BAZ\":{\"Timezone\":\"America/Boa_Vista\"},\"BBA\":{\"Timezone\":\"America/Santiago\"},\"BBC\":{\"Timezone\":null},\"BBD\":{\"Timezone\":null},\"BBG\":{\"Timezone\":\"Pacific/Tarawa\"},\"BBH\":{\"Timezone\":\"Europe/Berlin\"},\"BBI\":{\"Timezone\":\"Asia/Calcutta\"},\"BBJ\":{\"Timezone\":\"Europe/Berlin\"},\"BBK\":{\"Timezone\":\"Africa/Gaborone\"},\"BBL\":{\"Timezone\":\"Australia/Brisbane\"},\"BBM\":{\"Timezone\":\"Asia/Phnom_Penh\"},\"BBN\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"BBO\":{\"Timezone\":\"Africa/Mogadishu\"},\"BBP\":{\"Timezone\":\"Europe/London\"},\"BBQ\":{\"Timezone\":\"America/Antigua\"},\"BBR\":{\"Timezone\":\"America/Guadeloupe\"},\"BBS\":{\"Timezone\":\"Europe/London\"},\"BBT\":{\"Timezone\":\"Africa/Bangui\"},\"BBU\":{\"Timezone\":\"Europe/Bucharest\"},\"BBX\":{\"Timezone\":\"America/New_York\"},\"BCA\":{\"Timezone\":\"America/Havana\"},\"BCD\":{\"Timezone\":\"Asia/Manila\"},\"BCE\":{\"Timezone\":\"America/Denver\"},\"BCH\":{\"Timezone\":\"Asia/Dili\"},\"BCI\":{\"Timezone\":\"Australia/Brisbane\"},\"BCL\":{\"Timezone\":\"America/Costa_Rica\"},\"BCM\":{\"Timezone\":\"Europe/Bucharest\"},\"BCN\":{\"Timezone\":\"Europe/Madrid\"},\"BCO\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"BCT\":{\"Timezone\":\"America/New_York\"},\"BCU\":{\"Timezone\":null},\"BDA\":{\"Timezone\":\"Atlantic/Bermuda\"},\"BDB\":{\"Timezone\":\"Australia/Brisbane\"},\"BDD\":{\"Timezone\":\"Australia/Brisbane\"},\"BDE\":{\"Timezone\":\"America/Chicago\"},\"BDH\":{\"Timezone\":\"Asia/Tehran\"},\"BDI\":{\"Timezone\":null},\"BDJ\":{\"Timezone\":\"Asia/Makassar\"},\"BDL\":{\"Timezone\":\"America/New_York\"},\"BDM\":{\"Timezone\":\"Europe/Istanbul\"},\"BDN\":{\"Timezone\":\"Asia/Karachi\"},\"BDO\":{\"Timezone\":\"Asia/Jakarta\"},\"BDP\":{\"Timezone\":\"Asia/Katmandu\"},\"BDQ\":{\"Timezone\":\"Asia/Calcutta\"},\"BDR\":{\"Timezone\":\"America/New_York\"},\"BDS\":{\"Timezone\":\"Europe/Rome\"},\"BDT\":{\"Timezone\":\"Africa/Kinshasa\"},\"BDU\":{\"Timezone\":\"Europe/Oslo\"},\"BEB\":{\"Timezone\":\"Europe/London\"},\"BEC\":{\"Timezone\":\"America/Chicago\"},\"BED\":{\"Timezone\":\"America/New_York\"},\"BEF\":{\"Timezone\":\"America/Managua\"},\"BEG\":{\"Timezone\":\"Europe/Belgrade\"},\"BEI\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"BEJ\":{\"Timezone\":\"Asia/Makassar\"},\"BEK\":{\"Timezone\":\"Asia/Calcutta\"},\"BEL\":{\"Timezone\":\"America/Belem\"},\"BEM\":{\"Timezone\":\"Africa/Casablanca\"},\"BEN\":{\"Timezone\":\"Africa/Tripoli\"},\"BEO\":{\"Timezone\":\"Australia/Sydney\"},\"BEP\":{\"Timezone\":\"Asia/Calcutta\"},\"BEQ\":{\"Timezone\":\"Europe/London\"},\"BES\":{\"Timezone\":\"Europe/Paris\"},\"BET\":{\"Timezone\":\"America/Anchorage\"},\"BEU\":{\"Timezone\":\"Australia/Brisbane\"},\"BEV\":{\"Timezone\":\"Asia/Jerusalem\"},\"BEW\":{\"Timezone\":\"Africa/Maputo\"},\"BEX\":{\"Timezone\":\"Europe/London\"},\"BEY\":{\"Timezone\":\"Asia/Beirut\"},\"BEZ\":{\"Timezone\":\"Pacific/Tarawa\"},\"BFD\":{\"Timezone\":\"America/New_York\"},\"BFE\":{\"Timezone\":\"Europe/Berlin\"},\"BFF\":{\"Timezone\":\"America/Denver\"},\"BFH\":{\"Timezone\":\"America/Sao_Paulo\"},\"BFI\":{\"Timezone\":\"America/Los_Angeles\"},\"BFJ\":{\"Timezone\":\"Asia/Shanghai\"},\"BFK\":{\"Timezone\":\"America/Denver\"},\"BFL\":{\"Timezone\":\"America/Los_Angeles\"},\"BFM\":{\"Timezone\":\"America/Chicago\"},\"BFN\":{\"Timezone\":\"Africa/Johannesburg\"},\"BFO\":{\"Timezone\":\"Africa/Harare\"},\"BFP\":{\"Timezone\":\"America/New_York\"},\"BFS\":{\"Timezone\":\"Europe/London\"},\"BFT\":{\"Timezone\":\"America/New_York\"},\"BFU\":{\"Timezone\":null},\"BFV\":{\"Timezone\":\"Asia/Bangkok\"},\"BFW\":{\"Timezone\":\"Africa/Algiers\"},\"BFX\":{\"Timezone\":\"Africa/Douala\"},\"BGA\":{\"Timezone\":\"America/Bogota\"},\"BGC\":{\"Timezone\":\"Europe/Lisbon\"},\"BGD\":{\"Timezone\":null},\"BGE\":{\"Timezone\":\"America/New_York\"},\"BGF\":{\"Timezone\":\"Africa/Bangui\"},\"BGG\":{\"Timezone\":\"Europe/Istanbul\"},\"BGI\":{\"Timezone\":\"America/Barbados\"},\"BGL\":{\"Timezone\":null},\"BGM\":{\"Timezone\":\"America/New_York\"},\"BGN\":{\"Timezone\":null},\"BGO\":{\"Timezone\":\"Europe/Oslo\"},\"BGR\":{\"Timezone\":\"America/New_York\"},\"BGW\":{\"Timezone\":\"Asia/Baghdad\"},\"BGX\":{\"Timezone\":\"America/Sao_Paulo\"},\"BGY\":{\"Timezone\":\"Europe/Rome\"},\"BGZ\":{\"Timezone\":\"Europe/Lisbon\"},\"BHB\":{\"Timezone\":\"America/New_York\"},\"BHD\":{\"Timezone\":\"Europe/London\"},\"BHE\":{\"Timezone\":\"Pacific/Auckland\"},\"BHG\":{\"Timezone\":\"America/Tegucigalpa\"},\"BHH\":{\"Timezone\":\"Asia/Riyadh\"},\"BHI\":{\"Timezone\":\"America/Buenos_Aires\"},\"BHJ\":{\"Timezone\":\"Asia/Calcutta\"},\"BHK\":{\"Timezone\":\"Asia/Samarkand\"},\"BHM\":{\"Timezone\":\"America/Chicago\"},\"BHN\":{\"Timezone\":\"Asia/Aden\"},\"BHO\":{\"Timezone\":\"Asia/Calcutta\"},\"BHP\":{\"Timezone\":\"Asia/Katmandu\"},\"BHQ\":{\"Timezone\":\"Australia/Adelaide\"},\"BHR\":{\"Timezone\":\"Asia/Katmandu\"},\"BHS\":{\"Timezone\":\"Australia/Sydney\"},\"BHU\":{\"Timezone\":\"Asia/Calcutta\"},\"BHV\":{\"Timezone\":\"Asia/Karachi\"},\"BHW\":{\"Timezone\":\"Asia/Karachi\"},\"BHX\":{\"Timezone\":\"Europe/London\"},\"BHY\":{\"Timezone\":\"Asia/Shanghai\"},\"BIA\":{\"Timezone\":\"Europe/Paris\"},\"BIB\":{\"Timezone\":null},\"BID\":{\"Timezone\":\"America/New_York\"},\"BIF\":{\"Timezone\":\"America/Denver\"},\"BIG\":{\"Timezone\":\"America/Anchorage\"},\"BIH\":{\"Timezone\":null},\"BIK\":{\"Timezone\":\"Asia/Jayapura\"},\"BIL\":{\"Timezone\":\"America/Denver\"},\"BIM\":{\"Timezone\":\"America/Nassau\"},\"BIN\":{\"Timezone\":\"Asia/Kabul\"},\"BIO\":{\"Timezone\":\"Europe/Madrid\"},\"BIQ\":{\"Timezone\":\"Europe/Paris\"},\"BIR\":{\"Timezone\":\"Asia/Katmandu\"},\"BIS\":{\"Timezone\":\"America/Chicago\"},\"BIU\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"BIX\":{\"Timezone\":\"America/Chicago\"},\"BIY\":{\"Timezone\":\"Africa/Johannesburg\"},\"BJA\":{\"Timezone\":\"Africa/Algiers\"},\"BJB\":{\"Timezone\":\"Asia/Tehran\"},\"BJC\":{\"Timezone\":\"America/Denver\"},\"BJF\":{\"Timezone\":\"Europe/Oslo\"},\"BJH\":{\"Timezone\":\"Asia/Katmandu\"},\"BJI\":{\"Timezone\":\"America/Chicago\"},\"BJL\":{\"Timezone\":\"Africa/Banjul\"},\"BJM\":{\"Timezone\":\"Africa/Bujumbura\"},\"BJO\":{\"Timezone\":\"America/La_Paz\"},\"BJP\":{\"Timezone\":\"America/Sao_Paulo\"},\"BJR\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"BJU\":{\"Timezone\":\"Asia/Katmandu\"},\"BJV\":{\"Timezone\":\"Europe/Istanbul\"},\"BJW\":{\"Timezone\":null},\"BJX\":{\"Timezone\":\"America/Mexico_City\"},\"BJY\":{\"Timezone\":null},\"BJZ\":{\"Timezone\":\"Europe/Madrid\"},\"BKA\":{\"Timezone\":\"Europe/Moscow\"},\"BKB\":{\"Timezone\":\"Asia/Calcutta\"},\"BKC\":{\"Timezone\":\"America/Anchorage\"},\"BKD\":{\"Timezone\":\"America/Chicago\"},\"BKE\":{\"Timezone\":null},\"BKG\":{\"Timezone\":\"America/Chicago\"},\"BKH\":{\"Timezone\":\"Pacific/Honolulu\"},\"BKI\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"BKK\":{\"Timezone\":\"Asia/Bangkok\"},\"BKL\":{\"Timezone\":\"America/New_York\"},\"BKM\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"BKO\":{\"Timezone\":\"Africa/Bamako\"},\"BKQ\":{\"Timezone\":\"Australia/Brisbane\"},\"BKS\":{\"Timezone\":\"Asia/Jakarta\"},\"BKW\":{\"Timezone\":\"America/New_York\"},\"BKY\":{\"Timezone\":\"Africa/Lubumbashi\"},\"BKZ\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"BLA\":{\"Timezone\":\"America/Caracas\"},\"BLB\":{\"Timezone\":\"America/Panama\"},\"BLE\":{\"Timezone\":\"Europe/Stockholm\"},\"BLF\":{\"Timezone\":\"America/New_York\"},\"BLG\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"BLH\":{\"Timezone\":\"America/Los_Angeles\"},\"BLI\":{\"Timezone\":\"America/Los_Angeles\"},\"BLJ\":{\"Timezone\":\"Africa/Algiers\"},\"BLK\":{\"Timezone\":\"Europe/London\"},\"BLL\":{\"Timezone\":\"Europe/Copenhagen\"},\"BLN\":{\"Timezone\":null},\"BLQ\":{\"Timezone\":\"Europe/Rome\"},\"BLR\":{\"Timezone\":\"Asia/Calcutta\"},\"BLT\":{\"Timezone\":\"Australia/Brisbane\"},\"BLV\":{\"Timezone\":\"America/Chicago\"},\"BLZ\":{\"Timezone\":\"Africa/Blantyre\"},\"BMA\":{\"Timezone\":\"Europe/Stockholm\"},\"BMB\":{\"Timezone\":null},\"BMC\":{\"Timezone\":\"America/Denver\"},\"BMD\":{\"Timezone\":\"Indian/Antananarivo\"},\"BME\":{\"Timezone\":\"Australia/Perth\"},\"BMG\":{\"Timezone\":\"America/New_York\"},\"BMI\":{\"Timezone\":\"America/Chicago\"},\"BMK\":{\"Timezone\":\"Europe/Berlin\"},\"BMM\":{\"Timezone\":\"Africa/Libreville\"},\"BMO\":{\"Timezone\":\"Asia/Rangoon\"},\"BMP\":{\"Timezone\":\"Australia/Brisbane\"},\"BMR\":{\"Timezone\":null},\"BMT\":{\"Timezone\":\"America/Chicago\"},\"BMU\":{\"Timezone\":\"Asia/Makassar\"},\"BMV\":{\"Timezone\":\"Asia/Saigon\"},\"BMW\":{\"Timezone\":\"Africa/Algiers\"},\"BMX\":{\"Timezone\":\"America/Anchorage\"},\"BMY\":{\"Timezone\":\"Pacific/Noumea\"},\"BNA\":{\"Timezone\":\"America/Chicago\"},\"BNB\":{\"Timezone\":null},\"BNC\":{\"Timezone\":null},\"BND\":{\"Timezone\":\"Asia/Tehran\"},\"BNE\":{\"Timezone\":\"Australia/Brisbane\"},\"BNG\":{\"Timezone\":null},\"BNI\":{\"Timezone\":\"Africa/Lagos\"},\"BNJ\":{\"Timezone\":null},\"BNK\":{\"Timezone\":\"Australia/Sydney\"},\"BNM\":{\"Timezone\":null},\"BNN\":{\"Timezone\":\"Europe/Oslo\"},\"BNO\":{\"Timezone\":\"America/Los_Angeles\"},\"BNP\":{\"Timezone\":\"Asia/Karachi\"},\"BNS\":{\"Timezone\":\"America/Caracas\"},\"BNU\":{\"Timezone\":\"America/Sao_Paulo\"},\"BNX\":{\"Timezone\":\"Europe/Sarajevo\"},\"BOA\":{\"Timezone\":\"Africa/Kinshasa\"},\"BOB\":{\"Timezone\":\"Pacific/Tahiti\"},\"BOC\":{\"Timezone\":\"America/Panama\"},\"BOD\":{\"Timezone\":\"Europe/Paris\"},\"BOG\":{\"Timezone\":\"America/Bogota\"},\"BOH\":{\"Timezone\":\"Europe/London\"},\"BOI\":{\"Timezone\":\"America/Denver\"},\"BOJ\":{\"Timezone\":\"Europe/Sofia\"},\"BOM\":{\"Timezone\":\"Asia/Calcutta\"},\"BON\":{\"Timezone\":\"America/Curacao\"},\"BOO\":{\"Timezone\":\"Europe/Oslo\"},\"BOR\":{\"Timezone\":\"Europe/Paris\"},\"BOS\":{\"Timezone\":\"America/New_York\"},\"BOU\":{\"Timezone\":\"Europe/Paris\"},\"BOW\":{\"Timezone\":\"America/New_York\"},\"BOX\":{\"Timezone\":null},\"BOY\":{\"Timezone\":\"Africa/Ouagadougou\"},\"BPC\":{\"Timezone\":\"Africa/Douala\"},\"BPE\":{\"Timezone\":\"Asia/Shanghai\"},\"BPF\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"BPG\":{\"Timezone\":\"America/Campo_Grande\"},\"BPH\":{\"Timezone\":null},\"BPI\":{\"Timezone\":null},\"BPL\":{\"Timezone\":null},\"BPM\":{\"Timezone\":\"Asia/Calcutta\"},\"BPN\":{\"Timezone\":\"Asia/Makassar\"},\"BPS\":{\"Timezone\":\"America/Fortaleza\"},\"BPT\":{\"Timezone\":\"America/Chicago\"},\"BPX\":{\"Timezone\":\"Asia/Shanghai\"},\"BPY\":{\"Timezone\":\"Indian/Antananarivo\"},\"BQA\":{\"Timezone\":\"Asia/Manila\"},\"BQB\":{\"Timezone\":\"Australia/Perth\"},\"BQE\":{\"Timezone\":null},\"BQG\":{\"Timezone\":null},\"BQH\":{\"Timezone\":\"Europe/London\"},\"BQJ\":{\"Timezone\":\"Asia/Vladivostok\"},\"BQK\":{\"Timezone\":\"America/New_York\"},\"BQL\":{\"Timezone\":\"Australia/Brisbane\"},\"BQN\":{\"Timezone\":\"America/Puerto_Rico\"},\"BQS\":{\"Timezone\":\"Asia/Yakutsk\"},\"BQT\":{\"Timezone\":\"Europe/Minsk\"},\"BQU\":{\"Timezone\":\"America/St_Vincent\"},\"BRA\":{\"Timezone\":\"America/Fortaleza\"},\"BRC\":{\"Timezone\":\"America/Argentina/Salta\"},\"BRD\":{\"Timezone\":\"America/Chicago\"},\"BRE\":{\"Timezone\":\"Europe/Berlin\"},\"BRI\":{\"Timezone\":\"Europe/Rome\"},\"BRK\":{\"Timezone\":\"Australia/Sydney\"},\"BRL\":{\"Timezone\":\"America/Chicago\"},\"BRM\":{\"Timezone\":\"America/Caracas\"},\"BRN\":{\"Timezone\":\"Europe/Zurich\"},\"BRO\":{\"Timezone\":\"America/Chicago\"},\"BRQ\":{\"Timezone\":\"Europe/Prague\"},\"BRR\":{\"Timezone\":\"Europe/London\"},\"BRS\":{\"Timezone\":\"Europe/London\"},\"BRT\":{\"Timezone\":\"Australia/Darwin\"},\"BRU\":{\"Timezone\":\"Europe/Brussels\"},\"BRV\":{\"Timezone\":\"Europe/Berlin\"},\"BRW\":{\"Timezone\":\"America/Anchorage\"},\"BRX\":{\"Timezone\":\"America/Santo_Domingo\"},\"BSA\":{\"Timezone\":\"Africa/Mogadishu\"},\"BSB\":{\"Timezone\":\"America/Sao_Paulo\"},\"BSC\":{\"Timezone\":\"America/Bogota\"},\"BSD\":{\"Timezone\":\"Asia/Shanghai\"},\"BSF\":{\"Timezone\":\"Pacific/Honolulu\"},\"BSG\":{\"Timezone\":\"Africa/Malabo\"},\"BSJ\":{\"Timezone\":\"Australia/Hobart\"},\"BSK\":{\"Timezone\":\"Africa/Algiers\"},\"BSL\":{\"Timezone\":\"Europe/Paris\"},\"BSO\":{\"Timezone\":null},\"BSR\":{\"Timezone\":\"Asia/Baghdad\"},\"BST\":{\"Timezone\":\"Asia/Kabul\"},\"BSU\":{\"Timezone\":\"Africa/Kinshasa\"},\"BSX\":{\"Timezone\":\"Asia/Rangoon\"},\"BTC\":{\"Timezone\":\"Asia/Colombo\"},\"BTE\":{\"Timezone\":\"Africa/Freetown\"},\"BTH\":{\"Timezone\":\"Asia/Jakarta\"},\"BTI\":{\"Timezone\":\"America/Anchorage\"},\"BTJ\":{\"Timezone\":\"Asia/Jakarta\"},\"BTK\":{\"Timezone\":\"Asia/Irkutsk\"},\"BTL\":{\"Timezone\":null},\"BTM\":{\"Timezone\":\"America/Denver\"},\"BTR\":{\"Timezone\":\"America/Chicago\"},\"BTS\":{\"Timezone\":\"Europe/Bratislava\"},\"BTT\":{\"Timezone\":\"America/Anchorage\"},\"BTU\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"BTV\":{\"Timezone\":\"America/New_York\"},\"BTW\":{\"Timezone\":\"Asia/Makassar\"},\"BTZ\":{\"Timezone\":\"Europe/Istanbul\"},\"BUA\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"BUC\":{\"Timezone\":\"Australia/Brisbane\"},\"BUD\":{\"Timezone\":\"Europe/Budapest\"},\"BUF\":{\"Timezone\":\"America/New_York\"},\"BUG\":{\"Timezone\":\"Africa/Luanda\"},\"BUI\":{\"Timezone\":\"Asia/Jayapura\"},\"BUJ\":{\"Timezone\":\"Africa/Algiers\"},\"BUL\":{\"Timezone\":null},\"BUN\":{\"Timezone\":\"America/Bogota\"},\"BUO\":{\"Timezone\":\"Africa/Mogadishu\"},\"BUP\":{\"Timezone\":\"Asia/Calcutta\"},\"BUQ\":{\"Timezone\":\"Africa/Harare\"},\"BUR\":{\"Timezone\":\"America/Los_Angeles\"},\"BUS\":{\"Timezone\":\"Asia/Tbilisi\"},\"BUT\":{\"Timezone\":null},\"BUU\":{\"Timezone\":null},\"BUW\":{\"Timezone\":null},\"BUX\":{\"Timezone\":\"Africa/Lubumbashi\"},\"BUY\":{\"Timezone\":null},\"BUZ\":{\"Timezone\":\"Asia/Tehran\"},\"BVA\":{\"Timezone\":\"Europe/Paris\"},\"BVB\":{\"Timezone\":\"America/Boa_Vista\"},\"BVC\":{\"Timezone\":\"Atlantic/Cape_Verde\"},\"BVE\":{\"Timezone\":\"Europe/Paris\"},\"BVG\":{\"Timezone\":\"Europe/Oslo\"},\"BVH\":{\"Timezone\":\"America/Boa_Vista\"},\"BVI\":{\"Timezone\":\"Australia/Brisbane\"},\"BVS\":{\"Timezone\":\"America/Belem\"},\"BVY\":{\"Timezone\":\"America/New_York\"},\"BWA\":{\"Timezone\":\"Asia/Katmandu\"},\"BWB\":{\"Timezone\":\"Australia/Perth\"},\"BWE\":{\"Timezone\":\"Europe/Berlin\"},\"BWF\":{\"Timezone\":\"Europe/London\"},\"BWG\":{\"Timezone\":\"America/Chicago\"},\"BWH\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"BWI\":{\"Timezone\":\"America/New_York\"},\"BWK\":{\"Timezone\":\"Europe/Zagreb\"},\"BWN\":{\"Timezone\":\"Asia/Brunei\"},\"BWO\":{\"Timezone\":\"Europe/Moscow\"},\"BWQ\":{\"Timezone\":null},\"BWT\":{\"Timezone\":\"Australia/Melbourne\"},\"BWU\":{\"Timezone\":\"Australia/Sydney\"},\"BWW\":{\"Timezone\":null},\"BWX\":{\"Timezone\":null},\"BXB\":{\"Timezone\":\"Asia/Jayapura\"},\"BXE\":{\"Timezone\":\"Africa/Dakar\"},\"BXG\":{\"Timezone\":\"Australia/Hobart\"},\"BXH\":{\"Timezone\":\"Asia/Qyzylorda\"},\"BXK\":{\"Timezone\":\"America/Phoenix\"},\"BXN\":{\"Timezone\":\"Europe/Istanbul\"},\"BXO\":{\"Timezone\":\"Europe/Zurich\"},\"BXP\":{\"Timezone\":null},\"BXR\":{\"Timezone\":\"Asia/Tehran\"},\"BXU\":{\"Timezone\":\"Asia/Manila\"},\"BXY\":{\"Timezone\":\"Asia/Qyzylorda\"},\"BYC\":{\"Timezone\":\"America/La_Paz\"},\"BYF\":{\"Timezone\":\"Europe/Paris\"},\"BYH\":{\"Timezone\":\"America/Chicago\"},\"BYI\":{\"Timezone\":null},\"BYJ\":{\"Timezone\":\"Europe/Lisbon\"},\"BYK\":{\"Timezone\":\"Africa/Abidjan\"},\"BYM\":{\"Timezone\":\"America/Havana\"},\"BYN\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"BYO\":{\"Timezone\":\"America/Campo_Grande\"},\"BYP\":{\"Timezone\":null},\"BYQ\":{\"Timezone\":null},\"BYR\":{\"Timezone\":\"Europe/Copenhagen\"},\"BYS\":{\"Timezone\":\"America/Los_Angeles\"},\"BYT\":{\"Timezone\":\"Europe/Dublin\"},\"BYU\":{\"Timezone\":\"Europe/Berlin\"},\"BZA\":{\"Timezone\":\"America/Managua\"},\"BZC\":{\"Timezone\":null},\"BZD\":{\"Timezone\":null},\"BZE\":{\"Timezone\":\"America/Belize\"},\"BZG\":{\"Timezone\":\"Europe/Warsaw\"},\"BZH\":{\"Timezone\":\"Africa/Harare\"},\"BZI\":{\"Timezone\":\"Europe/Istanbul\"},\"BZK\":{\"Timezone\":\"Europe/Moscow\"},\"BZL\":{\"Timezone\":\"Asia/Dhaka\"},\"BZN\":{\"Timezone\":\"America/Denver\"},\"BZO\":{\"Timezone\":\"Europe/Rome\"},\"BZR\":{\"Timezone\":\"Europe/Paris\"},\"BZU\":{\"Timezone\":\"Africa/Lubumbashi\"},\"BZV\":{\"Timezone\":\"Africa/Brazzaville\"},\"BZY\":{\"Timezone\":\"Europe/Chisinau\"},\"BZZ\":{\"Timezone\":\"Europe/London\"},\"CAB\":{\"Timezone\":\"Africa/Luanda\"},\"CAC\":{\"Timezone\":\"America/Sao_Paulo\"},\"CAE\":{\"Timezone\":\"America/New_York\"},\"CAF\":{\"Timezone\":\"America/Boa_Vista\"},\"CAG\":{\"Timezone\":\"Europe/Rome\"},\"CAH\":{\"Timezone\":\"Asia/Saigon\"},\"CAI\":{\"Timezone\":\"Africa/Cairo\"},\"CAJ\":{\"Timezone\":\"America/Caracas\"},\"CAK\":{\"Timezone\":\"America/New_York\"},\"CAL\":{\"Timezone\":\"Europe/London\"},\"CAN\":{\"Timezone\":\"Asia/Shanghai\"},\"CAP\":{\"Timezone\":\"America/Port-au-Prince\"},\"CAQ\":{\"Timezone\":\"America/Bogota\"},\"CAR\":{\"Timezone\":\"America/New_York\"},\"CAT\":{\"Timezone\":\"Europe/Lisbon\"},\"CAU\":{\"Timezone\":\"America/Fortaleza\"},\"CAW\":{\"Timezone\":\"America/Sao_Paulo\"},\"CAX\":{\"Timezone\":\"Europe/London\"},\"CAY\":{\"Timezone\":\"America/Cayenne\"},\"CAZ\":{\"Timezone\":\"Australia/Sydney\"},\"CBB\":{\"Timezone\":\"America/La_Paz\"},\"CBD\":{\"Timezone\":\"Asia/Calcutta\"},\"CBE\":{\"Timezone\":\"America/New_York\"},\"CBF\":{\"Timezone\":null},\"CBG\":{\"Timezone\":\"Europe/London\"},\"CBH\":{\"Timezone\":\"Africa/Algiers\"},\"CBJ\":{\"Timezone\":\"America/Santo_Domingo\"},\"CBL\":{\"Timezone\":\"America/Caracas\"},\"CBM\":{\"Timezone\":\"America/Chicago\"},\"CBN\":{\"Timezone\":\"Asia/Jakarta\"},\"CBO\":{\"Timezone\":\"Asia/Manila\"},\"CBQ\":{\"Timezone\":\"Africa/Lagos\"},\"CBR\":{\"Timezone\":\"Australia/Sydney\"},\"CBT\":{\"Timezone\":\"Africa/Luanda\"},\"CBU\":{\"Timezone\":\"Europe/Berlin\"},\"CBV\":{\"Timezone\":\"America/Guatemala\"},\"CCA\":{\"Timezone\":\"America/La_Paz\"},\"CCB\":{\"Timezone\":null},\"CCC\":{\"Timezone\":\"America/Havana\"},\"CCF\":{\"Timezone\":\"Europe/Paris\"},\"CCH\":{\"Timezone\":\"America/Santiago\"},\"CCI\":{\"Timezone\":\"America/Sao_Paulo\"},\"CCJ\":{\"Timezone\":\"Asia/Calcutta\"},\"CCK\":{\"Timezone\":\"Indian/Cocos\"},\"CCL\":{\"Timezone\":\"Australia/Brisbane\"},\"CCM\":{\"Timezone\":\"America/Sao_Paulo\"},\"CCN\":{\"Timezone\":\"Asia/Kabul\"},\"CCP\":{\"Timezone\":\"America/Santiago\"},\"CCR\":{\"Timezone\":\"America/Los_Angeles\"},\"CCS\":{\"Timezone\":\"America/Caracas\"},\"CCU\":{\"Timezone\":\"Asia/Calcutta\"},\"CCV\":{\"Timezone\":\"Pacific/Efate\"},\"CCX\":{\"Timezone\":null},\"CCY\":{\"Timezone\":null},\"CCZ\":{\"Timezone\":\"America/Nassau\"},\"CDA\":{\"Timezone\":\"Australia/Darwin\"},\"CDB\":{\"Timezone\":\"America/Anchorage\"},\"CDC\":{\"Timezone\":\"America/Denver\"},\"CDE\":{\"Timezone\":null},\"CDG\":{\"Timezone\":\"Europe/Paris\"},\"CDJ\":{\"Timezone\":\"America/Belem\"},\"CDN\":{\"Timezone\":\"America/New_York\"},\"CDP\":{\"Timezone\":\"Asia/Calcutta\"},\"CDR\":{\"Timezone\":\"America/Denver\"},\"CDS\":{\"Timezone\":\"America/Chicago\"},\"CDT\":{\"Timezone\":null},\"CDU\":{\"Timezone\":\"Australia/Sydney\"},\"CDV\":{\"Timezone\":\"America/Anchorage\"},\"CDW\":{\"Timezone\":\"America/New_York\"},\"CEB\":{\"Timezone\":\"Asia/Manila\"},\"CEC\":{\"Timezone\":\"America/Los_Angeles\"},\"CED\":{\"Timezone\":\"Australia/Adelaide\"},\"CEE\":{\"Timezone\":\"Europe/Moscow\"},\"CEF\":{\"Timezone\":\"America/New_York\"},\"CEG\":{\"Timezone\":\"Europe/London\"},\"CEI\":{\"Timezone\":\"Asia/Bangkok\"},\"CEJ\":{\"Timezone\":\"Europe/Kiev\"},\"CEK\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"CEM\":{\"Timezone\":\"America/Anchorage\"},\"CEN\":{\"Timezone\":\"America/Hermosillo\"},\"CEQ\":{\"Timezone\":\"Europe/Paris\"},\"CER\":{\"Timezone\":\"Europe/Paris\"},\"CES\":{\"Timezone\":\"Australia/Sydney\"},\"CET\":{\"Timezone\":\"Europe/Paris\"},\"CEU\":{\"Timezone\":\"America/New_York\"},\"CEW\":{\"Timezone\":\"America/Chicago\"},\"CEZ\":{\"Timezone\":\"America/Denver\"},\"CFB\":{\"Timezone\":\"America/Sao_Paulo\"},\"CFC\":{\"Timezone\":\"America/Sao_Paulo\"},\"CFD\":{\"Timezone\":\"America/Chicago\"},\"CFE\":{\"Timezone\":\"Europe/Paris\"},\"CFG\":{\"Timezone\":\"America/Havana\"},\"CFK\":{\"Timezone\":\"Africa/Algiers\"},\"CFN\":{\"Timezone\":\"Europe/Dublin\"},\"CFO\":{\"Timezone\":\"America/Campo_Grande\"},\"CFR\":{\"Timezone\":\"Europe/Paris\"},\"CFS\":{\"Timezone\":\"Australia/Sydney\"},\"CFU\":{\"Timezone\":\"Europe/Athens\"},\"CFV\":{\"Timezone\":null},\"CGB\":{\"Timezone\":\"America/Campo_Grande\"},\"CGD\":{\"Timezone\":\"Asia/Shanghai\"},\"CGF\":{\"Timezone\":\"America/New_York\"},\"CGH\":{\"Timezone\":\"America/Sao_Paulo\"},\"CGI\":{\"Timezone\":\"America/Chicago\"},\"CGJ\":{\"Timezone\":\"Africa/Lusaka\"},\"CGK\":{\"Timezone\":\"Asia/Jakarta\"},\"CGM\":{\"Timezone\":\"Asia/Manila\"},\"CGN\":{\"Timezone\":\"Europe/Berlin\"},\"CGO\":{\"Timezone\":\"Asia/Shanghai\"},\"CGP\":{\"Timezone\":\"Asia/Dhaka\"},\"CGQ\":{\"Timezone\":\"Asia/Shanghai\"},\"CGR\":{\"Timezone\":\"America/Campo_Grande\"},\"CGX\":{\"Timezone\":\"America/Chicago\"},\"CGZ\":{\"Timezone\":\"America/Phoenix\"},\"CHA\":{\"Timezone\":\"America/New_York\"},\"CHC\":{\"Timezone\":\"Pacific/Auckland\"},\"CHF\":{\"Timezone\":\"Asia/Seoul\"},\"CHG\":{\"Timezone\":\"Asia/Shanghai\"},\"CHH\":{\"Timezone\":\"America/Lima\"},\"CHM\":{\"Timezone\":\"America/Lima\"},\"CHN\":{\"Timezone\":\"Asia/Seoul\"},\"CHO\":{\"Timezone\":\"America/New_York\"},\"CHQ\":{\"Timezone\":\"Europe/Athens\"},\"CHR\":{\"Timezone\":\"Europe/Paris\"},\"CHS\":{\"Timezone\":\"America/New_York\"},\"CHT\":{\"Timezone\":\"Pacific/Chatham\"},\"CHU\":{\"Timezone\":\"America/Anchorage\"},\"CHX\":{\"Timezone\":\"America/Panama\"},\"CHY\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"CIA\":{\"Timezone\":\"Europe/Rome\"},\"CIC\":{\"Timezone\":\"America/Los_Angeles\"},\"CID\":{\"Timezone\":\"America/Chicago\"},\"CIF\":{\"Timezone\":\"Asia/Shanghai\"},\"CIH\":{\"Timezone\":\"Asia/Shanghai\"},\"CIJ\":{\"Timezone\":\"America/La_Paz\"},\"CIK\":{\"Timezone\":\"America/Anchorage\"},\"CIO\":{\"Timezone\":\"America/Asuncion\"},\"CIP\":{\"Timezone\":\"Africa/Lusaka\"},\"CIS\":{\"Timezone\":\"Pacific/Enderbury\"},\"CIT\":{\"Timezone\":\"Asia/Qyzylorda\"},\"CIU\":{\"Timezone\":\"America/New_York\"},\"CIW\":{\"Timezone\":\"America/St_Vincent\"},\"CIX\":{\"Timezone\":\"America/Lima\"},\"CIY\":{\"Timezone\":\"Europe/Rome\"},\"CIZ\":{\"Timezone\":\"America/Boa_Vista\"},\"CJA\":{\"Timezone\":\"America/Lima\"},\"CJB\":{\"Timezone\":\"Asia/Calcutta\"},\"CJC\":{\"Timezone\":\"America/Santiago\"},\"CJF\":{\"Timezone\":null},\"CJJ\":{\"Timezone\":\"Asia/Seoul\"},\"CJL\":{\"Timezone\":\"Asia/Karachi\"},\"CJM\":{\"Timezone\":\"Asia/Bangkok\"},\"CJN\":{\"Timezone\":\"Asia/Jakarta\"},\"CJS\":{\"Timezone\":\"America/Mazatlan\"},\"CJU\":{\"Timezone\":\"Asia/Seoul\"},\"CKB\":{\"Timezone\":\"America/New_York\"},\"CKC\":{\"Timezone\":\"Europe/Kiev\"},\"CKG\":{\"Timezone\":\"Asia/Shanghai\"},\"CKH\":{\"Timezone\":\"Asia/Srednekolymsk\"},\"CKI\":{\"Timezone\":null},\"CKL\":{\"Timezone\":\"Europe/Moscow\"},\"CKS\":{\"Timezone\":\"America/Belem\"},\"CKT\":{\"Timezone\":\"Asia/Tehran\"},\"CKV\":{\"Timezone\":\"America/Chicago\"},\"CKY\":{\"Timezone\":\"Africa/Conakry\"},\"CKZ\":{\"Timezone\":\"Europe/Istanbul\"},\"CLD\":{\"Timezone\":\"America/Los_Angeles\"},\"CLE\":{\"Timezone\":\"America/New_York\"},\"CLJ\":{\"Timezone\":\"Europe/Bucharest\"},\"CLL\":{\"Timezone\":\"America/Chicago\"},\"CLM\":{\"Timezone\":\"America/Los_Angeles\"},\"CLN\":{\"Timezone\":\"America/Fortaleza\"},\"CLO\":{\"Timezone\":\"America/Bogota\"},\"CLP\":{\"Timezone\":null},\"CLQ\":{\"Timezone\":\"America/Mexico_City\"},\"CLS\":{\"Timezone\":\"America/Los_Angeles\"},\"CLT\":{\"Timezone\":\"America/New_York\"},\"CLU\":{\"Timezone\":null},\"CLV\":{\"Timezone\":\"America/Sao_Paulo\"},\"CLW\":{\"Timezone\":\"America/New_York\"},\"CLY\":{\"Timezone\":\"Europe/Paris\"},\"CLZ\":{\"Timezone\":\"America/Caracas\"},\"CMA\":{\"Timezone\":\"Australia/Brisbane\"},\"CMB\":{\"Timezone\":\"Asia/Colombo\"},\"CMD\":{\"Timezone\":null},\"CME\":{\"Timezone\":\"America/Mexico_City\"},\"CMF\":{\"Timezone\":\"Europe/Paris\"},\"CMG\":{\"Timezone\":\"America/Campo_Grande\"},\"CMH\":{\"Timezone\":\"America/New_York\"},\"CMI\":{\"Timezone\":\"America/Chicago\"},\"CMJ\":{\"Timezone\":\"Asia/Taipei\"},\"CMK\":{\"Timezone\":\"Africa/Blantyre\"},\"CMN\":{\"Timezone\":\"Africa/Casablanca\"},\"CMP\":{\"Timezone\":\"America/Belem\"},\"CMQ\":{\"Timezone\":null},\"CMR\":{\"Timezone\":\"Europe/Paris\"},\"CMU\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"CMW\":{\"Timezone\":\"America/Havana\"},\"CMX\":{\"Timezone\":\"America/New_York\"},\"CNB\":{\"Timezone\":\"Australia/Sydney\"},\"CNC\":{\"Timezone\":\"Australia/Brisbane\"},\"CND\":{\"Timezone\":\"Europe/Bucharest\"},\"CNF\":{\"Timezone\":\"America/Sao_Paulo\"},\"CNG\":{\"Timezone\":\"Europe/Paris\"},\"CNI\":{\"Timezone\":\"Asia/Shanghai\"},\"CNJ\":{\"Timezone\":\"Australia/Brisbane\"},\"CNL\":{\"Timezone\":\"Europe/Copenhagen\"},\"CNM\":{\"Timezone\":\"America/Denver\"},\"CNN\":{\"Timezone\":null},\"CNO\":{\"Timezone\":null},\"CNP\":{\"Timezone\":\"America/Scoresbysund\"},\"CNQ\":{\"Timezone\":\"America/Cordoba\"},\"CNR\":{\"Timezone\":null},\"CNS\":{\"Timezone\":\"Australia/Brisbane\"},\"CNU\":{\"Timezone\":null},\"CNW\":{\"Timezone\":\"America/Chicago\"},\"CNX\":{\"Timezone\":\"Asia/Bangkok\"},\"CNY\":{\"Timezone\":\"America/Denver\"},\"COC\":{\"Timezone\":\"America/Cordoba\"},\"COD\":{\"Timezone\":\"America/Denver\"},\"COE\":{\"Timezone\":\"America/Los_Angeles\"},\"COF\":{\"Timezone\":\"America/New_York\"},\"COG\":{\"Timezone\":\"America/Bogota\"},\"COH\":{\"Timezone\":\"Asia/Calcutta\"},\"COJ\":{\"Timezone\":\"Australia/Sydney\"},\"COK\":{\"Timezone\":\"Asia/Calcutta\"},\"CON\":{\"Timezone\":\"America/New_York\"},\"COO\":{\"Timezone\":\"Africa/Porto-Novo\"},\"COQ\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"COR\":{\"Timezone\":\"America/Cordoba\"},\"COS\":{\"Timezone\":\"America/Denver\"},\"COT\":{\"Timezone\":\"America/Chicago\"},\"COU\":{\"Timezone\":\"America/Chicago\"},\"COX\":{\"Timezone\":\"America/Nassau\"},\"COZ\":{\"Timezone\":\"America/Santo_Domingo\"},\"CPA\":{\"Timezone\":\"Africa/Monrovia\"},\"CPB\":{\"Timezone\":\"America/Bogota\"},\"CPC\":{\"Timezone\":\"America/Argentina/Salta\"},\"CPD\":{\"Timezone\":\"Australia/Adelaide\"},\"CPE\":{\"Timezone\":\"America/Mexico_City\"},\"CPH\":{\"Timezone\":\"Europe/Copenhagen\"},\"CPQ\":{\"Timezone\":\"America/Sao_Paulo\"},\"CPR\":{\"Timezone\":\"America/Denver\"},\"CPT\":{\"Timezone\":\"Africa/Johannesburg\"},\"CPV\":{\"Timezone\":\"America/Fortaleza\"},\"CPX\":{\"Timezone\":\"America/Puerto_Rico\"},\"CQA\":{\"Timezone\":null},\"CQD\":{\"Timezone\":\"Asia/Tehran\"},\"CQF\":{\"Timezone\":\"Europe/Paris\"},\"CQM\":{\"Timezone\":\"Europe/Madrid\"},\"CQS\":{\"Timezone\":null},\"CRA\":{\"Timezone\":\"Europe/Bucharest\"},\"CRC\":{\"Timezone\":\"America/Bogota\"},\"CRD\":{\"Timezone\":\"America/Catamarca\"},\"CRE\":{\"Timezone\":\"America/New_York\"},\"CRG\":{\"Timezone\":null},\"CRI\":{\"Timezone\":\"America/Nassau\"},\"CRK\":{\"Timezone\":\"Asia/Manila\"},\"CRL\":{\"Timezone\":\"Europe/Brussels\"},\"CRM\":{\"Timezone\":\"Asia/Manila\"},\"CRP\":{\"Timezone\":\"America/Chicago\"},\"CRQ\":{\"Timezone\":\"America/Fortaleza\"},\"CRV\":{\"Timezone\":\"Europe/Rome\"},\"CRW\":{\"Timezone\":\"America/New_York\"},\"CRZ\":{\"Timezone\":\"Asia/Ashgabat\"},\"CSA\":{\"Timezone\":\"Europe/London\"},\"CSB\":{\"Timezone\":\"Europe/Bucharest\"},\"CSF\":{\"Timezone\":\"Europe/Paris\"},\"CSG\":{\"Timezone\":\"America/New_York\"},\"CSH\":{\"Timezone\":\"Europe/Moscow\"},\"CSK\":{\"Timezone\":\"Africa/Dakar\"},\"CSM\":{\"Timezone\":\"America/Chicago\"},\"CSO\":{\"Timezone\":\"Europe/Berlin\"},\"CSV\":{\"Timezone\":null},\"CSX\":{\"Timezone\":\"Asia/Shanghai\"},\"CSY\":{\"Timezone\":\"Europe/Moscow\"},\"CSZ\":{\"Timezone\":\"America/Buenos_Aires\"},\"CTA\":{\"Timezone\":\"Europe/Rome\"},\"CTB\":{\"Timezone\":\"America/Denver\"},\"CTC\":{\"Timezone\":\"America/Catamarca\"},\"CTD\":{\"Timezone\":\"America/Panama\"},\"CTG\":{\"Timezone\":\"America/Bogota\"},\"CTH\":{\"Timezone\":\"America/New_York\"},\"CTL\":{\"Timezone\":\"Australia/Brisbane\"},\"CTM\":{\"Timezone\":\"America/Cancun\"},\"CTN\":{\"Timezone\":\"Australia/Brisbane\"},\"CTS\":{\"Timezone\":\"Asia/Tokyo\"},\"CTT\":{\"Timezone\":\"Europe/Paris\"},\"CTU\":{\"Timezone\":\"Asia/Shanghai\"},\"CTY\":{\"Timezone\":\"America/New_York\"},\"CUA\":{\"Timezone\":\"America/Mazatlan\"},\"CUB\":{\"Timezone\":null},\"CUC\":{\"Timezone\":\"America/Bogota\"},\"CUD\":{\"Timezone\":null},\"CUE\":{\"Timezone\":\"America/Guayaquil\"},\"CUF\":{\"Timezone\":\"Europe/Rome\"},\"CUH\":{\"Timezone\":\"America/Chicago\"},\"CUL\":{\"Timezone\":\"America/Mazatlan\"},\"CUM\":{\"Timezone\":\"America/Caracas\"},\"CUN\":{\"Timezone\":\"America/Cancun\"},\"CUP\":{\"Timezone\":\"America/Caracas\"},\"CUQ\":{\"Timezone\":\"Australia/Brisbane\"},\"CUR\":{\"Timezone\":\"America/Curacao\"},\"CUT\":{\"Timezone\":\"America/Argentina/Salta\"},\"CUU\":{\"Timezone\":\"America/Mazatlan\"},\"CUZ\":{\"Timezone\":\"America/Lima\"},\"CVC\":{\"Timezone\":null},\"CVE\":{\"Timezone\":null},\"CVF\":{\"Timezone\":\"Europe/Paris\"},\"CVG\":{\"Timezone\":\"America/New_York\"},\"CVJ\":{\"Timezone\":\"America/Mexico_City\"},\"CVM\":{\"Timezone\":\"America/Mexico_City\"},\"CVN\":{\"Timezone\":\"America/Denver\"},\"CVO\":{\"Timezone\":\"America/Los_Angeles\"},\"CVQ\":{\"Timezone\":\"Australia/Perth\"},\"CVS\":{\"Timezone\":\"America/Denver\"},\"CVT\":{\"Timezone\":\"Europe/London\"},\"CVU\":{\"Timezone\":\"Atlantic/Azores\"},\"CWA\":{\"Timezone\":\"America/Chicago\"},\"CWB\":{\"Timezone\":\"America/Sao_Paulo\"},\"CWC\":{\"Timezone\":\"Europe/Kiev\"},\"CWE\":{\"Timezone\":\"Africa/Cairo\"},\"CWI\":{\"Timezone\":\"America/Chicago\"},\"CWJ\":{\"Timezone\":null},\"CWL\":{\"Timezone\":\"Europe/London\"},\"CWT\":{\"Timezone\":\"Australia/Sydney\"},\"CWW\":{\"Timezone\":null},\"CXA\":{\"Timezone\":\"America/Caracas\"},\"CXB\":{\"Timezone\":\"Asia/Dhaka\"},\"CXH\":{\"Timezone\":\"America/Vancouver\"},\"CXI\":{\"Timezone\":null},\"CXJ\":{\"Timezone\":\"America/Sao_Paulo\"},\"CXL\":{\"Timezone\":\"America/Los_Angeles\"},\"CXO\":{\"Timezone\":\"America/Chicago\"},\"CXP\":{\"Timezone\":\"Asia/Jakarta\"},\"CXR\":{\"Timezone\":\"Asia/Saigon\"},\"CYA\":{\"Timezone\":\"America/Port-au-Prince\"},\"CYB\":{\"Timezone\":\"America/Cayman\"},\"CYF\":{\"Timezone\":\"America/Anchorage\"},\"CYG\":{\"Timezone\":null},\"CYI\":{\"Timezone\":\"Asia/Taipei\"},\"CYO\":{\"Timezone\":\"America/Havana\"},\"CYP\":{\"Timezone\":\"Asia/Manila\"},\"CYR\":{\"Timezone\":\"America/Montevideo\"},\"CYS\":{\"Timezone\":\"America/Denver\"},\"CYT\":{\"Timezone\":\"America/Anchorage\"},\"CYU\":{\"Timezone\":\"Asia/Manila\"},\"CYW\":{\"Timezone\":\"America/Mexico_City\"},\"CYX\":{\"Timezone\":\"Asia/Srednekolymsk\"},\"CYZ\":{\"Timezone\":\"Asia/Manila\"},\"CZA\":{\"Timezone\":\"America/Mexico_City\"},\"CZE\":{\"Timezone\":\"America/Caracas\"},\"CZF\":{\"Timezone\":\"America/Anchorage\"},\"CZL\":{\"Timezone\":\"Africa/Algiers\"},\"CZM\":{\"Timezone\":\"America/Cancun\"},\"CZS\":{\"Timezone\":\"America/Rio_Branco\"},\"CZU\":{\"Timezone\":\"America/Bogota\"},\"CZX\":{\"Timezone\":\"Asia/Shanghai\"},\"DAA\":{\"Timezone\":null},\"DAB\":{\"Timezone\":\"America/New_York\"},\"DAC\":{\"Timezone\":\"Asia/Dhaka\"},\"DAD\":{\"Timezone\":\"Asia/Saigon\"},\"DAG\":{\"Timezone\":null},\"DAL\":{\"Timezone\":\"America/Chicago\"},\"DAM\":{\"Timezone\":\"Asia/Damascus\"},\"DAN\":{\"Timezone\":\"America/New_York\"},\"DAR\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"DAT\":{\"Timezone\":\"Asia/Shanghai\"},\"DAU\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"DAV\":{\"Timezone\":\"America/Panama\"},\"DAX\":{\"Timezone\":\"Asia/Shanghai\"},\"DAY\":{\"Timezone\":\"America/New_York\"},\"DBA\":{\"Timezone\":\"Asia/Karachi\"},\"DBB\":{\"Timezone\":\"Africa/Cairo\"},\"DBC\":{\"Timezone\":null},\"DBD\":{\"Timezone\":\"Asia/Calcutta\"},\"DBM\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"DBN\":{\"Timezone\":\"America/New_York\"},\"DBO\":{\"Timezone\":\"Australia/Sydney\"},\"DBQ\":{\"Timezone\":\"America/Chicago\"},\"DBT\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"DBV\":{\"Timezone\":\"Europe/Zagreb\"},\"DCA\":{\"Timezone\":\"America/New_York\"},\"DCF\":{\"Timezone\":\"America/Dominica\"},\"DCI\":{\"Timezone\":\"Europe/Rome\"},\"DCM\":{\"Timezone\":\"Europe/Paris\"},\"DCN\":{\"Timezone\":null},\"DCT\":{\"Timezone\":\"America/Nassau\"},\"DCU\":{\"Timezone\":null},\"DCY\":{\"Timezone\":\"Asia/Shanghai\"},\"DDC\":{\"Timezone\":\"America/Chicago\"},\"DDG\":{\"Timezone\":\"Asia/Shanghai\"},\"DEA\":{\"Timezone\":\"Asia/Karachi\"},\"DEB\":{\"Timezone\":\"Europe/Budapest\"},\"DEC\":{\"Timezone\":\"America/Chicago\"},\"DED\":{\"Timezone\":\"Asia/Calcutta\"},\"DEE\":{\"Timezone\":null},\"DEF\":{\"Timezone\":\"Asia/Tehran\"},\"DEL\":{\"Timezone\":\"Asia/Calcutta\"},\"DEM\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"DEN\":{\"Timezone\":\"America/Denver\"},\"DES\":{\"Timezone\":\"Indian/Mahe\"},\"DET\":{\"Timezone\":\"America/New_York\"},\"DEX\":{\"Timezone\":null},\"DEZ\":{\"Timezone\":\"Asia/Damascus\"},\"DFW\":{\"Timezone\":\"America/Chicago\"},\"DGE\":{\"Timezone\":\"Australia/Sydney\"},\"DGL\":{\"Timezone\":\"America/Phoenix\"},\"DGO\":{\"Timezone\":\"America/Mexico_City\"},\"DGP\":{\"Timezone\":null},\"DGT\":{\"Timezone\":\"Asia/Manila\"},\"DHA\":{\"Timezone\":\"Asia/Riyadh\"},\"DHF\":{\"Timezone\":\"Asia/Dubai\"},\"DHI\":{\"Timezone\":\"Asia/Katmandu\"},\"DHM\":{\"Timezone\":\"Asia/Calcutta\"},\"DHN\":{\"Timezone\":\"America/Chicago\"},\"DHR\":{\"Timezone\":\"Europe/Amsterdam\"},\"DHT\":{\"Timezone\":\"America/Chicago\"},\"DIA\":{\"Timezone\":\"Asia/Qatar\"},\"DIB\":{\"Timezone\":\"Asia/Calcutta\"},\"DIE\":{\"Timezone\":\"Indian/Antananarivo\"},\"DIG\":{\"Timezone\":\"Asia/Shanghai\"},\"DIJ\":{\"Timezone\":\"Europe/Paris\"},\"DIK\":{\"Timezone\":\"America/Denver\"},\"DIL\":{\"Timezone\":\"Asia/Dili\"},\"DIN\":{\"Timezone\":\"Asia/Saigon\"},\"DIQ\":{\"Timezone\":null},\"DIR\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"DIS\":{\"Timezone\":\"Africa/Brazzaville\"},\"DIU\":{\"Timezone\":\"Asia/Calcutta\"},\"DIY\":{\"Timezone\":\"Europe/Istanbul\"},\"DJB\":{\"Timezone\":\"Asia/Jakarta\"},\"DJE\":{\"Timezone\":\"Africa/Tunis\"},\"DJG\":{\"Timezone\":\"Africa/Algiers\"},\"DJJ\":{\"Timezone\":\"Asia/Jayapura\"},\"DJO\":{\"Timezone\":\"Africa/Abidjan\"},\"DKI\":{\"Timezone\":\"Australia/Brisbane\"},\"DKK\":{\"Timezone\":\"America/New_York\"},\"DKR\":{\"Timezone\":\"Africa/Dakar\"},\"DKS\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"DKV\":{\"Timezone\":null},\"DLA\":{\"Timezone\":\"Africa/Douala\"},\"DLC\":{\"Timezone\":\"Asia/Shanghai\"},\"DLD\":{\"Timezone\":\"Europe/Oslo\"},\"DLE\":{\"Timezone\":\"Europe/Paris\"},\"DLF\":{\"Timezone\":\"America/Chicago\"},\"DLG\":{\"Timezone\":\"America/Anchorage\"},\"DLH\":{\"Timezone\":\"America/Chicago\"},\"DLI\":{\"Timezone\":\"Asia/Saigon\"},\"DLK\":{\"Timezone\":null},\"DLM\":{\"Timezone\":\"Europe/Istanbul\"},\"DLS\":{\"Timezone\":\"America/Los_Angeles\"},\"DLU\":{\"Timezone\":\"Asia/Shanghai\"},\"DLY\":{\"Timezone\":\"Pacific/Efate\"},\"DLZ\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"DMA\":{\"Timezone\":\"America/Phoenix\"},\"DMB\":{\"Timezone\":\"Asia/Qyzylorda\"},\"DMD\":{\"Timezone\":\"Australia/Brisbane\"},\"DME\":{\"Timezone\":\"Europe/Moscow\"},\"DMK\":{\"Timezone\":\"Asia/Bangkok\"},\"DMM\":{\"Timezone\":\"Asia/Riyadh\"},\"DMN\":{\"Timezone\":null},\"DMT\":{\"Timezone\":\"America/Campo_Grande\"},\"DMU\":{\"Timezone\":\"Asia/Calcutta\"},\"DNA\":{\"Timezone\":\"Asia/Tokyo\"},\"DND\":{\"Timezone\":\"Europe/London\"},\"DNH\":{\"Timezone\":\"Asia/Shanghai\"},\"DNK\":{\"Timezone\":\"Europe/Kiev\"},\"DNL\":{\"Timezone\":\"America/New_York\"},\"DNN\":{\"Timezone\":\"America/New_York\"},\"DNP\":{\"Timezone\":\"Asia/Katmandu\"},\"DNQ\":{\"Timezone\":null},\"DNR\":{\"Timezone\":\"Europe/Paris\"},\"DNV\":{\"Timezone\":\"America/Chicago\"},\"DNZ\":{\"Timezone\":\"Europe/Istanbul\"},\"DOB\":{\"Timezone\":null},\"DOD\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"DOG\":{\"Timezone\":\"Africa/Khartoum\"},\"DOH\":{\"Timezone\":null},\"DOK\":{\"Timezone\":\"Europe/Kiev\"},\"DOL\":{\"Timezone\":\"Europe/Paris\"},\"DOM\":{\"Timezone\":\"America/Dominica\"},\"DOP\":{\"Timezone\":\"Asia/Katmandu\"},\"DOU\":{\"Timezone\":\"America/Campo_Grande\"},\"DOV\":{\"Timezone\":\"America/New_York\"},\"DOY\":{\"Timezone\":\"Asia/Shanghai\"},\"DPA\":{\"Timezone\":\"America/Chicago\"},\"DPL\":{\"Timezone\":\"Asia/Manila\"},\"DPO\":{\"Timezone\":\"Australia/Melbourne\"},\"DPS\":{\"Timezone\":\"Asia/Makassar\"},\"DQA\":{\"Timezone\":\"Asia/Shanghai\"},\"DQM\":{\"Timezone\":null},\"DRA\":{\"Timezone\":null},\"DRB\":{\"Timezone\":\"Australia/Perth\"},\"DRE\":{\"Timezone\":\"America/New_York\"},\"DRG\":{\"Timezone\":\"America/Anchorage\"},\"DRI\":{\"Timezone\":\"America/Chicago\"},\"DRJ\":{\"Timezone\":\"America/Paramaribo\"},\"DRK\":{\"Timezone\":\"America/Costa_Rica\"},\"DRN\":{\"Timezone\":null},\"DRO\":{\"Timezone\":\"America/Denver\"},\"DRS\":{\"Timezone\":\"Europe/Berlin\"},\"DRT\":{\"Timezone\":\"America/Chicago\"},\"DRV\":{\"Timezone\":null},\"DRW\":{\"Timezone\":\"Australia/Darwin\"},\"DSA\":{\"Timezone\":\"Europe/London\"},\"DSD\":{\"Timezone\":\"America/Guadeloupe\"},\"DSE\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"DSI\":{\"Timezone\":\"America/Chicago\"},\"DSK\":{\"Timezone\":\"Asia/Karachi\"},\"DSM\":{\"Timezone\":\"America/Chicago\"},\"DSN\":{\"Timezone\":\"Asia/Shanghai\"},\"DSO\":{\"Timezone\":\"Asia/Pyongyang\"},\"DSS\":{\"Timezone\":null},\"DTA\":{\"Timezone\":\"America/Denver\"},\"DTB\":{\"Timezone\":\"Asia/Jakarta\"},\"DTD\":{\"Timezone\":\"Asia/Makassar\"},\"DTE\":{\"Timezone\":\"Asia/Manila\"},\"DTI\":{\"Timezone\":\"America/Sao_Paulo\"},\"DTM\":{\"Timezone\":\"Europe/Berlin\"},\"DTN\":{\"Timezone\":\"America/Chicago\"},\"DTU\":{\"Timezone\":null},\"DTW\":{\"Timezone\":\"America/New_York\"},\"DU9\":{\"Timezone\":null},\"DUB\":{\"Timezone\":\"Europe/Dublin\"},\"DUC\":{\"Timezone\":\"America/Chicago\"},\"DUD\":{\"Timezone\":\"Pacific/Auckland\"},\"DUE\":{\"Timezone\":\"Africa/Luanda\"},\"DUG\":{\"Timezone\":\"America/Phoenix\"},\"DUJ\":{\"Timezone\":\"America/New_York\"},\"DUM\":{\"Timezone\":\"Asia/Jakarta\"},\"DUR\":{\"Timezone\":\"Africa/Johannesburg\"},\"DUS\":{\"Timezone\":\"Europe/Berlin\"},\"DUT\":{\"Timezone\":\"America/Anchorage\"},\"DVL\":{\"Timezone\":\"America/Chicago\"},\"DVO\":{\"Timezone\":\"Asia/Manila\"},\"DVT\":{\"Timezone\":\"America/Phoenix\"},\"DWA\":{\"Timezone\":null},\"DWB\":{\"Timezone\":\"Indian/Antananarivo\"},\"DWC\":{\"Timezone\":\"Asia/Dubai\"},\"DWD\":{\"Timezone\":null},\"DWH\":{\"Timezone\":\"America/Chicago\"},\"DXB\":{\"Timezone\":\"Asia/Dubai\"},\"DXR\":{\"Timezone\":\"America/New_York\"},\"DYA\":{\"Timezone\":null},\"DYG\":{\"Timezone\":\"Asia/Shanghai\"},\"DYL\":{\"Timezone\":\"America/New_York\"},\"DYR\":{\"Timezone\":\"Asia/Anadyr\"},\"DYS\":{\"Timezone\":\"America/Chicago\"},\"DYU\":{\"Timezone\":\"Asia/Dushanbe\"},\"DZA\":{\"Timezone\":\"Indian/Mayotte\"},\"DZN\":{\"Timezone\":\"Asia/Qyzylorda\"},\"DZO\":{\"Timezone\":\"America/Montevideo\"},\"EAA\":{\"Timezone\":\"America/Anchorage\"},\"EAE\":{\"Timezone\":\"Pacific/Efate\"},\"EAM\":{\"Timezone\":\"Asia/Riyadh\"},\"EAS\":{\"Timezone\":\"Europe/Madrid\"},\"EAT\":{\"Timezone\":\"America/Los_Angeles\"},\"EAU\":{\"Timezone\":\"America/Chicago\"},\"EBA\":{\"Timezone\":\"Europe/Rome\"},\"EBB\":{\"Timezone\":\"Africa/Kampala\"},\"EBD\":{\"Timezone\":\"Africa/Khartoum\"},\"EBG\":{\"Timezone\":\"America/Bogota\"},\"EBH\":{\"Timezone\":null},\"EBJ\":{\"Timezone\":\"Europe/Copenhagen\"},\"EBL\":{\"Timezone\":\"Asia/Baghdad\"},\"EBM\":{\"Timezone\":\"Africa/Tunis\"},\"EBU\":{\"Timezone\":\"Europe/Paris\"},\"ECA\":{\"Timezone\":\"America/New_York\"},\"ECG\":{\"Timezone\":\"America/New_York\"},\"ECH\":{\"Timezone\":null},\"ECI\":{\"Timezone\":null},\"ECN\":{\"Timezone\":\"Asia/Nicosia\"},\"ECP\":{\"Timezone\":\"America/Chicago\"},\"ECV\":{\"Timezone\":null},\"EDD\":{\"Timezone\":null},\"EDF\":{\"Timezone\":\"America/Anchorage\"},\"EDI\":{\"Timezone\":\"Europe/London\"},\"EDL\":{\"Timezone\":\"Africa/Nairobi\"},\"EDM\":{\"Timezone\":\"Europe/Paris\"},\"EDO\":{\"Timezone\":\"Europe/Istanbul\"},\"EDR\":{\"Timezone\":\"Australia/Brisbane\"},\"EDW\":{\"Timezone\":\"America/Los_Angeles\"},\"EED\":{\"Timezone\":null},\"EEK\":{\"Timezone\":\"America/Anchorage\"},\"EEN\":{\"Timezone\":\"America/New_York\"},\"EFD\":{\"Timezone\":\"America/Chicago\"},\"EFG\":{\"Timezone\":null},\"EFL\":{\"Timezone\":\"Europe/Athens\"},\"EGC\":{\"Timezone\":\"Europe/Paris\"},\"EGE\":{\"Timezone\":\"America/Denver\"},\"EGH\":{\"Timezone\":\"Africa/Cairo\"},\"EGI\":{\"Timezone\":null},\"EGM\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"EGN\":{\"Timezone\":\"Africa/Khartoum\"},\"EGO\":{\"Timezone\":\"Europe/Moscow\"},\"EGS\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"EGV\":{\"Timezone\":\"America/Chicago\"},\"EGX\":{\"Timezone\":\"America/Anchorage\"},\"EHL\":{\"Timezone\":\"America/Argentina/Salta\"},\"EHM\":{\"Timezone\":\"America/Anchorage\"},\"EIB\":{\"Timezone\":\"Europe/Berlin\"},\"EIE\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"EIK\":{\"Timezone\":\"Europe/Moscow\"},\"EIL\":{\"Timezone\":\"America/Anchorage\"},\"EIN\":{\"Timezone\":\"Europe/Amsterdam\"},\"EIS\":{\"Timezone\":\"America/Tortola\"},\"EIY\":{\"Timezone\":\"Asia/Jerusalem\"},\"EJA\":{\"Timezone\":\"America/Bogota\"},\"EJH\":{\"Timezone\":\"Asia/Riyadh\"},\"EJN\":{\"Timezone\":null},\"EKA\":{\"Timezone\":null},\"EKB\":{\"Timezone\":\"Asia/Qyzylorda\"},\"EKI\":{\"Timezone\":null},\"EKN\":{\"Timezone\":\"America/New_York\"},\"EKO\":{\"Timezone\":\"America/Los_Angeles\"},\"EKS\":{\"Timezone\":null},\"EKT\":{\"Timezone\":\"Europe/Stockholm\"},\"ELB\":{\"Timezone\":\"America/Bogota\"},\"ELC\":{\"Timezone\":\"Australia/Darwin\"},\"ELD\":{\"Timezone\":\"America/Chicago\"},\"ELF\":{\"Timezone\":\"Africa/Khartoum\"},\"ELG\":{\"Timezone\":\"Africa/Algiers\"},\"ELH\":{\"Timezone\":\"America/Nassau\"},\"ELI\":{\"Timezone\":\"America/Anchorage\"},\"ELM\":{\"Timezone\":\"America/New_York\"},\"ELO\":{\"Timezone\":\"America/Cordoba\"},\"ELP\":{\"Timezone\":\"America/Denver\"},\"ELQ\":{\"Timezone\":\"Asia/Riyadh\"},\"ELS\":{\"Timezone\":\"Africa/Johannesburg\"},\"ELT\":{\"Timezone\":\"Africa/Cairo\"},\"ELU\":{\"Timezone\":\"Africa/Algiers\"},\"ELV\":{\"Timezone\":\"America/Anchorage\"},\"ELY\":{\"Timezone\":\"America/Los_Angeles\"},\"EMA\":{\"Timezone\":\"Europe/London\"},\"EMD\":{\"Timezone\":\"Australia/Brisbane\"},\"EME\":{\"Timezone\":\"Europe/Berlin\"},\"EMK\":{\"Timezone\":\"America/Anchorage\"},\"EML\":{\"Timezone\":\"Europe/Zurich\"},\"EMN\":{\"Timezone\":\"Africa/Nouakchott\"},\"EMP\":{\"Timezone\":\"America/Chicago\"},\"EMT\":{\"Timezone\":null},\"ENA\":{\"Timezone\":\"America/Anchorage\"},\"ENC\":{\"Timezone\":\"Europe/Paris\"},\"END\":{\"Timezone\":\"America/Chicago\"},\"ENE\":{\"Timezone\":\"Asia/Makassar\"},\"ENF\":{\"Timezone\":\"Europe/Helsinki\"},\"ENH\":{\"Timezone\":\"Asia/Shanghai\"},\"ENK\":{\"Timezone\":\"Europe/London\"},\"ENN\":{\"Timezone\":null},\"ENO\":{\"Timezone\":null},\"ENS\":{\"Timezone\":\"Europe/Amsterdam\"},\"ENT\":{\"Timezone\":\"Pacific/Majuro\"},\"ENU\":{\"Timezone\":\"Africa/Lagos\"},\"ENV\":{\"Timezone\":\"America/Denver\"},\"ENW\":{\"Timezone\":\"America/Chicago\"},\"ENY\":{\"Timezone\":\"Asia/Shanghai\"},\"EOH\":{\"Timezone\":\"America/Bogota\"},\"EOI\":{\"Timezone\":\"Europe/London\"},\"EOK\":{\"Timezone\":\"America/Chicago\"},\"EOR\":{\"Timezone\":\"America/Caracas\"},\"EOZ\":{\"Timezone\":\"America/Caracas\"},\"EPA\":{\"Timezone\":\"America/Buenos_Aires\"},\"EPL\":{\"Timezone\":\"Europe/Paris\"},\"EPR\":{\"Timezone\":\"Australia/Perth\"},\"EPU\":{\"Timezone\":\"Europe/Tallinn\"},\"EQS\":{\"Timezone\":\"America/Catamarca\"},\"ERC\":{\"Timezone\":\"Europe/Istanbul\"},\"ERD\":{\"Timezone\":null},\"ERF\":{\"Timezone\":\"Europe/Berlin\"},\"ERG\":{\"Timezone\":\"Asia/Irkutsk\"},\"ERH\":{\"Timezone\":\"Africa/Casablanca\"},\"ERI\":{\"Timezone\":\"America/New_York\"},\"ERL\":{\"Timezone\":null},\"ERM\":{\"Timezone\":\"America/Sao_Paulo\"},\"ERN\":{\"Timezone\":\"America/Boa_Vista\"},\"ERS\":{\"Timezone\":\"Africa/Windhoek\"},\"ERV\":{\"Timezone\":\"America/Chicago\"},\"ERZ\":{\"Timezone\":\"Europe/Istanbul\"},\"ESB\":{\"Timezone\":\"Europe/Istanbul\"},\"ESC\":{\"Timezone\":\"America/New_York\"},\"ESD\":{\"Timezone\":\"America/Los_Angeles\"},\"ESE\":{\"Timezone\":\"America/Tijuana\"},\"ESF\":{\"Timezone\":\"America/Chicago\"},\"ESG\":{\"Timezone\":\"America/Asuncion\"},\"ESH\":{\"Timezone\":\"Europe/London\"},\"ESK\":{\"Timezone\":\"Europe/Istanbul\"},\"ESL\":{\"Timezone\":\"Europe/Moscow\"},\"ESM\":{\"Timezone\":\"America/Guayaquil\"},\"ESN\":{\"Timezone\":\"America/New_York\"},\"ESR\":{\"Timezone\":\"America/Santiago\"},\"ESS\":{\"Timezone\":\"Europe/Berlin\"},\"ESU\":{\"Timezone\":\"Africa/Casablanca\"},\"ETB\":{\"Timezone\":null},\"ETH\":{\"Timezone\":\"Asia/Jerusalem\"},\"ETR\":{\"Timezone\":\"America/Guayaquil\"},\"ETS\":{\"Timezone\":null},\"ETZ\":{\"Timezone\":\"Europe/Paris\"},\"EUA\":{\"Timezone\":\"Pacific/Tongatapu\"},\"EUF\":{\"Timezone\":\"America/Chicago\"},\"EUG\":{\"Timezone\":\"America/Los_Angeles\"},\"EUM\":{\"Timezone\":\"Europe/Berlin\"},\"EUN\":{\"Timezone\":\"Africa/El_Aaiun\"},\"EUQ\":{\"Timezone\":\"Asia/Manila\"},\"EUX\":{\"Timezone\":\"America/Curacao\"},\"EVE\":{\"Timezone\":\"Europe/Oslo\"},\"EVG\":{\"Timezone\":\"Europe/Stockholm\"},\"EVN\":{\"Timezone\":\"Asia/Yerevan\"},\"EVV\":{\"Timezone\":\"America/Chicago\"},\"EVW\":{\"Timezone\":\"America/Denver\"},\"EVX\":{\"Timezone\":\"Europe/Paris\"},\"EWB\":{\"Timezone\":\"America/New_York\"},\"EWK\":{\"Timezone\":\"America/Chicago\"},\"EWN\":{\"Timezone\":\"America/New_York\"},\"EWR\":{\"Timezone\":\"America/New_York\"},\"EXT\":{\"Timezone\":\"Europe/London\"},\"EYK\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"EYP\":{\"Timezone\":\"America/Bogota\"},\"EYW\":{\"Timezone\":\"America/New_York\"},\"EZE\":{\"Timezone\":\"America/Buenos_Aires\"},\"EZS\":{\"Timezone\":\"Europe/Istanbul\"},\"EZV\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"FAA\":{\"Timezone\":\"Africa/Conakry\"},\"FAB\":{\"Timezone\":\"Europe/London\"},\"FAC\":{\"Timezone\":null},\"FAE\":{\"Timezone\":\"Atlantic/Faeroe\"},\"FAF\":{\"Timezone\":\"America/New_York\"},\"FAH\":{\"Timezone\":null},\"FAI\":{\"Timezone\":\"America/Anchorage\"},\"FAJ\":{\"Timezone\":\"America/Puerto_Rico\"},\"FAN\":{\"Timezone\":\"Europe/Oslo\"},\"FAO\":{\"Timezone\":\"Europe/Lisbon\"},\"FAR\":{\"Timezone\":\"America/Chicago\"},\"FAT\":{\"Timezone\":\"America/Los_Angeles\"},\"FAV\":{\"Timezone\":\"Pacific/Tahiti\"},\"FAY\":{\"Timezone\":\"America/New_York\"},\"FAZ\":{\"Timezone\":\"Asia/Tehran\"},\"FBA\":{\"Timezone\":\"America/Boa_Vista\"},\"FBD\":{\"Timezone\":\"Asia/Kabul\"},\"FBE\":{\"Timezone\":\"America/Sao_Paulo\"},\"FBG\":{\"Timezone\":\"America/New_York\"},\"FBK\":{\"Timezone\":\"America/Anchorage\"},\"FBM\":{\"Timezone\":\"Africa/Lubumbashi\"},\"FBR\":{\"Timezone\":\"America/Denver\"},\"FBU\":{\"Timezone\":\"Europe/Oslo\"},\"FCA\":{\"Timezone\":\"America/Denver\"},\"FCB\":{\"Timezone\":\"Africa/Johannesburg\"},\"FCM\":{\"Timezone\":\"America/Chicago\"},\"FCN\":{\"Timezone\":\"Europe/Berlin\"},\"FCO\":{\"Timezone\":\"Europe/Rome\"},\"FCS\":{\"Timezone\":\"America/Denver\"},\"FDF\":{\"Timezone\":\"America/Martinique\"},\"FDH\":{\"Timezone\":\"Europe/Berlin\"},\"FDO\":{\"Timezone\":\"America/Buenos_Aires\"},\"FDU\":{\"Timezone\":\"Africa/Kinshasa\"},\"FDY\":{\"Timezone\":\"America/New_York\"},\"FEG\":{\"Timezone\":\"Asia/Samarkand\"},\"FEL\":{\"Timezone\":\"Europe/Berlin\"},\"FEN\":{\"Timezone\":\"America/Fortaleza\"},\"FET\":{\"Timezone\":null},\"FEZ\":{\"Timezone\":\"Africa/Casablanca\"},\"FFA\":{\"Timezone\":\"America/New_York\"},\"FFD\":{\"Timezone\":\"Europe/London\"},\"FFO\":{\"Timezone\":\"America/New_York\"},\"FFT\":{\"Timezone\":\"America/New_York\"},\"FFU\":{\"Timezone\":\"America/Santiago\"},\"FGI\":{\"Timezone\":\"Pacific/Apia\"},\"FGU\":{\"Timezone\":\"Pacific/Tahiti\"},\"FHU\":{\"Timezone\":\"America/Phoenix\"},\"FIE\":{\"Timezone\":\"Europe/London\"},\"FIG\":{\"Timezone\":\"Africa/Conakry\"},\"FIH\":{\"Timezone\":\"Africa/Kinshasa\"},\"FIK\":{\"Timezone\":null},\"FIZ\":{\"Timezone\":\"Australia/Perth\"},\"FJR\":{\"Timezone\":\"Asia/Dubai\"},\"FKB\":{\"Timezone\":\"Europe/Berlin\"},\"FKI\":{\"Timezone\":\"Africa/Lubumbashi\"},\"FKJ\":{\"Timezone\":\"Asia/Tokyo\"},\"FKL\":{\"Timezone\":\"America/New_York\"},\"FKQ\":{\"Timezone\":\"Asia/Jayapura\"},\"FKS\":{\"Timezone\":\"Asia/Tokyo\"},\"FLA\":{\"Timezone\":\"America/Bogota\"},\"FLB\":{\"Timezone\":null},\"FLD\":{\"Timezone\":\"America/Chicago\"},\"FLF\":{\"Timezone\":\"Europe/Berlin\"},\"FLG\":{\"Timezone\":\"America/Phoenix\"},\"FLL\":{\"Timezone\":\"America/New_York\"},\"FLN\":{\"Timezone\":\"America/Sao_Paulo\"},\"FLO\":{\"Timezone\":\"America/New_York\"},\"FLP\":{\"Timezone\":null},\"FLR\":{\"Timezone\":\"Europe/Rome\"},\"FLS\":{\"Timezone\":\"Australia/Melbourne\"},\"FLV\":{\"Timezone\":\"America/Chicago\"},\"FLW\":{\"Timezone\":\"Atlantic/Azores\"},\"FLZ\":{\"Timezone\":\"Asia/Jakarta\"},\"FMA\":{\"Timezone\":\"America/Cordoba\"},\"FME\":{\"Timezone\":\"America/New_York\"},\"FMH\":{\"Timezone\":\"America/New_York\"},\"FMI\":{\"Timezone\":\"Africa/Lubumbashi\"},\"FMM\":{\"Timezone\":\"Europe/Berlin\"},\"FMN\":{\"Timezone\":\"America/Denver\"},\"FMO\":{\"Timezone\":\"Europe/Berlin\"},\"FMY\":{\"Timezone\":\"America/New_York\"},\"FNA\":{\"Timezone\":\"Africa/Freetown\"},\"FNB\":{\"Timezone\":null},\"FNC\":{\"Timezone\":\"Europe/Lisbon\"},\"FNI\":{\"Timezone\":\"Europe/Paris\"},\"FNJ\":{\"Timezone\":\"Asia/Pyongyang\"},\"FNL\":{\"Timezone\":\"America/Denver\"},\"FNR\":{\"Timezone\":\"America/Anchorage\"},\"FNT\":{\"Timezone\":\"America/New_York\"},\"FNU\":{\"Timezone\":\"Europe/Rome\"},\"FOC\":{\"Timezone\":\"Asia/Shanghai\"},\"FOD\":{\"Timezone\":\"America/Chicago\"},\"FOE\":{\"Timezone\":\"America/Chicago\"},\"FOG\":{\"Timezone\":\"Europe/Rome\"},\"FOK\":{\"Timezone\":\"America/New_York\"},\"FOM\":{\"Timezone\":\"Africa/Douala\"},\"FON\":{\"Timezone\":\"America/Costa_Rica\"},\"FOR\":{\"Timezone\":\"America/Fortaleza\"},\"FOS\":{\"Timezone\":\"Australia/Perth\"},\"FPO\":{\"Timezone\":\"America/Nassau\"},\"FPR\":{\"Timezone\":\"America/New_York\"},\"FRA\":{\"Timezone\":\"Europe/Berlin\"},\"FRB\":{\"Timezone\":null},\"FRC\":{\"Timezone\":\"America/Sao_Paulo\"},\"FRD\":{\"Timezone\":\"America/Los_Angeles\"},\"FRE\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"FRG\":{\"Timezone\":\"America/New_York\"},\"FRI\":{\"Timezone\":\"America/Chicago\"},\"FRJ\":{\"Timezone\":\"Europe/Paris\"},\"FRL\":{\"Timezone\":\"Europe/Rome\"},\"FRN\":{\"Timezone\":\"America/Anchorage\"},\"FRO\":{\"Timezone\":\"Europe/Oslo\"},\"FRS\":{\"Timezone\":\"America/Guatemala\"},\"FRU\":{\"Timezone\":\"Asia/Bishkek\"},\"FRW\":{\"Timezone\":\"Africa/Gaborone\"},\"FRY\":{\"Timezone\":\"America/New_York\"},\"FRZ\":{\"Timezone\":\"Europe/Berlin\"},\"FSC\":{\"Timezone\":\"Europe/Paris\"},\"FSD\":{\"Timezone\":\"America/Chicago\"},\"FSI\":{\"Timezone\":\"America/Chicago\"},\"FSM\":{\"Timezone\":\"America/Chicago\"},\"FSP\":{\"Timezone\":\"America/Miquelon\"},\"FSS\":{\"Timezone\":null},\"FST\":{\"Timezone\":\"America/Chicago\"},\"FTA\":{\"Timezone\":\"Pacific/Efate\"},\"FTE\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"FTI\":{\"Timezone\":\"Pacific/Pago_Pago\"},\"FTK\":{\"Timezone\":\"America/New_York\"},\"FTU\":{\"Timezone\":\"Indian/Antananarivo\"},\"FTW\":{\"Timezone\":\"America/Chicago\"},\"FTX\":{\"Timezone\":\"Africa/Brazzaville\"},\"FTY\":{\"Timezone\":\"America/New_York\"},\"FUE\":{\"Timezone\":\"Atlantic/Canary\"},\"FUG\":{\"Timezone\":\"Asia/Shanghai\"},\"FUJ\":{\"Timezone\":\"Asia/Tokyo\"},\"FUK\":{\"Timezone\":\"Asia/Tokyo\"},\"FUL\":{\"Timezone\":\"America/Los_Angeles\"},\"FUN\":{\"Timezone\":\"Pacific/Funafuti\"},\"FUO\":{\"Timezone\":\"Asia/Shanghai\"},\"FUT\":{\"Timezone\":\"Pacific/Wallis\"},\"FWA\":{\"Timezone\":\"America/New_York\"},\"FWH\":{\"Timezone\":\"America/Chicago\"},\"FXE\":{\"Timezone\":\"America/New_York\"},\"FXO\":{\"Timezone\":\"Africa/Maputo\"},\"FYJ\":{\"Timezone\":null},\"FYN\":{\"Timezone\":null},\"FYT\":{\"Timezone\":\"Africa/Ndjamena\"},\"FYU\":{\"Timezone\":\"America/Anchorage\"},\"FYV\":{\"Timezone\":\"America/Chicago\"},\"FZO\":{\"Timezone\":\"Europe/London\"},\"GAD\":{\"Timezone\":\"America/Chicago\"},\"GAE\":{\"Timezone\":\"Africa/Tunis\"},\"GAF\":{\"Timezone\":\"Africa/Tunis\"},\"GAH\":{\"Timezone\":\"Australia/Brisbane\"},\"GAI\":{\"Timezone\":\"America/New_York\"},\"GAJ\":{\"Timezone\":\"Asia/Tokyo\"},\"GAL\":{\"Timezone\":\"America/Anchorage\"},\"GAM\":{\"Timezone\":\"America/Anchorage\"},\"GAN\":{\"Timezone\":\"Indian/Maldives\"},\"GAO\":{\"Timezone\":\"America/Havana\"},\"GAQ\":{\"Timezone\":\"Africa/Bamako\"},\"GAS\":{\"Timezone\":\"Africa/Nairobi\"},\"GAU\":{\"Timezone\":\"Asia/Calcutta\"},\"GAY\":{\"Timezone\":\"Asia/Calcutta\"},\"GBA\":{\"Timezone\":\"Europe/London\"},\"GBB\":{\"Timezone\":\"Asia/Baku\"},\"GBD\":{\"Timezone\":\"America/Chicago\"},\"GBE\":{\"Timezone\":\"Africa/Gaborone\"},\"GBG\":{\"Timezone\":null},\"GBJ\":{\"Timezone\":\"America/Guadeloupe\"},\"GBK\":{\"Timezone\":\"Africa/Freetown\"},\"GBT\":{\"Timezone\":\"Asia/Tehran\"},\"GBZ\":{\"Timezone\":\"Pacific/Auckland\"},\"GCC\":{\"Timezone\":\"America/Denver\"},\"GCH\":{\"Timezone\":\"Asia/Tehran\"},\"GCI\":{\"Timezone\":\"Europe/Guernsey\"},\"GCJ\":{\"Timezone\":\"Africa/Johannesburg\"},\"GCK\":{\"Timezone\":\"America/Chicago\"},\"GCM\":{\"Timezone\":\"America/Cayman\"},\"GCN\":{\"Timezone\":\"America/Phoenix\"},\"GDC\":{\"Timezone\":null},\"GDE\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"GDL\":{\"Timezone\":\"America/Mexico_City\"},\"GDN\":{\"Timezone\":\"Europe/Warsaw\"},\"GDO\":{\"Timezone\":\"America/Caracas\"},\"GDQ\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"GDT\":{\"Timezone\":\"America/Grand_Turk\"},\"GDV\":{\"Timezone\":\"America/Denver\"},\"GDW\":{\"Timezone\":\"America/New_York\"},\"GDX\":{\"Timezone\":\"Asia/Srednekolymsk\"},\"GDZ\":{\"Timezone\":\"Europe/Moscow\"},\"GEA\":{\"Timezone\":\"Pacific/Noumea\"},\"GED\":{\"Timezone\":\"America/New_York\"},\"GEG\":{\"Timezone\":\"America/Los_Angeles\"},\"GEL\":{\"Timezone\":\"America/Sao_Paulo\"},\"GEO\":{\"Timezone\":\"America/Guyana\"},\"GER\":{\"Timezone\":\"America/Havana\"},\"GES\":{\"Timezone\":\"Asia/Manila\"},\"GET\":{\"Timezone\":\"Australia/Perth\"},\"GEV\":{\"Timezone\":\"Europe/Stockholm\"},\"GEX\":{\"Timezone\":\"Australia/Hobart\"},\"GFF\":{\"Timezone\":\"Australia/Sydney\"},\"GFK\":{\"Timezone\":\"America/Chicago\"},\"GFL\":{\"Timezone\":\"America/New_York\"},\"GFN\":{\"Timezone\":\"Australia/Sydney\"},\"GFO\":{\"Timezone\":\"America/Guyana\"},\"GFR\":{\"Timezone\":\"Europe/Paris\"},\"GFY\":{\"Timezone\":\"Africa/Windhoek\"},\"GGE\":{\"Timezone\":\"America/New_York\"},\"GGG\":{\"Timezone\":\"America/Chicago\"},\"GGM\":{\"Timezone\":\"Africa/Nairobi\"},\"GGS\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"GGT\":{\"Timezone\":\"America/Nassau\"},\"GGW\":{\"Timezone\":\"America/Denver\"},\"GHA\":{\"Timezone\":\"Africa/Algiers\"},\"GHB\":{\"Timezone\":\"America/Nassau\"},\"GHC\":{\"Timezone\":\"America/Nassau\"},\"GHF\":{\"Timezone\":\"Europe/Berlin\"},\"GHT\":{\"Timezone\":\"Africa/Tripoli\"},\"GHU\":{\"Timezone\":\"America/Cordoba\"},\"GIB\":{\"Timezone\":\"Europe/Gibraltar\"},\"GIC\":{\"Timezone\":\"Australia/Brisbane\"},\"GID\":{\"Timezone\":null},\"GIF\":{\"Timezone\":\"America/New_York\"},\"GIG\":{\"Timezone\":\"America/Sao_Paulo\"},\"GII\":{\"Timezone\":null},\"GIL\":{\"Timezone\":\"Asia/Karachi\"},\"GIR\":{\"Timezone\":\"America/Bogota\"},\"GIS\":{\"Timezone\":\"Pacific/Auckland\"},\"GIT\":{\"Timezone\":null},\"GIU\":{\"Timezone\":\"Asia/Colombo\"},\"GIZ\":{\"Timezone\":\"Asia/Riyadh\"},\"GJA\":{\"Timezone\":\"America/Tegucigalpa\"},\"GJL\":{\"Timezone\":\"Africa/Algiers\"},\"GJM\":{\"Timezone\":\"America/Boa_Vista\"},\"GJR\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"GJT\":{\"Timezone\":\"America/Denver\"},\"GKA\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"GKE\":{\"Timezone\":\"Europe/Berlin\"},\"GKK\":{\"Timezone\":\"Indian/Maldives\"},\"GKL\":{\"Timezone\":\"Australia/Brisbane\"},\"GKN\":{\"Timezone\":\"America/Anchorage\"},\"GLA\":{\"Timezone\":\"Europe/London\"},\"GLD\":{\"Timezone\":\"America/Denver\"},\"GLF\":{\"Timezone\":\"America/Costa_Rica\"},\"GLH\":{\"Timezone\":\"America/Chicago\"},\"GLI\":{\"Timezone\":\"Australia/Sydney\"},\"GLK\":{\"Timezone\":\"Africa/Mogadishu\"},\"GLO\":{\"Timezone\":\"Europe/London\"},\"GLR\":{\"Timezone\":null},\"GLS\":{\"Timezone\":\"America/Chicago\"},\"GLT\":{\"Timezone\":\"Australia/Brisbane\"},\"GLU\":{\"Timezone\":null},\"GLV\":{\"Timezone\":\"America/Anchorage\"},\"GLW\":{\"Timezone\":null},\"GLZ\":{\"Timezone\":\"Europe/Amsterdam\"},\"GMA\":{\"Timezone\":\"Africa/Kinshasa\"},\"GMB\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"GMD\":{\"Timezone\":\"Africa/Casablanca\"},\"GME\":{\"Timezone\":\"Europe/Minsk\"},\"GML\":{\"Timezone\":\"Europe/Kiev\"},\"GMO\":{\"Timezone\":null},\"GMP\":{\"Timezone\":\"Asia/Seoul\"},\"GMQ\":{\"Timezone\":null},\"GMR\":{\"Timezone\":\"Pacific/Gambier\"},\"GMU\":{\"Timezone\":null},\"GMV\":{\"Timezone\":\"America/Denver\"},\"GMZ\":{\"Timezone\":\"Atlantic/Canary\"},\"GNA\":{\"Timezone\":\"Europe/Minsk\"},\"GNB\":{\"Timezone\":\"Europe/Paris\"},\"GND\":{\"Timezone\":\"America/Grenada\"},\"GNI\":{\"Timezone\":\"Asia/Taipei\"},\"GNM\":{\"Timezone\":\"America/Fortaleza\"},\"GNR\":{\"Timezone\":\"America/Argentina/Salta\"},\"GNS\":{\"Timezone\":\"Asia/Jakarta\"},\"GNT\":{\"Timezone\":\"America/Denver\"},\"GNV\":{\"Timezone\":\"America/New_York\"},\"GNY\":{\"Timezone\":\"Europe/Istanbul\"},\"GNZ\":{\"Timezone\":\"Africa/Gaborone\"},\"GOA\":{\"Timezone\":\"Europe/Rome\"},\"GOB\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"GOH\":{\"Timezone\":\"America/Godthab\"},\"GOI\":{\"Timezone\":\"Asia/Calcutta\"},\"GOJ\":{\"Timezone\":\"Europe/Moscow\"},\"GOM\":{\"Timezone\":\"Africa/Kigali\"},\"GON\":{\"Timezone\":\"America/New_York\"},\"GOO\":{\"Timezone\":null},\"GOP\":{\"Timezone\":\"Asia/Calcutta\"},\"GOQ\":{\"Timezone\":\"Asia/Shanghai\"},\"GOR\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"GOT\":{\"Timezone\":\"Europe/Stockholm\"},\"GOU\":{\"Timezone\":\"Africa/Douala\"},\"GOV\":{\"Timezone\":\"Australia/Darwin\"},\"GOZ\":{\"Timezone\":\"Europe/Sofia\"},\"GPA\":{\"Timezone\":\"Europe/Athens\"},\"GPB\":{\"Timezone\":\"America/Sao_Paulo\"},\"GPI\":{\"Timezone\":\"America/Bogota\"},\"GPL\":{\"Timezone\":\"America/Costa_Rica\"},\"GPN\":{\"Timezone\":null},\"GPO\":{\"Timezone\":\"America/Argentina/Salta\"},\"GPS\":{\"Timezone\":\"Pacific/Galapagos\"},\"GPT\":{\"Timezone\":\"America/Chicago\"},\"GPZ\":{\"Timezone\":\"America/Chicago\"},\"GQQ\":{\"Timezone\":\"America/New_York\"},\"GRB\":{\"Timezone\":\"America/Chicago\"},\"GRF\":{\"Timezone\":\"America/Los_Angeles\"},\"GRI\":{\"Timezone\":\"America/Chicago\"},\"GRJ\":{\"Timezone\":\"Africa/Johannesburg\"},\"GRK\":{\"Timezone\":\"America/Chicago\"},\"GRM\":{\"Timezone\":\"America/Chicago\"},\"GRO\":{\"Timezone\":\"Europe/Madrid\"},\"GRP\":{\"Timezone\":\"America/Fortaleza\"},\"GRQ\":{\"Timezone\":\"Europe/Amsterdam\"},\"GRR\":{\"Timezone\":\"America/New_York\"},\"GRS\":{\"Timezone\":\"Europe/Rome\"},\"GRU\":{\"Timezone\":\"America/Sao_Paulo\"},\"GRW\":{\"Timezone\":\"Atlantic/Azores\"},\"GRX\":{\"Timezone\":\"Europe/Madrid\"},\"GRY\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"GRZ\":{\"Timezone\":\"Europe/Vienna\"},\"GSB\":{\"Timezone\":\"America/New_York\"},\"GSE\":{\"Timezone\":\"Europe/Stockholm\"},\"GSI\":{\"Timezone\":\"America/Cayenne\"},\"GSJ\":{\"Timezone\":\"America/Guatemala\"},\"GSO\":{\"Timezone\":\"America/New_York\"},\"GSP\":{\"Timezone\":\"America/New_York\"},\"GSQ\":{\"Timezone\":\"Africa/Cairo\"},\"GST\":{\"Timezone\":\"America/Anchorage\"},\"GTE\":{\"Timezone\":\"Australia/Darwin\"},\"GTF\":{\"Timezone\":\"America/Denver\"},\"GTI\":{\"Timezone\":\"Europe/Berlin\"},\"GTN\":{\"Timezone\":\"Pacific/Auckland\"},\"GTO\":{\"Timezone\":\"Asia/Makassar\"},\"GTR\":{\"Timezone\":\"America/Chicago\"},\"GUA\":{\"Timezone\":\"America/Guatemala\"},\"GUB\":{\"Timezone\":\"America/Tijuana\"},\"GUC\":{\"Timezone\":\"America/Denver\"},\"GUF\":{\"Timezone\":\"America/Chicago\"},\"GUH\":{\"Timezone\":null},\"GUI\":{\"Timezone\":\"America/Caracas\"},\"GUJ\":{\"Timezone\":\"America/Sao_Paulo\"},\"GUL\":{\"Timezone\":\"Australia/Sydney\"},\"GUM\":{\"Timezone\":\"Pacific/Guam\"},\"GUP\":{\"Timezone\":\"America/Denver\"},\"GUQ\":{\"Timezone\":\"America/Caracas\"},\"GUR\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"GUS\":{\"Timezone\":\"America/New_York\"},\"GUT\":{\"Timezone\":\"Europe/Berlin\"},\"GUU\":{\"Timezone\":null},\"GUW\":{\"Timezone\":\"Asia/Oral\"},\"GUX\":{\"Timezone\":\"Asia/Calcutta\"},\"GUY\":{\"Timezone\":null},\"GUZ\":{\"Timezone\":null},\"GVA\":{\"Timezone\":\"Europe/Paris\"},\"GVL\":{\"Timezone\":\"America/New_York\"},\"GVN\":{\"Timezone\":null},\"GVR\":{\"Timezone\":\"America/Sao_Paulo\"},\"GVT\":{\"Timezone\":\"America/Chicago\"},\"GVX\":{\"Timezone\":\"Europe/Stockholm\"},\"GWD\":{\"Timezone\":\"Asia/Karachi\"},\"GWE\":{\"Timezone\":\"Africa/Harare\"},\"GWL\":{\"Timezone\":\"Asia/Calcutta\"},\"GWO\":{\"Timezone\":\"America/Chicago\"},\"GWT\":{\"Timezone\":\"Europe/Berlin\"},\"GWY\":{\"Timezone\":\"Europe/Dublin\"},\"GXF\":{\"Timezone\":\"Asia/Aden\"},\"GXG\":{\"Timezone\":\"Africa/Luanda\"},\"GXH\":{\"Timezone\":\"Asia/Shanghai\"},\"GXQ\":{\"Timezone\":\"America/Santiago\"},\"GXY\":{\"Timezone\":null},\"GYA\":{\"Timezone\":\"America/La_Paz\"},\"GYD\":{\"Timezone\":\"Asia/Baku\"},\"GYE\":{\"Timezone\":\"America/Guayaquil\"},\"GYG\":{\"Timezone\":\"Asia/Yakutsk\"},\"GYI\":{\"Timezone\":\"Africa/Kigali\"},\"GYL\":{\"Timezone\":\"Australia/Perth\"},\"GYM\":{\"Timezone\":\"America/Hermosillo\"},\"GYN\":{\"Timezone\":\"America/Sao_Paulo\"},\"GYR\":{\"Timezone\":\"America/Phoenix\"},\"GYS\":{\"Timezone\":\"Asia/Shanghai\"},\"GYU\":{\"Timezone\":\"Asia/Shanghai\"},\"GYY\":{\"Timezone\":\"America/Chicago\"},\"GZA\":{\"Timezone\":\"Asia/Gaza\"},\"GZI\":{\"Timezone\":null},\"GZM\":{\"Timezone\":\"Europe/Malta\"},\"GZO\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"GZP\":{\"Timezone\":\"Europe/Istanbul\"},\"GZT\":{\"Timezone\":\"Europe/Istanbul\"},\"GZW\":{\"Timezone\":\"Asia/Tehran\"},\"HAA\":{\"Timezone\":\"Europe/Oslo\"},\"HAC\":{\"Timezone\":\"Asia/Tokyo\"},\"HAD\":{\"Timezone\":\"Europe/Stockholm\"},\"HAF\":{\"Timezone\":null},\"HAH\":{\"Timezone\":\"Indian/Comoro\"},\"HAJ\":{\"Timezone\":\"Europe/Berlin\"},\"HAK\":{\"Timezone\":\"Asia/Shanghai\"},\"HAM\":{\"Timezone\":\"Europe/Berlin\"},\"HAN\":{\"Timezone\":\"Asia/Saigon\"},\"HAO\":{\"Timezone\":\"America/New_York\"},\"HAQ\":{\"Timezone\":\"Indian/Maldives\"},\"HAR\":{\"Timezone\":\"America/New_York\"},\"HAS\":{\"Timezone\":\"Asia/Riyadh\"},\"HAU\":{\"Timezone\":\"Europe/Oslo\"},\"HAV\":{\"Timezone\":\"America/Havana\"},\"HAW\":{\"Timezone\":\"Europe/London\"},\"HBA\":{\"Timezone\":\"Australia/Melbourne\"},\"HBE\":{\"Timezone\":\"Africa/Cairo\"},\"HBG\":{\"Timezone\":\"America/Chicago\"},\"HBR\":{\"Timezone\":\"America/Chicago\"},\"HBX\":{\"Timezone\":\"Asia/Calcutta\"},\"HCJ\":{\"Timezone\":null},\"HCN\":{\"Timezone\":\"Asia/Taipei\"},\"HCQ\":{\"Timezone\":\"Australia/Perth\"},\"HCR\":{\"Timezone\":\"America/Anchorage\"},\"HCW\":{\"Timezone\":\"America/New_York\"},\"HDD\":{\"Timezone\":\"Asia/Karachi\"},\"HDE\":{\"Timezone\":null},\"HDF\":{\"Timezone\":\"Europe/Berlin\"},\"HDG\":{\"Timezone\":\"Asia/Shanghai\"},\"HDH\":{\"Timezone\":\"Pacific/Honolulu\"},\"HDI\":{\"Timezone\":\"America/New_York\"},\"HDM\":{\"Timezone\":\"Asia/Tehran\"},\"HDN\":{\"Timezone\":\"America/Denver\"},\"HDR\":{\"Timezone\":\"Asia/Tehran\"},\"HDS\":{\"Timezone\":\"Africa/Johannesburg\"},\"HDY\":{\"Timezone\":\"Asia/Bangkok\"},\"HEA\":{\"Timezone\":\"Asia/Kabul\"},\"HEH\":{\"Timezone\":\"Asia/Rangoon\"},\"HEI\":{\"Timezone\":\"Europe/Berlin\"},\"HEK\":{\"Timezone\":\"Asia/Shanghai\"},\"HEL\":{\"Timezone\":\"Europe/Helsinki\"},\"HEM\":{\"Timezone\":\"Europe/Helsinki\"},\"HER\":{\"Timezone\":\"Europe/Athens\"},\"HET\":{\"Timezone\":\"Asia/Shanghai\"},\"HEW\":{\"Timezone\":\"Europe/Athens\"},\"HEX\":{\"Timezone\":\"America/Santo_Domingo\"},\"HFA\":{\"Timezone\":\"Asia/Jerusalem\"},\"HFD\":{\"Timezone\":\"America/New_York\"},\"HFE\":{\"Timezone\":\"Asia/Shanghai\"},\"HFN\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"HFS\":{\"Timezone\":\"Europe/Stockholm\"},\"HFT\":{\"Timezone\":\"Europe/Oslo\"},\"HGA\":{\"Timezone\":\"Africa/Mogadishu\"},\"HGD\":{\"Timezone\":\"Australia/Brisbane\"},\"HGE\":{\"Timezone\":\"America/Caracas\"},\"HGH\":{\"Timezone\":\"Asia/Shanghai\"},\"HGI\":{\"Timezone\":null},\"HGL\":{\"Timezone\":\"Europe/Berlin\"},\"HGN\":{\"Timezone\":\"Asia/Bangkok\"},\"HGO\":{\"Timezone\":\"Africa/Abidjan\"},\"HGR\":{\"Timezone\":\"America/New_York\"},\"HGS\":{\"Timezone\":\"Africa/Freetown\"},\"HGU\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"HHE\":{\"Timezone\":\"Asia/Tokyo\"},\"HHH\":{\"Timezone\":\"America/New_York\"},\"HHI\":{\"Timezone\":\"Pacific/Honolulu\"},\"HHN\":{\"Timezone\":\"Europe/Berlin\"},\"HHP\":{\"Timezone\":\"Asia/Hong_Kong\"},\"HHQ\":{\"Timezone\":\"Asia/Bangkok\"},\"HHR\":{\"Timezone\":\"America/Los_Angeles\"},\"HHZ\":{\"Timezone\":null},\"HIA\":{\"Timezone\":\"Asia/Shanghai\"},\"HIB\":{\"Timezone\":\"America/Chicago\"},\"HID\":{\"Timezone\":\"Australia/Brisbane\"},\"HIF\":{\"Timezone\":\"America/Denver\"},\"HII\":{\"Timezone\":\"America/Phoenix\"},\"HIJ\":{\"Timezone\":\"Asia/Tokyo\"},\"HIM\":{\"Timezone\":null},\"HIN\":{\"Timezone\":\"Asia/Seoul\"},\"HIO\":{\"Timezone\":\"America/Los_Angeles\"},\"HIR\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"HIW\":{\"Timezone\":\"Asia/Tokyo\"},\"HJJ\":{\"Timezone\":\"Asia/Shanghai\"},\"HJR\":{\"Timezone\":\"Asia/Calcutta\"},\"HKD\":{\"Timezone\":\"Asia/Tokyo\"},\"HKG\":{\"Timezone\":\"Asia/Hong_Kong\"},\"HKK\":{\"Timezone\":\"Pacific/Auckland\"},\"HKN\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"HKT\":{\"Timezone\":\"Asia/Bangkok\"},\"HKY\":{\"Timezone\":\"America/New_York\"},\"HLA\":{\"Timezone\":\"Africa/Johannesburg\"},\"HLD\":{\"Timezone\":\"Asia/Shanghai\"},\"HLE\":{\"Timezone\":null},\"HLF\":{\"Timezone\":\"Europe/Stockholm\"},\"HLG\":{\"Timezone\":\"America/New_York\"},\"HLH\":{\"Timezone\":\"Asia/Shanghai\"},\"HLI\":{\"Timezone\":null},\"HLJ\":{\"Timezone\":\"Europe/Vilnius\"},\"HLN\":{\"Timezone\":\"America/Denver\"},\"HLP\":{\"Timezone\":\"Asia/Jakarta\"},\"HLR\":{\"Timezone\":\"America/Chicago\"},\"HLT\":{\"Timezone\":\"Australia/Hobart\"},\"HLZ\":{\"Timezone\":\"Pacific/Auckland\"},\"HMA\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"HMB\":{\"Timezone\":\"Africa/Cairo\"},\"HME\":{\"Timezone\":\"Africa/Algiers\"},\"HMG\":{\"Timezone\":null},\"HMI\":{\"Timezone\":\"Asia/Shanghai\"},\"HMJ\":{\"Timezone\":\"Europe/Kiev\"},\"HMN\":{\"Timezone\":\"America/Denver\"},\"HMO\":{\"Timezone\":\"America/Hermosillo\"},\"HMR\":{\"Timezone\":\"Europe/Oslo\"},\"HMV\":{\"Timezone\":\"Europe/Stockholm\"},\"HMY\":{\"Timezone\":null},\"HNA\":{\"Timezone\":\"Asia/Tokyo\"},\"HND\":{\"Timezone\":\"Asia/Tokyo\"},\"HNH\":{\"Timezone\":\"America/Anchorage\"},\"HNL\":{\"Timezone\":\"Pacific/Honolulu\"},\"HNM\":{\"Timezone\":\"Pacific/Honolulu\"},\"HNS\":{\"Timezone\":\"America/Anchorage\"},\"HNY\":{\"Timezone\":null},\"HOA\":{\"Timezone\":\"Africa/Nairobi\"},\"HOB\":{\"Timezone\":\"America/Denver\"},\"HOD\":{\"Timezone\":\"Asia/Aden\"},\"HOE\":{\"Timezone\":\"Asia/Vientiane\"},\"HOF\":{\"Timezone\":\"Asia/Riyadh\"},\"HOG\":{\"Timezone\":\"America/Havana\"},\"HOH\":{\"Timezone\":\"Europe/Vienna\"},\"HOI\":{\"Timezone\":null},\"HOK\":{\"Timezone\":\"Australia/Darwin\"},\"HOM\":{\"Timezone\":\"America/Anchorage\"},\"HON\":{\"Timezone\":\"America/Chicago\"},\"HOP\":{\"Timezone\":\"America/Chicago\"},\"HOQ\":{\"Timezone\":\"Europe/Berlin\"},\"HOR\":{\"Timezone\":\"Atlantic/Azores\"},\"HOS\":{\"Timezone\":\"America/Argentina/Salta\"},\"HOT\":{\"Timezone\":\"America/Chicago\"},\"HOU\":{\"Timezone\":\"America/Chicago\"},\"HOV\":{\"Timezone\":\"Europe/Oslo\"},\"HOX\":{\"Timezone\":\"Asia/Rangoon\"},\"HPA\":{\"Timezone\":\"Pacific/Tongatapu\"},\"HPB\":{\"Timezone\":\"America/Anchorage\"},\"HPG\":{\"Timezone\":null},\"HPH\":{\"Timezone\":\"Asia/Saigon\"},\"HPN\":{\"Timezone\":\"America/New_York\"},\"HQM\":{\"Timezone\":\"America/Los_Angeles\"},\"HRB\":{\"Timezone\":\"Asia/Shanghai\"},\"HRE\":{\"Timezone\":\"Africa/Harare\"},\"HRG\":{\"Timezone\":\"Africa/Cairo\"},\"HRI\":{\"Timezone\":\"Asia/Colombo\"},\"HRK\":{\"Timezone\":\"Europe/Kiev\"},\"HRL\":{\"Timezone\":\"America/Chicago\"},\"HRM\":{\"Timezone\":\"Africa/Algiers\"},\"HRO\":{\"Timezone\":\"America/Chicago\"},\"HRS\":{\"Timezone\":\"Africa/Johannesburg\"},\"HRT\":{\"Timezone\":\"Europe/London\"},\"HSG\":{\"Timezone\":\"Asia/Tokyo\"},\"HSH\":{\"Timezone\":\"America/Los_Angeles\"},\"HSK\":{\"Timezone\":\"Europe/Madrid\"},\"HSL\":{\"Timezone\":\"America/Anchorage\"},\"HSM\":{\"Timezone\":null},\"HSN\":{\"Timezone\":\"Asia/Shanghai\"},\"HSS\":{\"Timezone\":\"Asia/Calcutta\"},\"HST\":{\"Timezone\":\"America/New_York\"},\"HSV\":{\"Timezone\":\"America/Chicago\"},\"HSZ\":{\"Timezone\":\"Asia/Taipei\"},\"HTA\":{\"Timezone\":\"Asia/Yakutsk\"},\"HTG\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"HTI\":{\"Timezone\":\"Australia/Brisbane\"},\"HTL\":{\"Timezone\":\"America/New_York\"},\"HTN\":{\"Timezone\":\"Asia/Shanghai\"},\"HTR\":{\"Timezone\":null},\"HTS\":{\"Timezone\":\"America/New_York\"},\"HTT\":{\"Timezone\":null},\"HTU\":{\"Timezone\":null},\"HTV\":{\"Timezone\":null},\"HTY\":{\"Timezone\":\"Europe/Istanbul\"},\"HUA\":{\"Timezone\":\"America/Chicago\"},\"HUE\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"HUF\":{\"Timezone\":\"America/New_York\"},\"HUH\":{\"Timezone\":\"Pacific/Tahiti\"},\"HUI\":{\"Timezone\":\"Asia/Saigon\"},\"HUL\":{\"Timezone\":\"America/New_York\"},\"HUN\":{\"Timezone\":\"Asia/Taipei\"},\"HUO\":{\"Timezone\":null},\"HUQ\":{\"Timezone\":\"Africa/Tripoli\"},\"HUS\":{\"Timezone\":\"America/Anchorage\"},\"HUT\":{\"Timezone\":\"America/Chicago\"},\"HUU\":{\"Timezone\":\"America/Lima\"},\"HUV\":{\"Timezone\":\"Europe/Stockholm\"},\"HUW\":{\"Timezone\":\"America/Boa_Vista\"},\"HUX\":{\"Timezone\":\"America/Mexico_City\"},\"HUY\":{\"Timezone\":\"Europe/London\"},\"HUZ\":{\"Timezone\":\"Asia/Shanghai\"},\"HVA\":{\"Timezone\":\"Indian/Antananarivo\"},\"HVB\":{\"Timezone\":\"Australia/Brisbane\"},\"HVD\":{\"Timezone\":\"Asia/Hovd\"},\"HVG\":{\"Timezone\":\"Europe/Oslo\"},\"HVN\":{\"Timezone\":\"America/New_York\"},\"HVR\":{\"Timezone\":\"America/Denver\"},\"HVS\":{\"Timezone\":null},\"HWD\":{\"Timezone\":\"America/Los_Angeles\"},\"HWN\":{\"Timezone\":\"Africa/Harare\"},\"HWO\":{\"Timezone\":\"America/New_York\"},\"HXD\":{\"Timezone\":null},\"HXX\":{\"Timezone\":null},\"HYA\":{\"Timezone\":\"America/New_York\"},\"HYC\":{\"Timezone\":\"Europe/London\"},\"HYD\":{\"Timezone\":null},\"HYG\":{\"Timezone\":\"America/Anchorage\"},\"HYN\":{\"Timezone\":\"Asia/Shanghai\"},\"HYR\":{\"Timezone\":null},\"HYS\":{\"Timezone\":\"America/Chicago\"},\"HYV\":{\"Timezone\":\"Europe/Helsinki\"},\"HZB\":{\"Timezone\":\"Europe/Paris\"},\"HZG\":{\"Timezone\":\"Asia/Shanghai\"},\"HZH\":{\"Timezone\":\"Asia/Shanghai\"},\"HZK\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"HZL\":{\"Timezone\":\"America/New_York\"},\"HZP\":{\"Timezone\":null},\"IAA\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"IAB\":{\"Timezone\":\"America/Chicago\"},\"IAD\":{\"Timezone\":\"America/New_York\"},\"IAG\":{\"Timezone\":\"America/New_York\"},\"IAH\":{\"Timezone\":\"America/Chicago\"},\"IAM\":{\"Timezone\":\"Africa/Algiers\"},\"IAN\":{\"Timezone\":\"America/Anchorage\"},\"IAO\":{\"Timezone\":\"Asia/Manila\"},\"IAR\":{\"Timezone\":\"Europe/Moscow\"},\"IAS\":{\"Timezone\":\"Europe/Bucharest\"},\"IBA\":{\"Timezone\":\"Africa/Lagos\"},\"IBB\":{\"Timezone\":\"Pacific/Galapagos\"},\"IBE\":{\"Timezone\":\"America/Bogota\"},\"IBP\":{\"Timezone\":\"America/Lima\"},\"IBR\":{\"Timezone\":\"Asia/Tokyo\"},\"IBZ\":{\"Timezone\":\"Europe/Madrid\"},\"ICC\":{\"Timezone\":\"America/Caracas\"},\"ICI\":{\"Timezone\":\"Pacific/Fiji\"},\"ICK\":{\"Timezone\":\"America/Paramaribo\"},\"ICN\":{\"Timezone\":\"Asia/Seoul\"},\"ICT\":{\"Timezone\":\"America/Chicago\"},\"IDA\":{\"Timezone\":\"America/Denver\"},\"IDP\":{\"Timezone\":null},\"IDR\":{\"Timezone\":\"Asia/Calcutta\"},\"IDY\":{\"Timezone\":\"Europe/Paris\"},\"IEG\":{\"Timezone\":\"Europe/Warsaw\"},\"IEJ\":{\"Timezone\":null},\"IES\":{\"Timezone\":\"Europe/Berlin\"},\"IEV\":{\"Timezone\":\"Europe/Kiev\"},\"IFH\":{\"Timezone\":\"Asia/Tehran\"},\"IFJ\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"IFL\":{\"Timezone\":\"Australia/Brisbane\"},\"IFN\":{\"Timezone\":\"Asia/Tehran\"},\"IFO\":{\"Timezone\":\"Europe/Kiev\"},\"IFU\":{\"Timezone\":null},\"IGA\":{\"Timezone\":\"America/Nassau\"},\"IGB\":{\"Timezone\":\"America/Argentina/Salta\"},\"IGD\":{\"Timezone\":\"Europe/Istanbul\"},\"IGG\":{\"Timezone\":\"America/Anchorage\"},\"IGL\":{\"Timezone\":\"Europe/Istanbul\"},\"IGR\":{\"Timezone\":\"America/Cordoba\"},\"IGS\":{\"Timezone\":\"Europe/Berlin\"},\"IGT\":{\"Timezone\":\"Europe/Moscow\"},\"IGU\":{\"Timezone\":\"America/Sao_Paulo\"},\"IHC\":{\"Timezone\":\"Africa/Maputo\"},\"IHR\":{\"Timezone\":\"Asia/Tehran\"},\"IIA\":{\"Timezone\":\"Europe/Dublin\"},\"IIL\":{\"Timezone\":\"Asia/Tehran\"},\"IJK\":{\"Timezone\":\"Europe/Samara\"},\"IKA\":{\"Timezone\":\"Asia/Tehran\"},\"IKB\":{\"Timezone\":\"America/New_York\"},\"IKI\":{\"Timezone\":\"Asia/Tokyo\"},\"IKK\":{\"Timezone\":\"America/Chicago\"},\"IKL\":{\"Timezone\":null},\"IKO\":{\"Timezone\":\"America/Anchorage\"},\"IKS\":{\"Timezone\":\"Asia/Yakutsk\"},\"IKT\":{\"Timezone\":\"Asia/Irkutsk\"},\"IKU\":{\"Timezone\":null},\"ILA\":{\"Timezone\":null},\"ILD\":{\"Timezone\":\"Europe/Madrid\"},\"ILF\":{\"Timezone\":\"America/Winnipeg\"},\"ILG\":{\"Timezone\":\"America/New_York\"},\"ILI\":{\"Timezone\":\"America/Anchorage\"},\"ILM\":{\"Timezone\":\"America/New_York\"},\"ILN\":{\"Timezone\":\"America/New_York\"},\"ILO\":{\"Timezone\":\"Asia/Manila\"},\"ILP\":{\"Timezone\":\"Pacific/Noumea\"},\"ILQ\":{\"Timezone\":\"America/Lima\"},\"ILR\":{\"Timezone\":\"Africa/Lagos\"},\"ILU\":{\"Timezone\":\"Africa/Nairobi\"},\"ILY\":{\"Timezone\":\"Europe/London\"},\"ILZ\":{\"Timezone\":\"Europe/Bratislava\"},\"IMB\":{\"Timezone\":\"America/Guyana\"},\"IMF\":{\"Timezone\":\"Asia/Calcutta\"},\"IMK\":{\"Timezone\":\"Asia/Katmandu\"},\"IMM\":{\"Timezone\":\"America/New_York\"},\"IMP\":{\"Timezone\":\"America/Fortaleza\"},\"IMT\":{\"Timezone\":\"America/Chicago\"},\"INA\":{\"Timezone\":null},\"IND\":{\"Timezone\":\"America/New_York\"},\"ING\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"INH\":{\"Timezone\":\"Africa/Maputo\"},\"INI\":{\"Timezone\":\"Europe/Belgrade\"},\"INK\":{\"Timezone\":\"America/Chicago\"},\"INL\":{\"Timezone\":\"America/Chicago\"},\"INN\":{\"Timezone\":\"Europe/Vienna\"},\"INO\":{\"Timezone\":\"Africa/Kinshasa\"},\"INQ\":{\"Timezone\":\"Europe/Dublin\"},\"INS\":{\"Timezone\":\"America/Los_Angeles\"},\"INT\":{\"Timezone\":\"America/New_York\"},\"INU\":{\"Timezone\":\"Pacific/Nauru\"},\"INV\":{\"Timezone\":\"Europe/London\"},\"INW\":{\"Timezone\":\"America/Phoenix\"},\"INZ\":{\"Timezone\":\"Africa/Algiers\"},\"IOA\":{\"Timezone\":\"Europe/Athens\"},\"IOM\":{\"Timezone\":\"Europe/Isle_of_Man\"},\"ION\":{\"Timezone\":null},\"IOR\":{\"Timezone\":\"Europe/Dublin\"},\"IOS\":{\"Timezone\":\"America/Fortaleza\"},\"IOW\":{\"Timezone\":\"America/Chicago\"},\"IPA\":{\"Timezone\":\"Pacific/Efate\"},\"IPC\":{\"Timezone\":\"Pacific/Easter\"},\"IPH\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"IPI\":{\"Timezone\":\"America/Bogota\"},\"IPL\":{\"Timezone\":\"America/Los_Angeles\"},\"IPN\":{\"Timezone\":\"America/Sao_Paulo\"},\"IPT\":{\"Timezone\":\"America/New_York\"},\"IQA\":{\"Timezone\":\"Asia/Baghdad\"},\"IQM\":{\"Timezone\":\"Asia/Shanghai\"},\"IQN\":{\"Timezone\":\"Asia/Shanghai\"},\"IQQ\":{\"Timezone\":\"America/Santiago\"},\"IQT\":{\"Timezone\":\"America/Lima\"},\"IRA\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"IRB\":{\"Timezone\":\"America/Chicago\"},\"IRC\":{\"Timezone\":\"America/Anchorage\"},\"IRD\":{\"Timezone\":\"Asia/Dhaka\"},\"IRG\":{\"Timezone\":\"Australia/Brisbane\"},\"IRI\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"IRJ\":{\"Timezone\":\"America/Argentina/La_Rioja\"},\"IRK\":{\"Timezone\":\"America/Chicago\"},\"IRP\":{\"Timezone\":\"Africa/Lubumbashi\"},\"IRZ\":{\"Timezone\":\"America/Boa_Vista\"},\"ISA\":{\"Timezone\":\"Australia/Brisbane\"},\"ISB\":{\"Timezone\":null},\"ISC\":{\"Timezone\":\"Europe/London\"},\"ISE\":{\"Timezone\":\"Europe/Istanbul\"},\"ISG\":{\"Timezone\":\"Asia/Tokyo\"},\"ISJ\":{\"Timezone\":\"America/Cancun\"},\"ISK\":{\"Timezone\":\"Asia/Calcutta\"},\"ISL\":{\"Timezone\":\"Europe/Istanbul\"},\"ISM\":{\"Timezone\":\"America/New_York\"},\"ISN\":{\"Timezone\":\"America/Chicago\"},\"ISO\":{\"Timezone\":\"America/New_York\"},\"ISP\":{\"Timezone\":\"America/New_York\"},\"IST\":{\"Timezone\":null},\"ISU\":{\"Timezone\":\"Asia/Baghdad\"},\"ISW\":{\"Timezone\":\"America/Chicago\"},\"ITA\":{\"Timezone\":\"America/Boa_Vista\"},\"ITB\":{\"Timezone\":\"America/Belem\"},\"ITH\":{\"Timezone\":\"America/New_York\"},\"ITM\":{\"Timezone\":\"Asia/Tokyo\"},\"ITO\":{\"Timezone\":\"Pacific/Honolulu\"},\"ITP\":{\"Timezone\":null},\"ITR\":{\"Timezone\":\"America/Sao_Paulo\"},\"IUE\":{\"Timezone\":\"Pacific/Niue\"},\"IVA\":{\"Timezone\":\"Indian/Antananarivo\"},\"IVC\":{\"Timezone\":\"Pacific/Auckland\"},\"IVL\":{\"Timezone\":\"Europe/Helsinki\"},\"IVR\":{\"Timezone\":\"Australia/Sydney\"},\"IWA\":{\"Timezone\":\"Europe/Moscow\"},\"IWJ\":{\"Timezone\":\"Asia/Tokyo\"},\"IWK\":{\"Timezone\":null},\"IWO\":{\"Timezone\":\"Asia/Tokyo\"},\"IWS\":{\"Timezone\":\"America/Chicago\"},\"IXA\":{\"Timezone\":\"Asia/Calcutta\"},\"IXB\":{\"Timezone\":\"Asia/Calcutta\"},\"IXC\":{\"Timezone\":\"Asia/Calcutta\"},\"IXD\":{\"Timezone\":\"Asia/Calcutta\"},\"IXE\":{\"Timezone\":\"Asia/Calcutta\"},\"IXG\":{\"Timezone\":\"Asia/Calcutta\"},\"IXH\":{\"Timezone\":\"Asia/Calcutta\"},\"IXI\":{\"Timezone\":\"Asia/Calcutta\"},\"IXJ\":{\"Timezone\":\"Asia/Calcutta\"},\"IXK\":{\"Timezone\":\"Asia/Calcutta\"},\"IXL\":{\"Timezone\":\"Asia/Calcutta\"},\"IXM\":{\"Timezone\":\"Asia/Calcutta\"},\"IXP\":{\"Timezone\":\"Asia/Calcutta\"},\"IXR\":{\"Timezone\":\"Asia/Calcutta\"},\"IXS\":{\"Timezone\":\"Asia/Calcutta\"},\"IXT\":{\"Timezone\":null},\"IXU\":{\"Timezone\":\"Asia/Calcutta\"},\"IXV\":{\"Timezone\":\"Asia/Calcutta\"},\"IXW\":{\"Timezone\":\"Asia/Calcutta\"},\"IXY\":{\"Timezone\":\"Asia/Calcutta\"},\"IXZ\":{\"Timezone\":\"Asia/Calcutta\"},\"IYK\":{\"Timezone\":\"America/Los_Angeles\"},\"IZA\":{\"Timezone\":\"America/Sao_Paulo\"},\"IZO\":{\"Timezone\":\"Asia/Tokyo\"},\"IZT\":{\"Timezone\":\"America/Mexico_City\"},\"JAA\":{\"Timezone\":\"Asia/Kabul\"},\"JAB\":{\"Timezone\":\"Australia/Darwin\"},\"JAC\":{\"Timezone\":\"America/Denver\"},\"JAD\":{\"Timezone\":\"Australia/Perth\"},\"JAE\":{\"Timezone\":null},\"JAF\":{\"Timezone\":\"Asia/Colombo\"},\"JAG\":{\"Timezone\":\"Asia/Karachi\"},\"JAI\":{\"Timezone\":\"Asia/Calcutta\"},\"JAK\":{\"Timezone\":\"America/Port-au-Prince\"},\"JAL\":{\"Timezone\":\"America/Mexico_City\"},\"JAN\":{\"Timezone\":\"America/Chicago\"},\"JAP\":{\"Timezone\":\"America/Costa_Rica\"},\"JAR\":{\"Timezone\":\"Asia/Tehran\"},\"JAS\":{\"Timezone\":null},\"JAU\":{\"Timezone\":\"America/Lima\"},\"JAV\":{\"Timezone\":\"America/Godthab\"},\"JAX\":{\"Timezone\":\"America/New_York\"},\"JBQ\":{\"Timezone\":\"America/Santo_Domingo\"},\"JBR\":{\"Timezone\":\"America/Chicago\"},\"JCB\":{\"Timezone\":\"America/Sao_Paulo\"},\"JCH\":{\"Timezone\":\"America/Godthab\"},\"JCI\":{\"Timezone\":\"America/Chicago\"},\"JCK\":{\"Timezone\":\"Australia/Brisbane\"},\"JCR\":{\"Timezone\":\"America/Belem\"},\"JCT\":{\"Timezone\":null},\"JDF\":{\"Timezone\":\"America/Sao_Paulo\"},\"JDG\":{\"Timezone\":\"Asia/Seoul\"},\"JDH\":{\"Timezone\":\"Asia/Calcutta\"},\"JDO\":{\"Timezone\":\"America/Fortaleza\"},\"JDZ\":{\"Timezone\":\"Asia/Shanghai\"},\"JED\":{\"Timezone\":\"Asia/Riyadh\"},\"JEE\":{\"Timezone\":\"America/Port-au-Prince\"},\"JEF\":{\"Timezone\":\"America/Chicago\"},\"JEG\":{\"Timezone\":\"America/Godthab\"},\"JER\":{\"Timezone\":\"Europe/Jersey\"},\"JFK\":{\"Timezone\":\"America/New_York\"},\"JFR\":{\"Timezone\":\"America/Godthab\"},\"JGA\":{\"Timezone\":\"Asia/Calcutta\"},\"JGD\":{\"Timezone\":\"Asia/Shanghai\"},\"JGN\":{\"Timezone\":\"Asia/Shanghai\"},\"JGO\":{\"Timezone\":\"America/Godthab\"},\"JGS\":{\"Timezone\":\"Asia/Shanghai\"},\"JHB\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"JHG\":{\"Timezone\":\"Asia/Shanghai\"},\"JHM\":{\"Timezone\":\"Pacific/Honolulu\"},\"JHQ\":{\"Timezone\":\"Australia/Brisbane\"},\"JHS\":{\"Timezone\":\"America/Godthab\"},\"JHW\":{\"Timezone\":\"America/New_York\"},\"JIA\":{\"Timezone\":null},\"JIB\":{\"Timezone\":\"Africa/Djibouti\"},\"JIC\":{\"Timezone\":null},\"JIJ\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"JIK\":{\"Timezone\":\"Europe/Athens\"},\"JIM\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"JIQ\":{\"Timezone\":\"Asia/Shanghai\"},\"JIU\":{\"Timezone\":\"Asia/Shanghai\"},\"JIW\":{\"Timezone\":\"Asia/Karachi\"},\"JJG\":{\"Timezone\":null},\"JJI\":{\"Timezone\":\"America/Lima\"},\"JJM\":{\"Timezone\":\"Africa/Nairobi\"},\"JJN\":{\"Timezone\":\"Asia/Shanghai\"},\"JJU\":{\"Timezone\":\"America/Godthab\"},\"JKG\":{\"Timezone\":\"Europe/Stockholm\"},\"JKH\":{\"Timezone\":\"Europe/Athens\"},\"JKL\":{\"Timezone\":\"Europe/Athens\"},\"JKR\":{\"Timezone\":\"Asia/Katmandu\"},\"JLN\":{\"Timezone\":\"America/Chicago\"},\"JLR\":{\"Timezone\":\"Asia/Calcutta\"},\"JMJ\":{\"Timezone\":null},\"JMK\":{\"Timezone\":\"Europe/Athens\"},\"JMO\":{\"Timezone\":\"Asia/Katmandu\"},\"JMS\":{\"Timezone\":\"America/Chicago\"},\"JMU\":{\"Timezone\":\"Asia/Shanghai\"},\"JNB\":{\"Timezone\":\"Africa/Johannesburg\"},\"JNG\":{\"Timezone\":\"Asia/Shanghai\"},\"JNI\":{\"Timezone\":\"America/Buenos_Aires\"},\"JNN\":{\"Timezone\":\"America/Godthab\"},\"JNS\":{\"Timezone\":\"America/Godthab\"},\"JNU\":{\"Timezone\":\"America/Anchorage\"},\"JNX\":{\"Timezone\":\"Europe/Athens\"},\"JNZ\":{\"Timezone\":\"Asia/Shanghai\"},\"JOE\":{\"Timezone\":\"Europe/Helsinki\"},\"JOG\":{\"Timezone\":\"Asia/Jakarta\"},\"JOH\":{\"Timezone\":\"Africa/Johannesburg\"},\"JOI\":{\"Timezone\":\"America/Sao_Paulo\"},\"JOJ\":{\"Timezone\":null},\"JOK\":{\"Timezone\":\"Europe/Moscow\"},\"JOL\":{\"Timezone\":\"Asia/Manila\"},\"JON\":{\"Timezone\":\"Pacific/Johnston\"},\"JOS\":{\"Timezone\":\"Africa/Lagos\"},\"JOT\":{\"Timezone\":\"America/Chicago\"},\"JPA\":{\"Timezone\":\"America/Fortaleza\"},\"JPR\":{\"Timezone\":\"America/Boa_Vista\"},\"JQA\":{\"Timezone\":\"America/Godthab\"},\"JQE\":{\"Timezone\":\"America/Panama\"},\"JRA\":{\"Timezone\":\"America/New_York\"},\"JRB\":{\"Timezone\":\"America/New_York\"},\"JRF\":{\"Timezone\":\"Pacific/Honolulu\"},\"JRH\":{\"Timezone\":\"Asia/Calcutta\"},\"JRN\":{\"Timezone\":null},\"JRO\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"JSA\":{\"Timezone\":\"Asia/Calcutta\"},\"JSH\":{\"Timezone\":\"Europe/Athens\"},\"JSI\":{\"Timezone\":\"Europe/Athens\"},\"JSJ\":{\"Timezone\":null},\"JSK\":{\"Timezone\":null},\"JSM\":{\"Timezone\":\"America/Catamarca\"},\"JSR\":{\"Timezone\":\"Asia/Dhaka\"},\"JST\":{\"Timezone\":\"America/New_York\"},\"JSU\":{\"Timezone\":\"America/Godthab\"},\"JSY\":{\"Timezone\":\"Europe/Athens\"},\"JTC\":{\"Timezone\":\"America/Sao_Paulo\"},\"JTR\":{\"Timezone\":\"Europe/Athens\"},\"JTY\":{\"Timezone\":\"Europe/Athens\"},\"JUA\":{\"Timezone\":null},\"JUB\":{\"Timezone\":\"Africa/Juba\"},\"JUH\":{\"Timezone\":\"Asia/Shanghai\"},\"JUI\":{\"Timezone\":\"Europe/Berlin\"},\"JUJ\":{\"Timezone\":\"America/Jujuy\"},\"JUL\":{\"Timezone\":\"America/Lima\"},\"JUM\":{\"Timezone\":\"Asia/Katmandu\"},\"JUV\":{\"Timezone\":\"America/Godthab\"},\"JUZ\":{\"Timezone\":\"Asia/Shanghai\"},\"JVA\":{\"Timezone\":\"Indian/Antananarivo\"},\"JVL\":{\"Timezone\":\"America/Chicago\"},\"JWA\":{\"Timezone\":\"Africa/Gaborone\"},\"JWN\":{\"Timezone\":\"Asia/Tehran\"},\"JXA\":{\"Timezone\":\"Asia/Shanghai\"},\"JXN\":{\"Timezone\":\"America/New_York\"},\"JYR\":{\"Timezone\":\"Asia/Tehran\"},\"JYV\":{\"Timezone\":\"Europe/Helsinki\"},\"JZH\":{\"Timezone\":\"Asia/Shanghai\"},\"KAA\":{\"Timezone\":\"Africa/Lusaka\"},\"KAB\":{\"Timezone\":\"Africa/Harare\"},\"KAC\":{\"Timezone\":\"Asia/Damascus\"},\"KAD\":{\"Timezone\":\"Africa/Lagos\"},\"KAG\":{\"Timezone\":\"Asia/Seoul\"},\"KAI\":{\"Timezone\":\"America/Guyana\"},\"KAJ\":{\"Timezone\":\"Europe/Helsinki\"},\"KAL\":{\"Timezone\":\"America/Anchorage\"},\"KAN\":{\"Timezone\":\"Africa/Lagos\"},\"KAO\":{\"Timezone\":\"Europe/Helsinki\"},\"KAR\":{\"Timezone\":\"America/Guyana\"},\"KAT\":{\"Timezone\":\"Pacific/Auckland\"},\"KAU\":{\"Timezone\":\"Europe/Helsinki\"},\"KAW\":{\"Timezone\":\"Asia/Rangoon\"},\"KAX\":{\"Timezone\":\"Australia/Perth\"},\"KAZ\":{\"Timezone\":null},\"KBL\":{\"Timezone\":\"Asia/Kabul\"},\"KBN\":{\"Timezone\":null},\"KBP\":{\"Timezone\":\"Europe/Kiev\"},\"KBQ\":{\"Timezone\":\"Africa/Blantyre\"},\"KBR\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"KBS\":{\"Timezone\":\"Africa/Freetown\"},\"KBV\":{\"Timezone\":\"Asia/Bangkok\"},\"KBZ\":{\"Timezone\":\"Pacific/Auckland\"},\"KCA\":{\"Timezone\":\"Asia/Shanghai\"},\"KCF\":{\"Timezone\":null},\"KCH\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"KCK\":{\"Timezone\":\"Asia/Irkutsk\"},\"KCM\":{\"Timezone\":\"Europe/Istanbul\"},\"KCO\":{\"Timezone\":\"Europe/Istanbul\"},\"KCS\":{\"Timezone\":null},\"KCT\":{\"Timezone\":\"Asia/Colombo\"},\"KCZ\":{\"Timezone\":\"Asia/Tokyo\"},\"KDA\":{\"Timezone\":null},\"KDC\":{\"Timezone\":null},\"KDD\":{\"Timezone\":\"Asia/Karachi\"},\"KDH\":{\"Timezone\":\"Asia/Kabul\"},\"KDI\":{\"Timezone\":\"Asia/Makassar\"},\"KDL\":{\"Timezone\":\"Europe/Tallinn\"},\"KDM\":{\"Timezone\":\"Indian/Maldives\"},\"KDO\":{\"Timezone\":\"Indian/Maldives\"},\"KDT\":{\"Timezone\":\"Asia/Bangkok\"},\"KDU\":{\"Timezone\":\"Asia/Karachi\"},\"KDV\":{\"Timezone\":\"Pacific/Fiji\"},\"KDX\":{\"Timezone\":\"Africa/Khartoum\"},\"KDY\":{\"Timezone\":\"Asia/Yakutsk\"},\"KED\":{\"Timezone\":\"Africa/Nouakchott\"},\"KEF\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"KEJ\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"KEL\":{\"Timezone\":\"Europe/Berlin\"},\"KEM\":{\"Timezone\":\"Europe/Helsinki\"},\"KEN\":{\"Timezone\":\"Africa/Freetown\"},\"KEO\":{\"Timezone\":null},\"KEP\":{\"Timezone\":\"Asia/Katmandu\"},\"KER\":{\"Timezone\":\"Asia/Tehran\"},\"KES\":{\"Timezone\":null},\"KET\":{\"Timezone\":\"Asia/Rangoon\"},\"KEV\":{\"Timezone\":\"Europe/Helsinki\"},\"KEW\":{\"Timezone\":\"America/Winnipeg\"},\"KEY\":{\"Timezone\":\"Africa/Nairobi\"},\"KFA\":{\"Timezone\":\"Africa/Nouakchott\"},\"KFE\":{\"Timezone\":\"Australia/Perth\"},\"KFG\":{\"Timezone\":\"Australia/Darwin\"},\"KFP\":{\"Timezone\":\"America/Anchorage\"},\"KFS\":{\"Timezone\":\"Europe/Istanbul\"},\"KGA\":{\"Timezone\":\"Africa/Lubumbashi\"},\"KGC\":{\"Timezone\":\"Australia/Adelaide\"},\"KGD\":{\"Timezone\":\"Europe/Kaliningrad\"},\"KGE\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"KGF\":{\"Timezone\":\"Asia/Qyzylorda\"},\"KGG\":{\"Timezone\":\"Africa/Dakar\"},\"KGI\":{\"Timezone\":\"Australia/Perth\"},\"KGJ\":{\"Timezone\":\"Africa/Blantyre\"},\"KGK\":{\"Timezone\":\"America/Anchorage\"},\"KGL\":{\"Timezone\":\"Africa/Kigali\"},\"KGO\":{\"Timezone\":\"Europe/Kiev\"},\"KGP\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"KGS\":{\"Timezone\":\"Europe/Athens\"},\"KGT\":{\"Timezone\":\"Asia/Shanghai\"},\"KGW\":{\"Timezone\":null},\"KGY\":{\"Timezone\":null},\"KHC\":{\"Timezone\":\"Europe/Simferopol\"},\"KHD\":{\"Timezone\":\"Asia/Tehran\"},\"KHE\":{\"Timezone\":\"Europe/Kiev\"},\"KHG\":{\"Timezone\":\"Asia/Shanghai\"},\"KHH\":{\"Timezone\":\"Asia/Taipei\"},\"KHI\":{\"Timezone\":\"Asia/Karachi\"},\"KHJ\":{\"Timezone\":\"Europe/Helsinki\"},\"KHK\":{\"Timezone\":\"Asia/Tehran\"},\"KHM\":{\"Timezone\":\"Asia/Rangoon\"},\"KHN\":{\"Timezone\":\"Asia/Shanghai\"},\"KHS\":{\"Timezone\":\"Asia/Muscat\"},\"KHT\":{\"Timezone\":\"Asia/Kabul\"},\"KHV\":{\"Timezone\":\"Asia/Vladivostok\"},\"KHW\":{\"Timezone\":\"Africa/Gaborone\"},\"KHY\":{\"Timezone\":\"Asia/Tehran\"},\"KHZ\":{\"Timezone\":null},\"KID\":{\"Timezone\":\"Europe/Stockholm\"},\"KIF\":{\"Timezone\":\"America/Toronto\"},\"KIH\":{\"Timezone\":\"Asia/Tehran\"},\"KIJ\":{\"Timezone\":\"Asia/Tokyo\"},\"KIK\":{\"Timezone\":\"Asia/Baghdad\"},\"KIM\":{\"Timezone\":\"Africa/Johannesburg\"},\"KIN\":{\"Timezone\":\"America/Jamaica\"},\"KIO\":{\"Timezone\":\"Pacific/Majuro\"},\"KIR\":{\"Timezone\":\"Europe/Dublin\"},\"KIS\":{\"Timezone\":\"Africa/Nairobi\"},\"KIT\":{\"Timezone\":\"Europe/Athens\"},\"KIV\":{\"Timezone\":\"Europe/Chisinau\"},\"KIW\":{\"Timezone\":\"Africa/Lusaka\"},\"KIX\":{\"Timezone\":\"Asia/Tokyo\"},\"KIY\":{\"Timezone\":null},\"KJA\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"KJH\":{\"Timezone\":null},\"KJI\":{\"Timezone\":\"Asia/Shanghai\"},\"KJK\":{\"Timezone\":\"Europe/Brussels\"},\"KJP\":{\"Timezone\":\"Asia/Tokyo\"},\"KKA\":{\"Timezone\":\"America/Anchorage\"},\"KKC\":{\"Timezone\":\"Asia/Bangkok\"},\"KKE\":{\"Timezone\":\"Pacific/Auckland\"},\"KKH\":{\"Timezone\":\"America/Anchorage\"},\"KKJ\":{\"Timezone\":\"Asia/Tokyo\"},\"KKN\":{\"Timezone\":\"Europe/Oslo\"},\"KKR\":{\"Timezone\":\"Pacific/Tahiti\"},\"KKS\":{\"Timezone\":\"Asia/Tehran\"},\"KKW\":{\"Timezone\":\"Africa/Kinshasa\"},\"KKX\":{\"Timezone\":\"Asia/Tokyo\"},\"KLC\":{\"Timezone\":\"Africa/Dakar\"},\"KLD\":{\"Timezone\":\"Europe/Moscow\"},\"KLF\":{\"Timezone\":\"Europe/Moscow\"},\"KLG\":{\"Timezone\":\"America/Anchorage\"},\"KLH\":{\"Timezone\":\"Asia/Calcutta\"},\"KLI\":{\"Timezone\":\"Africa/Kinshasa\"},\"KLJ\":{\"Timezone\":null},\"KLM\":{\"Timezone\":\"Asia/Tehran\"},\"KLN\":{\"Timezone\":\"America/Anchorage\"},\"KLO\":{\"Timezone\":\"Asia/Manila\"},\"KLR\":{\"Timezone\":\"Europe/Stockholm\"},\"KLS\":{\"Timezone\":\"America/Los_Angeles\"},\"KLU\":{\"Timezone\":\"Europe/Vienna\"},\"KLV\":{\"Timezone\":\"Europe/Prague\"},\"KLW\":{\"Timezone\":\"America/Anchorage\"},\"KLX\":{\"Timezone\":\"Europe/Athens\"},\"KLZ\":{\"Timezone\":\"Africa/Johannesburg\"},\"KMA\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"KMC\":{\"Timezone\":\"Asia/Riyadh\"},\"KME\":{\"Timezone\":\"Africa/Kigali\"},\"KMG\":{\"Timezone\":\"Asia/Shanghai\"},\"KMH\":{\"Timezone\":\"Africa/Johannesburg\"},\"KMI\":{\"Timezone\":\"Asia/Tokyo\"},\"KMJ\":{\"Timezone\":\"Asia/Tokyo\"},\"KMN\":{\"Timezone\":\"Africa/Lubumbashi\"},\"KMO\":{\"Timezone\":\"America/Anchorage\"},\"KMP\":{\"Timezone\":\"Africa/Windhoek\"},\"KMQ\":{\"Timezone\":\"Asia/Tokyo\"},\"KMS\":{\"Timezone\":\"Africa/Accra\"},\"KMU\":{\"Timezone\":\"Africa/Mogadishu\"},\"KMV\":{\"Timezone\":\"Asia/Rangoon\"},\"KMW\":{\"Timezone\":\"Europe/Moscow\"},\"KMX\":{\"Timezone\":null},\"KNA\":{\"Timezone\":\"America/Santiago\"},\"KND\":{\"Timezone\":\"Africa/Lubumbashi\"},\"KNF\":{\"Timezone\":\"Europe/London\"},\"KNG\":{\"Timezone\":\"Asia/Jayapura\"},\"KNH\":{\"Timezone\":\"Asia/Taipei\"},\"KNO\":{\"Timezone\":\"Asia/Jakarta\"},\"KNP\":{\"Timezone\":\"Africa/Luanda\"},\"KNQ\":{\"Timezone\":\"Pacific/Noumea\"},\"KNR\":{\"Timezone\":null},\"KNS\":{\"Timezone\":\"Australia/Melbourne\"},\"KNU\":{\"Timezone\":\"Asia/Calcutta\"},\"KNW\":{\"Timezone\":\"America/Anchorage\"},\"KNX\":{\"Timezone\":\"Australia/Perth\"},\"KOA\":{\"Timezone\":\"Pacific/Honolulu\"},\"KOC\":{\"Timezone\":\"Pacific/Noumea\"},\"KOE\":{\"Timezone\":\"Asia/Makassar\"},\"KOI\":{\"Timezone\":\"Europe/London\"},\"KOJ\":{\"Timezone\":\"Asia/Tokyo\"},\"KOK\":{\"Timezone\":\"Europe/Helsinki\"},\"KOO\":{\"Timezone\":null},\"KOP\":{\"Timezone\":\"Asia/Bangkok\"},\"KOQ\":{\"Timezone\":\"Europe/Berlin\"},\"KOS\":{\"Timezone\":\"Asia/Phnom_Penh\"},\"KOT\":{\"Timezone\":\"America/Anchorage\"},\"KOU\":{\"Timezone\":\"Africa/Libreville\"},\"KOV\":{\"Timezone\":\"Asia/Qyzylorda\"},\"KOW\":{\"Timezone\":\"Asia/Shanghai\"},\"KOX\":{\"Timezone\":null},\"KPC\":{\"Timezone\":\"America/Anchorage\"},\"KPN\":{\"Timezone\":\"America/Anchorage\"},\"KPO\":{\"Timezone\":\"Asia/Seoul\"},\"KPS\":{\"Timezone\":null},\"KPV\":{\"Timezone\":\"America/Anchorage\"},\"KQA\":{\"Timezone\":\"America/Anchorage\"},\"KQH\":{\"Timezone\":null},\"KQT\":{\"Timezone\":\"Asia/Dushanbe\"},\"KRA\":{\"Timezone\":null},\"KRB\":{\"Timezone\":\"Australia/Brisbane\"},\"KRC\":{\"Timezone\":null},\"KRF\":{\"Timezone\":\"Europe/Stockholm\"},\"KRH\":{\"Timezone\":\"Europe/London\"},\"KRI\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"KRK\":{\"Timezone\":\"Europe/Warsaw\"},\"KRL\":{\"Timezone\":\"Asia/Shanghai\"},\"KRN\":{\"Timezone\":\"Europe/Stockholm\"},\"KRO\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"KRP\":{\"Timezone\":\"Europe/Copenhagen\"},\"KRQ\":{\"Timezone\":null},\"KRR\":{\"Timezone\":\"Europe/Moscow\"},\"KRS\":{\"Timezone\":\"Europe/Oslo\"},\"KRT\":{\"Timezone\":\"Africa/Khartoum\"},\"KRW\":{\"Timezone\":\"Asia/Ashgabat\"},\"KRY\":{\"Timezone\":\"Asia/Shanghai\"},\"KRZ\":{\"Timezone\":\"Africa/Kinshasa\"},\"KSA\":{\"Timezone\":\"Pacific/Kosrae\"},\"KSC\":{\"Timezone\":\"Europe/Bratislava\"},\"KSD\":{\"Timezone\":\"Europe/Stockholm\"},\"KSE\":{\"Timezone\":null},\"KSF\":{\"Timezone\":\"Europe/Berlin\"},\"KSH\":{\"Timezone\":\"Asia/Tehran\"},\"KSI\":{\"Timezone\":\"Africa/Conakry\"},\"KSJ\":{\"Timezone\":\"Europe/Athens\"},\"KSK\":{\"Timezone\":\"Europe/Stockholm\"},\"KSL\":{\"Timezone\":\"Africa/Khartoum\"},\"KSM\":{\"Timezone\":\"America/Anchorage\"},\"KSN\":{\"Timezone\":\"Asia/Qyzylorda\"},\"KSO\":{\"Timezone\":\"Europe/Athens\"},\"KSQ\":{\"Timezone\":\"Asia/Samarkand\"},\"KSS\":{\"Timezone\":\"Africa/Bamako\"},\"KSU\":{\"Timezone\":\"Europe/Oslo\"},\"KSY\":{\"Timezone\":\"Europe/Istanbul\"},\"KSZ\":{\"Timezone\":\"Europe/Moscow\"},\"KTA\":{\"Timezone\":\"Australia/Perth\"},\"KTD\":{\"Timezone\":\"Asia/Tokyo\"},\"KTE\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"KTF\":{\"Timezone\":\"Pacific/Auckland\"},\"KTG\":{\"Timezone\":\"Asia/Jakarta\"},\"KTI\":{\"Timezone\":\"Asia/Phnom_Penh\"},\"KTL\":{\"Timezone\":\"Africa/Nairobi\"},\"KTM\":{\"Timezone\":\"Asia/Katmandu\"},\"KTN\":{\"Timezone\":\"America/Anchorage\"},\"KTP\":{\"Timezone\":\"America/Jamaica\"},\"KTQ\":{\"Timezone\":\"Europe/Helsinki\"},\"KTR\":{\"Timezone\":\"Australia/Darwin\"},\"KTS\":{\"Timezone\":\"America/Anchorage\"},\"KTT\":{\"Timezone\":\"Europe/Helsinki\"},\"KTU\":{\"Timezone\":\"Asia/Calcutta\"},\"KTW\":{\"Timezone\":\"Europe/Warsaw\"},\"KUA\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"KUC\":{\"Timezone\":\"Pacific/Tarawa\"},\"KUD\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"KUF\":{\"Timezone\":\"Europe/Samara\"},\"KUG\":{\"Timezone\":\"Australia/Brisbane\"},\"KUH\":{\"Timezone\":\"Asia/Tokyo\"},\"KUK\":{\"Timezone\":\"America/Anchorage\"},\"KUL\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"KUM\":{\"Timezone\":\"Asia/Tokyo\"},\"KUN\":{\"Timezone\":\"Europe/Vilnius\"},\"KUO\":{\"Timezone\":\"Europe/Helsinki\"},\"KUT\":{\"Timezone\":\"Asia/Tbilisi\"},\"KUU\":{\"Timezone\":\"Asia/Calcutta\"},\"KUV\":{\"Timezone\":\"Asia/Seoul\"},\"KVA\":{\"Timezone\":\"Europe/Athens\"},\"KVB\":{\"Timezone\":\"Europe/Stockholm\"},\"KVC\":{\"Timezone\":\"America/Anchorage\"},\"KVD\":{\"Timezone\":\"Asia/Baku\"},\"KVG\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"KVK\":{\"Timezone\":\"Europe/Moscow\"},\"KVL\":{\"Timezone\":\"America/Anchorage\"},\"KVM\":{\"Timezone\":\"Asia/Anadyr\"},\"KVR\":{\"Timezone\":\"Asia/Vladivostok\"},\"KVX\":{\"Timezone\":\"Europe/Moscow\"},\"KWA\":{\"Timezone\":\"Pacific/Majuro\"},\"KWB\":{\"Timezone\":null},\"KWE\":{\"Timezone\":\"Asia/Shanghai\"},\"KWG\":{\"Timezone\":\"Europe/Kiev\"},\"KWI\":{\"Timezone\":\"Asia/Kuwait\"},\"KWJ\":{\"Timezone\":\"Asia/Seoul\"},\"KWK\":{\"Timezone\":\"America/Anchorage\"},\"KWL\":{\"Timezone\":\"Asia/Shanghai\"},\"KWM\":{\"Timezone\":\"Australia/Brisbane\"},\"KWN\":{\"Timezone\":\"America/Anchorage\"},\"KWT\":{\"Timezone\":\"America/Anchorage\"},\"KWZ\":{\"Timezone\":\"Africa/Lubumbashi\"},\"KXE\":{\"Timezone\":\"Africa/Johannesburg\"},\"KXF\":{\"Timezone\":\"Pacific/Fiji\"},\"KXK\":{\"Timezone\":\"Asia/Vladivostok\"},\"KYA\":{\"Timezone\":\"Europe/Istanbul\"},\"KYD\":{\"Timezone\":\"Asia/Taipei\"},\"KYE\":{\"Timezone\":\"Asia/Beirut\"},\"KYI\":{\"Timezone\":\"Australia/Adelaide\"},\"KYK\":{\"Timezone\":\"America/Anchorage\"},\"KYP\":{\"Timezone\":\"Asia/Rangoon\"},\"KYS\":{\"Timezone\":\"Africa/Bamako\"},\"KYU\":{\"Timezone\":\"America/Anchorage\"},\"KYZ\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"KZC\":{\"Timezone\":\"Asia/Phnom_Penh\"},\"KZF\":{\"Timezone\":null},\"KZG\":{\"Timezone\":\"Europe/Berlin\"},\"KZI\":{\"Timezone\":\"Europe/Athens\"},\"KZN\":{\"Timezone\":\"Europe/Moscow\"},\"KZO\":{\"Timezone\":\"Asia/Qyzylorda\"},\"KZR\":{\"Timezone\":\"Europe/Istanbul\"},\"KZS\":{\"Timezone\":\"Europe/Athens\"},\"LAA\":{\"Timezone\":\"America/Denver\"},\"LAD\":{\"Timezone\":\"Africa/Luanda\"},\"LAE\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"LAF\":{\"Timezone\":\"America/New_York\"},\"LAI\":{\"Timezone\":\"Europe/Paris\"},\"LAJ\":{\"Timezone\":\"America/Sao_Paulo\"},\"LAK\":{\"Timezone\":\"America/Edmonton\"},\"LAL\":{\"Timezone\":\"America/New_York\"},\"LAM\":{\"Timezone\":\"America/Denver\"},\"LAN\":{\"Timezone\":\"America/New_York\"},\"LAO\":{\"Timezone\":\"Asia/Manila\"},\"LAP\":{\"Timezone\":\"America/Mazatlan\"},\"LAQ\":{\"Timezone\":\"Africa/Tripoli\"},\"LAR\":{\"Timezone\":\"America/Denver\"},\"LAS\":{\"Timezone\":\"America/Los_Angeles\"},\"LAU\":{\"Timezone\":\"Africa/Nairobi\"},\"LAW\":{\"Timezone\":\"America/Chicago\"},\"LAX\":{\"Timezone\":\"America/Los_Angeles\"},\"LAY\":{\"Timezone\":\"Africa/Johannesburg\"},\"LAZ\":{\"Timezone\":\"America/Fortaleza\"},\"LBA\":{\"Timezone\":\"Europe/London\"},\"LBB\":{\"Timezone\":\"America/Chicago\"},\"LBC\":{\"Timezone\":\"Europe/Berlin\"},\"LBD\":{\"Timezone\":\"Asia/Dushanbe\"},\"LBE\":{\"Timezone\":\"America/New_York\"},\"LBF\":{\"Timezone\":\"America/Chicago\"},\"LBG\":{\"Timezone\":\"Europe/Paris\"},\"LBI\":{\"Timezone\":\"Europe/Paris\"},\"LBJ\":{\"Timezone\":\"Asia/Makassar\"},\"LBL\":{\"Timezone\":\"America/Chicago\"},\"LBQ\":{\"Timezone\":\"Africa/Libreville\"},\"LBR\":{\"Timezone\":\"America/Boa_Vista\"},\"LBS\":{\"Timezone\":\"Pacific/Fiji\"},\"LBT\":{\"Timezone\":\"America/New_York\"},\"LBU\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"LBV\":{\"Timezone\":\"Africa/Libreville\"},\"LBW\":{\"Timezone\":\"Asia/Makassar\"},\"LBX\":{\"Timezone\":\"Asia/Manila\"},\"LBY\":{\"Timezone\":\"Europe/Paris\"},\"LBZ\":{\"Timezone\":\"Africa/Luanda\"},\"LCA\":{\"Timezone\":\"Asia/Nicosia\"},\"LCC\":{\"Timezone\":\"Europe/Rome\"},\"LCE\":{\"Timezone\":\"America/Tegucigalpa\"},\"LCG\":{\"Timezone\":\"Europe/Madrid\"},\"LCH\":{\"Timezone\":\"America/Chicago\"},\"LCJ\":{\"Timezone\":\"Europe/Warsaw\"},\"LCK\":{\"Timezone\":\"America/New_York\"},\"LCL\":{\"Timezone\":\"America/Havana\"},\"LCQ\":{\"Timezone\":\"America/New_York\"},\"LCX\":{\"Timezone\":\"Asia/Shanghai\"},\"LCY\":{\"Timezone\":\"Europe/London\"},\"LDB\":{\"Timezone\":\"America/Sao_Paulo\"},\"LDE\":{\"Timezone\":\"Europe/Paris\"},\"LDG\":{\"Timezone\":\"Europe/Moscow\"},\"LDH\":{\"Timezone\":\"Australia/Lord_Howe\"},\"LDI\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"LDJ\":{\"Timezone\":\"America/New_York\"},\"LDK\":{\"Timezone\":\"Europe/Stockholm\"},\"LDM\":{\"Timezone\":null},\"LDN\":{\"Timezone\":\"Asia/Katmandu\"},\"LDS\":{\"Timezone\":\"Asia/Shanghai\"},\"LDU\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"LDV\":{\"Timezone\":\"Europe/Paris\"},\"LDX\":{\"Timezone\":\"America/Cayenne\"},\"LDY\":{\"Timezone\":\"Europe/London\"},\"LEA\":{\"Timezone\":\"Australia/Perth\"},\"LEB\":{\"Timezone\":\"America/New_York\"},\"LEC\":{\"Timezone\":\"America/Fortaleza\"},\"LED\":{\"Timezone\":\"Europe/Moscow\"},\"LEE\":{\"Timezone\":null},\"LEH\":{\"Timezone\":\"Europe/Paris\"},\"LEI\":{\"Timezone\":\"Europe/Madrid\"},\"LEJ\":{\"Timezone\":\"Europe/Berlin\"},\"LEK\":{\"Timezone\":\"Africa/Conakry\"},\"LEL\":{\"Timezone\":\"Australia/Darwin\"},\"LEN\":{\"Timezone\":\"Europe/Madrid\"},\"LEQ\":{\"Timezone\":\"Europe/London\"},\"LER\":{\"Timezone\":\"Australia/Perth\"},\"LET\":{\"Timezone\":\"America/Bogota\"},\"LEU\":{\"Timezone\":\"Europe/Madrid\"},\"LEV\":{\"Timezone\":\"Pacific/Fiji\"},\"LEW\":{\"Timezone\":\"America/New_York\"},\"LEX\":{\"Timezone\":\"America/New_York\"},\"LEY\":{\"Timezone\":\"Europe/Amsterdam\"},\"LFB\":{\"Timezone\":\"Africa/Maputo\"},\"LFI\":{\"Timezone\":\"America/New_York\"},\"LFK\":{\"Timezone\":\"America/Chicago\"},\"LFM\":{\"Timezone\":\"Asia/Tehran\"},\"LFQ\":{\"Timezone\":null},\"LFR\":{\"Timezone\":\"America/Caracas\"},\"LFT\":{\"Timezone\":\"America/Chicago\"},\"LFW\":{\"Timezone\":\"Africa/Lome\"},\"LGA\":{\"Timezone\":\"America/New_York\"},\"LGB\":{\"Timezone\":\"America/Los_Angeles\"},\"LGC\":{\"Timezone\":\"America/New_York\"},\"LGD\":{\"Timezone\":null},\"LGG\":{\"Timezone\":\"Europe/Brussels\"},\"LGH\":{\"Timezone\":\"Australia/Adelaide\"},\"LGI\":{\"Timezone\":\"America/Nassau\"},\"LGK\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"LGL\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"LGO\":{\"Timezone\":\"Europe/Berlin\"},\"LGP\":{\"Timezone\":\"Asia/Manila\"},\"LGS\":{\"Timezone\":\"America/Mendoza\"},\"LGU\":{\"Timezone\":\"America/Denver\"},\"LGW\":{\"Timezone\":\"Europe/London\"},\"LHA\":{\"Timezone\":\"Europe/Berlin\"},\"LHE\":{\"Timezone\":\"Asia/Karachi\"},\"LHG\":{\"Timezone\":\"Australia/Sydney\"},\"LHK\":{\"Timezone\":null},\"LHR\":{\"Timezone\":\"Europe/London\"},\"LHS\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"LHV\":{\"Timezone\":\"America/New_York\"},\"LHW\":{\"Timezone\":\"Asia/Shanghai\"},\"LID\":{\"Timezone\":\"Europe/Amsterdam\"},\"LIF\":{\"Timezone\":\"Pacific/Noumea\"},\"LIG\":{\"Timezone\":\"Europe/Paris\"},\"LIH\":{\"Timezone\":\"Pacific/Honolulu\"},\"LII\":{\"Timezone\":\"Asia/Jayapura\"},\"LIL\":{\"Timezone\":\"Europe/Paris\"},\"LIM\":{\"Timezone\":\"America/Lima\"},\"LIN\":{\"Timezone\":\"Europe/Rome\"},\"LIO\":{\"Timezone\":\"America/Costa_Rica\"},\"LIP\":{\"Timezone\":\"America/Sao_Paulo\"},\"LIQ\":{\"Timezone\":\"Africa/Kinshasa\"},\"LIR\":{\"Timezone\":\"America/Costa_Rica\"},\"LIS\":{\"Timezone\":\"Europe/Lisbon\"},\"LIT\":{\"Timezone\":\"America/Chicago\"},\"LIW\":{\"Timezone\":\"Asia/Rangoon\"},\"LIX\":{\"Timezone\":\"Africa/Blantyre\"},\"LIY\":{\"Timezone\":\"America/New_York\"},\"LJA\":{\"Timezone\":\"Africa/Lubumbashi\"},\"LJG\":{\"Timezone\":\"Asia/Shanghai\"},\"LJN\":{\"Timezone\":\"America/Chicago\"},\"LJU\":{\"Timezone\":\"Europe/Ljubljana\"},\"LKB\":{\"Timezone\":\"Pacific/Fiji\"},\"LKG\":{\"Timezone\":\"Africa/Nairobi\"},\"LKH\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"LKL\":{\"Timezone\":\"Europe/Oslo\"},\"LKN\":{\"Timezone\":\"Europe/Oslo\"},\"LKO\":{\"Timezone\":\"Asia/Calcutta\"},\"LKP\":{\"Timezone\":\"America/New_York\"},\"LKV\":{\"Timezone\":\"America/Los_Angeles\"},\"LKY\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"LKZ\":{\"Timezone\":\"Europe/London\"},\"LLA\":{\"Timezone\":\"Europe/Stockholm\"},\"LLB\":{\"Timezone\":null},\"LLE\":{\"Timezone\":\"Africa/Johannesburg\"},\"LLF\":{\"Timezone\":\"Asia/Shanghai\"},\"LLI\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"LLK\":{\"Timezone\":\"Asia/Baku\"},\"LLU\":{\"Timezone\":\"America/Godthab\"},\"LLV\":{\"Timezone\":\"Asia/Shanghai\"},\"LLW\":{\"Timezone\":\"Africa/Blantyre\"},\"LLY\":{\"Timezone\":\"America/New_York\"},\"LMA\":{\"Timezone\":\"America/Anchorage\"},\"LME\":{\"Timezone\":\"Europe/Paris\"},\"LMM\":{\"Timezone\":\"America/Mazatlan\"},\"LMN\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"LMO\":{\"Timezone\":\"Europe/London\"},\"LMP\":{\"Timezone\":\"Europe/Rome\"},\"LMQ\":{\"Timezone\":\"Africa/Tripoli\"},\"LMR\":{\"Timezone\":null},\"LMT\":{\"Timezone\":\"America/Los_Angeles\"},\"LNA\":{\"Timezone\":\"America/New_York\"},\"LNB\":{\"Timezone\":\"Pacific/Efate\"},\"LND\":{\"Timezone\":\"America/Denver\"},\"LNE\":{\"Timezone\":\"Pacific/Efate\"},\"LNJ\":{\"Timezone\":\"Asia/Shanghai\"},\"LNK\":{\"Timezone\":\"America/Chicago\"},\"LNL\":{\"Timezone\":null},\"LNN\":{\"Timezone\":\"America/New_York\"},\"LNO\":{\"Timezone\":\"Australia/Perth\"},\"LNR\":{\"Timezone\":\"America/Chicago\"},\"LNS\":{\"Timezone\":\"America/New_York\"},\"LNX\":{\"Timezone\":null},\"LNY\":{\"Timezone\":\"Pacific/Honolulu\"},\"LNZ\":{\"Timezone\":\"Europe/Vienna\"},\"LOD\":{\"Timezone\":\"Pacific/Efate\"},\"LOE\":{\"Timezone\":\"Asia/Bangkok\"},\"LOH\":{\"Timezone\":\"America/Guayaquil\"},\"LOK\":{\"Timezone\":\"Africa/Nairobi\"},\"LOL\":{\"Timezone\":null},\"LOO\":{\"Timezone\":\"Africa/Algiers\"},\"LOP\":{\"Timezone\":\"Asia/Makassar\"},\"LOS\":{\"Timezone\":\"Africa/Lagos\"},\"LOT\":{\"Timezone\":\"America/Chicago\"},\"LOU\":{\"Timezone\":\"America/New_York\"},\"LOV\":{\"Timezone\":\"America/Mexico_City\"},\"LOZ\":{\"Timezone\":\"America/New_York\"},\"LPA\":{\"Timezone\":\"Atlantic/Canary\"},\"LPB\":{\"Timezone\":\"America/La_Paz\"},\"LPC\":{\"Timezone\":\"America/Los_Angeles\"},\"LPD\":{\"Timezone\":\"America/Bogota\"},\"LPF\":{\"Timezone\":null},\"LPG\":{\"Timezone\":\"America/Buenos_Aires\"},\"LPI\":{\"Timezone\":\"Europe/Stockholm\"},\"LPK\":{\"Timezone\":\"Europe/Moscow\"},\"LPL\":{\"Timezone\":\"Europe/London\"},\"LPM\":{\"Timezone\":\"Pacific/Efate\"},\"LPP\":{\"Timezone\":\"Europe/Helsinki\"},\"LPQ\":{\"Timezone\":\"Asia/Vientiane\"},\"LPS\":{\"Timezone\":\"America/Los_Angeles\"},\"LPT\":{\"Timezone\":\"Asia/Bangkok\"},\"LPU\":{\"Timezone\":\"Asia/Makassar\"},\"LPX\":{\"Timezone\":\"Europe/Riga\"},\"LPY\":{\"Timezone\":\"Europe/Paris\"},\"LQM\":{\"Timezone\":\"America/Bogota\"},\"LRA\":{\"Timezone\":\"Europe/Athens\"},\"LRD\":{\"Timezone\":\"America/Chicago\"},\"LRE\":{\"Timezone\":\"Australia/Brisbane\"},\"LRF\":{\"Timezone\":\"America/Chicago\"},\"LRH\":{\"Timezone\":\"Europe/Paris\"},\"LRL\":{\"Timezone\":\"Africa/Lome\"},\"LRM\":{\"Timezone\":\"America/Santo_Domingo\"},\"LRR\":{\"Timezone\":\"Asia/Tehran\"},\"LRS\":{\"Timezone\":\"Europe/Athens\"},\"LRT\":{\"Timezone\":\"Europe/Paris\"},\"LRU\":{\"Timezone\":\"America/Denver\"},\"LRV\":{\"Timezone\":\"America/Caracas\"},\"LSC\":{\"Timezone\":\"America/Santiago\"},\"LSE\":{\"Timezone\":\"America/Chicago\"},\"LSF\":{\"Timezone\":\"America/New_York\"},\"LSH\":{\"Timezone\":\"Asia/Rangoon\"},\"LSI\":{\"Timezone\":\"Europe/London\"},\"LSL\":{\"Timezone\":\"America/Costa_Rica\"},\"LSP\":{\"Timezone\":\"America/Caracas\"},\"LSQ\":{\"Timezone\":\"America/Santiago\"},\"LSS\":{\"Timezone\":\"America/Guadeloupe\"},\"LST\":{\"Timezone\":\"Australia/Melbourne\"},\"LSV\":{\"Timezone\":\"America/Los_Angeles\"},\"LSW\":{\"Timezone\":\"Asia/Jakarta\"},\"LSX\":{\"Timezone\":\"Asia/Jakarta\"},\"LSY\":{\"Timezone\":\"Australia/Sydney\"},\"LSZ\":{\"Timezone\":\"Europe/Zagreb\"},\"LTA\":{\"Timezone\":\"Africa/Johannesburg\"},\"LTD\":{\"Timezone\":\"Africa/Tripoli\"},\"LTI\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"LTK\":{\"Timezone\":\"Asia/Damascus\"},\"LTM\":{\"Timezone\":\"America/Guyana\"},\"LTN\":{\"Timezone\":\"Europe/London\"},\"LTO\":{\"Timezone\":\"America/Mazatlan\"},\"LTQ\":{\"Timezone\":\"Europe/Paris\"},\"LTS\":{\"Timezone\":\"America/Chicago\"},\"LTT\":{\"Timezone\":\"Europe/Paris\"},\"LTX\":{\"Timezone\":\"America/Guayaquil\"},\"LUA\":{\"Timezone\":\"Asia/Katmandu\"},\"LUC\":{\"Timezone\":null},\"LUD\":{\"Timezone\":\"Africa/Windhoek\"},\"LUF\":{\"Timezone\":\"America/Phoenix\"},\"LUG\":{\"Timezone\":\"Europe/Zurich\"},\"LUH\":{\"Timezone\":\"Asia/Calcutta\"},\"LUK\":{\"Timezone\":\"America/New_York\"},\"LUM\":{\"Timezone\":\"Asia/Shanghai\"},\"LUN\":{\"Timezone\":\"Africa/Lusaka\"},\"LUO\":{\"Timezone\":\"Africa/Luanda\"},\"LUP\":{\"Timezone\":\"Pacific/Honolulu\"},\"LUQ\":{\"Timezone\":\"America/Argentina/San_Luis\"},\"LUR\":{\"Timezone\":\"America/Anchorage\"},\"LUV\":{\"Timezone\":\"Asia/Jayapura\"},\"LUW\":{\"Timezone\":\"Asia/Makassar\"},\"LUX\":{\"Timezone\":\"Europe/Luxembourg\"},\"LUZ\":{\"Timezone\":\"Europe/Warsaw\"},\"LVA\":{\"Timezone\":\"Europe/Paris\"},\"LVI\":{\"Timezone\":\"Africa/Lusaka\"},\"LVK\":{\"Timezone\":\"America/Los_Angeles\"},\"LVM\":{\"Timezone\":\"America/Denver\"},\"LVO\":{\"Timezone\":\"Australia/Perth\"},\"LVP\":{\"Timezone\":\"Asia/Tehran\"},\"LVS\":{\"Timezone\":\"America/Denver\"},\"LWB\":{\"Timezone\":\"America/New_York\"},\"LWC\":{\"Timezone\":\"America/Chicago\"},\"LWK\":{\"Timezone\":\"Europe/London\"},\"LWM\":{\"Timezone\":\"America/New_York\"},\"LWN\":{\"Timezone\":\"Asia/Yerevan\"},\"LWO\":{\"Timezone\":\"Europe/Kiev\"},\"LWR\":{\"Timezone\":\"Europe/Amsterdam\"},\"LWS\":{\"Timezone\":\"America/Los_Angeles\"},\"LWT\":{\"Timezone\":\"America/Denver\"},\"LWY\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"LXA\":{\"Timezone\":\"Asia/Shanghai\"},\"LXG\":{\"Timezone\":\"Asia/Vientiane\"},\"LXN\":{\"Timezone\":null},\"LXR\":{\"Timezone\":\"Africa/Cairo\"},\"LXS\":{\"Timezone\":\"Europe/Athens\"},\"LYA\":{\"Timezone\":\"Asia/Shanghai\"},\"LYB\":{\"Timezone\":\"America/Cayman\"},\"LYC\":{\"Timezone\":\"Europe/Stockholm\"},\"LYE\":{\"Timezone\":\"Europe/London\"},\"LYG\":{\"Timezone\":\"Asia/Shanghai\"},\"LYH\":{\"Timezone\":\"America/New_York\"},\"LYI\":{\"Timezone\":\"Asia/Shanghai\"},\"LYM\":{\"Timezone\":\"Europe/London\"},\"LYN\":{\"Timezone\":\"Europe/Paris\"},\"LYP\":{\"Timezone\":\"Asia/Karachi\"},\"LYR\":{\"Timezone\":\"Arctic/Longyearbyen\"},\"LYS\":{\"Timezone\":\"Europe/Paris\"},\"LYU\":{\"Timezone\":\"America/Chicago\"},\"LYX\":{\"Timezone\":\"Europe/London\"},\"LZC\":{\"Timezone\":\"America/Mexico_City\"},\"LZH\":{\"Timezone\":\"Asia/Shanghai\"},\"LZN\":{\"Timezone\":\"Asia/Taipei\"},\"LZO\":{\"Timezone\":\"Asia/Shanghai\"},\"LZR\":{\"Timezone\":\"Australia/Brisbane\"},\"LZU\":{\"Timezone\":\"America/New_York\"},\"LZY\":{\"Timezone\":\"Asia/Shanghai\"},\"MAA\":{\"Timezone\":\"Asia/Calcutta\"},\"MAB\":{\"Timezone\":\"America/Belem\"},\"MAD\":{\"Timezone\":\"Europe/Madrid\"},\"MAE\":{\"Timezone\":\"America/Los_Angeles\"},\"MAF\":{\"Timezone\":\"America/Chicago\"},\"MAG\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"MAH\":{\"Timezone\":\"Europe/Madrid\"},\"MAI\":{\"Timezone\":null},\"MAJ\":{\"Timezone\":\"Pacific/Majuro\"},\"MAK\":{\"Timezone\":\"Africa/Juba\"},\"MAM\":{\"Timezone\":\"America/Mexico_City\"},\"MAN\":{\"Timezone\":\"Europe/London\"},\"MAO\":{\"Timezone\":\"America/Boa_Vista\"},\"MAQ\":{\"Timezone\":\"Asia/Bangkok\"},\"MAR\":{\"Timezone\":\"America/Caracas\"},\"MAS\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"MAT\":{\"Timezone\":\"Africa/Kinshasa\"},\"MAU\":{\"Timezone\":\"Pacific/Tahiti\"},\"MAX\":{\"Timezone\":\"Africa/Dakar\"},\"MAY\":{\"Timezone\":\"America/Nassau\"},\"MAZ\":{\"Timezone\":\"America/Puerto_Rico\"},\"MBA\":{\"Timezone\":\"Africa/Nairobi\"},\"MBD\":{\"Timezone\":\"Africa/Johannesburg\"},\"MBE\":{\"Timezone\":\"Asia/Tokyo\"},\"MBG\":{\"Timezone\":null},\"MBH\":{\"Timezone\":\"Australia/Brisbane\"},\"MBJ\":{\"Timezone\":\"America/Jamaica\"},\"MBL\":{\"Timezone\":\"America/New_York\"},\"MBO\":{\"Timezone\":\"Asia/Manila\"},\"MBS\":{\"Timezone\":\"America/New_York\"},\"MBT\":{\"Timezone\":\"Asia/Manila\"},\"MBU\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"MBW\":{\"Timezone\":\"Australia/Hobart\"},\"MBX\":{\"Timezone\":\"Europe/Ljubljana\"},\"MBZ\":{\"Timezone\":\"America/Boa_Vista\"},\"MCB\":{\"Timezone\":null},\"MCC\":{\"Timezone\":\"America/Los_Angeles\"},\"MCE\":{\"Timezone\":\"America/Los_Angeles\"},\"MCF\":{\"Timezone\":\"America/New_York\"},\"MCG\":{\"Timezone\":\"America/Anchorage\"},\"MCH\":{\"Timezone\":\"America/Guayaquil\"},\"MCI\":{\"Timezone\":\"America/Chicago\"},\"MCJ\":{\"Timezone\":\"America/Bogota\"},\"MCK\":{\"Timezone\":\"America/Chicago\"},\"MCL\":{\"Timezone\":\"America/Anchorage\"},\"MCN\":{\"Timezone\":\"America/New_York\"},\"MCO\":{\"Timezone\":\"America/New_York\"},\"MCP\":{\"Timezone\":\"America/Fortaleza\"},\"MCS\":{\"Timezone\":\"America/Cordoba\"},\"MCT\":{\"Timezone\":\"Asia/Muscat\"},\"MCU\":{\"Timezone\":\"Europe/Paris\"},\"MCV\":{\"Timezone\":\"Australia/Darwin\"},\"MCW\":{\"Timezone\":\"America/Chicago\"},\"MCX\":{\"Timezone\":\"Europe/Moscow\"},\"MCY\":{\"Timezone\":\"Australia/Brisbane\"},\"MCZ\":{\"Timezone\":\"America/Fortaleza\"},\"MDC\":{\"Timezone\":\"Asia/Makassar\"},\"MDE\":{\"Timezone\":\"America/Bogota\"},\"MDG\":{\"Timezone\":\"Asia/Shanghai\"},\"MDH\":{\"Timezone\":null},\"MDI\":{\"Timezone\":\"Africa/Lagos\"},\"MDK\":{\"Timezone\":\"Africa/Kinshasa\"},\"MDL\":{\"Timezone\":\"Asia/Rangoon\"},\"MDQ\":{\"Timezone\":\"America/Buenos_Aires\"},\"MDS\":{\"Timezone\":\"America/Grand_Turk\"},\"MDT\":{\"Timezone\":\"America/New_York\"},\"MDU\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"MDW\":{\"Timezone\":\"America/Chicago\"},\"MDY\":{\"Timezone\":\"Pacific/Midway\"},\"MDZ\":{\"Timezone\":\"America/Mendoza\"},\"MEA\":{\"Timezone\":\"America/Sao_Paulo\"},\"MEB\":{\"Timezone\":\"Australia/Hobart\"},\"MEC\":{\"Timezone\":\"America/Guayaquil\"},\"MED\":{\"Timezone\":\"Asia/Riyadh\"},\"MEE\":{\"Timezone\":\"Pacific/Noumea\"},\"MEG\":{\"Timezone\":\"Africa/Luanda\"},\"MEH\":{\"Timezone\":\"Europe/Oslo\"},\"MEI\":{\"Timezone\":\"America/Chicago\"},\"MEK\":{\"Timezone\":\"Africa/Casablanca\"},\"MEL\":{\"Timezone\":\"Australia/Hobart\"},\"MEM\":{\"Timezone\":\"America/Chicago\"},\"MEN\":{\"Timezone\":\"Europe/Paris\"},\"MEO\":{\"Timezone\":\"America/New_York\"},\"MEQ\":{\"Timezone\":null},\"MER\":{\"Timezone\":\"America/Los_Angeles\"},\"MES\":{\"Timezone\":\"Asia/Jakarta\"},\"MEU\":{\"Timezone\":\"America/Belem\"},\"MEX\":{\"Timezone\":\"America/Mexico_City\"},\"MEY\":{\"Timezone\":\"Asia/Katmandu\"},\"MFA\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"MFD\":{\"Timezone\":\"America/New_York\"},\"MFE\":{\"Timezone\":\"America/Chicago\"},\"MFG\":{\"Timezone\":\"Asia/Karachi\"},\"MFI\":{\"Timezone\":\"America/Chicago\"},\"MFJ\":{\"Timezone\":\"Pacific/Fiji\"},\"MFK\":{\"Timezone\":\"Asia/Taipei\"},\"MFM\":{\"Timezone\":\"Asia/Macau\"},\"MFN\":{\"Timezone\":\"Pacific/Auckland\"},\"MFQ\":{\"Timezone\":\"Africa/Niamey\"},\"MFR\":{\"Timezone\":\"America/Los_Angeles\"},\"MFU\":{\"Timezone\":\"Africa/Lusaka\"},\"MFX\":{\"Timezone\":\"Europe/Paris\"},\"MGA\":{\"Timezone\":\"America/Managua\"},\"MGB\":{\"Timezone\":\"Australia/Adelaide\"},\"MGC\":{\"Timezone\":\"America/Chicago\"},\"MGE\":{\"Timezone\":\"America/New_York\"},\"MGF\":{\"Timezone\":\"America/Sao_Paulo\"},\"MGH\":{\"Timezone\":\"Africa/Johannesburg\"},\"MGJ\":{\"Timezone\":\"America/New_York\"},\"MGL\":{\"Timezone\":\"Europe/Berlin\"},\"MGM\":{\"Timezone\":\"America/Chicago\"},\"MGN\":{\"Timezone\":\"America/Bogota\"},\"MGQ\":{\"Timezone\":\"Africa/Mogadishu\"},\"MGS\":{\"Timezone\":\"Pacific/Rarotonga\"},\"MGT\":{\"Timezone\":\"Australia/Darwin\"},\"MGW\":{\"Timezone\":\"America/New_York\"},\"MGY\":{\"Timezone\":\"America/New_York\"},\"MGZ\":{\"Timezone\":\"Asia/Rangoon\"},\"MHA\":{\"Timezone\":\"America/Guyana\"},\"MHC\":{\"Timezone\":\"America/Santiago\"},\"MHD\":{\"Timezone\":\"Asia/Tehran\"},\"MHE\":{\"Timezone\":null},\"MHG\":{\"Timezone\":\"Europe/Berlin\"},\"MHH\":{\"Timezone\":\"America/Nassau\"},\"MHK\":{\"Timezone\":\"America/Chicago\"},\"MHP\":{\"Timezone\":\"Europe/Minsk\"},\"MHQ\":{\"Timezone\":\"Europe/Mariehamn\"},\"MHR\":{\"Timezone\":\"America/Los_Angeles\"},\"MHT\":{\"Timezone\":\"America/New_York\"},\"MHU\":{\"Timezone\":\"Australia/Hobart\"},\"MHV\":{\"Timezone\":\"America/Los_Angeles\"},\"MHX\":{\"Timezone\":\"Pacific/Rarotonga\"},\"MHZ\":{\"Timezone\":\"Europe/London\"},\"MIA\":{\"Timezone\":\"America/New_York\"},\"MIB\":{\"Timezone\":\"America/Chicago\"},\"MID\":{\"Timezone\":\"America/Mexico_City\"},\"MIE\":{\"Timezone\":\"America/New_York\"},\"MIG\":{\"Timezone\":\"Asia/Shanghai\"},\"MII\":{\"Timezone\":\"America/Sao_Paulo\"},\"MIJ\":{\"Timezone\":\"Pacific/Majuro\"},\"MIK\":{\"Timezone\":\"Europe/Helsinki\"},\"MIM\":{\"Timezone\":\"Australia/Sydney\"},\"MIP\":{\"Timezone\":\"Asia/Jerusalem\"},\"MIR\":{\"Timezone\":\"Africa/Tunis\"},\"MIS\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"MIU\":{\"Timezone\":\"Africa/Lagos\"},\"MIV\":{\"Timezone\":\"America/New_York\"},\"MJA\":{\"Timezone\":\"Indian/Antananarivo\"},\"MJC\":{\"Timezone\":\"Africa/Abidjan\"},\"MJD\":{\"Timezone\":\"Asia/Karachi\"},\"MJF\":{\"Timezone\":\"Europe/Oslo\"},\"MJI\":{\"Timezone\":\"Africa/Tripoli\"},\"MJK\":{\"Timezone\":\"Australia/Perth\"},\"MJL\":{\"Timezone\":\"Africa/Libreville\"},\"MJM\":{\"Timezone\":\"Africa/Lubumbashi\"},\"MJN\":{\"Timezone\":\"Indian/Antananarivo\"},\"MJT\":{\"Timezone\":\"Europe/Athens\"},\"MJV\":{\"Timezone\":\"Europe/Madrid\"},\"MJZ\":{\"Timezone\":\"Asia/Yakutsk\"},\"MKC\":{\"Timezone\":\"America/Chicago\"},\"MKE\":{\"Timezone\":\"America/Chicago\"},\"MKG\":{\"Timezone\":\"America/New_York\"},\"MKK\":{\"Timezone\":\"Pacific/Honolulu\"},\"MKL\":{\"Timezone\":\"America/Chicago\"},\"MKM\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"MKP\":{\"Timezone\":\"Pacific/Tahiti\"},\"MKQ\":{\"Timezone\":\"Asia/Jayapura\"},\"MKR\":{\"Timezone\":\"Australia/Perth\"},\"MKS\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"MKU\":{\"Timezone\":\"Africa/Libreville\"},\"MKW\":{\"Timezone\":\"Asia/Jayapura\"},\"MKY\":{\"Timezone\":\"Australia/Brisbane\"},\"MKZ\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"MLA\":{\"Timezone\":\"Europe/Malta\"},\"MLB\":{\"Timezone\":\"America/New_York\"},\"MLC\":{\"Timezone\":\"America/Chicago\"},\"MLE\":{\"Timezone\":\"Indian/Maldives\"},\"MLG\":{\"Timezone\":\"Asia/Jakarta\"},\"MLI\":{\"Timezone\":\"America/Chicago\"},\"MLL\":{\"Timezone\":\"America/Anchorage\"},\"MLM\":{\"Timezone\":\"America/Mexico_City\"},\"MLN\":{\"Timezone\":\"Europe/Madrid\"},\"MLO\":{\"Timezone\":\"Europe/Athens\"},\"MLS\":{\"Timezone\":\"America/Denver\"},\"MLU\":{\"Timezone\":\"America/Chicago\"},\"MLW\":{\"Timezone\":\"Africa/Monrovia\"},\"MLX\":{\"Timezone\":\"Europe/Istanbul\"},\"MLY\":{\"Timezone\":\"America/Anchorage\"},\"MLZ\":{\"Timezone\":null},\"MMB\":{\"Timezone\":\"Asia/Tokyo\"},\"MMD\":{\"Timezone\":\"Asia/Tokyo\"},\"MME\":{\"Timezone\":\"Europe/London\"},\"MMG\":{\"Timezone\":\"Australia/Perth\"},\"MMH\":{\"Timezone\":\"America/Los_Angeles\"},\"MMI\":{\"Timezone\":\"America/New_York\"},\"MMJ\":{\"Timezone\":\"Asia/Tokyo\"},\"MMK\":{\"Timezone\":\"Europe/Moscow\"},\"MMO\":{\"Timezone\":\"Atlantic/Cape_Verde\"},\"MMT\":{\"Timezone\":null},\"MMU\":{\"Timezone\":\"America/New_York\"},\"MMX\":{\"Timezone\":\"Europe/Stockholm\"},\"MMY\":{\"Timezone\":\"Asia/Tokyo\"},\"MMZ\":{\"Timezone\":\"Asia/Kabul\"},\"MNA\":{\"Timezone\":null},\"MNB\":{\"Timezone\":\"Africa/Kinshasa\"},\"MNC\":{\"Timezone\":\"Africa/Maputo\"},\"MNF\":{\"Timezone\":\"Pacific/Fiji\"},\"MNG\":{\"Timezone\":\"Australia/Darwin\"},\"MNI\":{\"Timezone\":\"America/Montserrat\"},\"MNJ\":{\"Timezone\":\"Indian/Antananarivo\"},\"MNK\":{\"Timezone\":\"Pacific/Tarawa\"},\"MNL\":{\"Timezone\":\"Asia/Manila\"},\"MNM\":{\"Timezone\":\"America/Chicago\"},\"MNR\":{\"Timezone\":\"Africa/Lusaka\"},\"MNS\":{\"Timezone\":null},\"MNU\":{\"Timezone\":\"Asia/Rangoon\"},\"MNX\":{\"Timezone\":\"America/Boa_Vista\"},\"MNY\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"MNZ\":{\"Timezone\":\"America/New_York\"},\"MOA\":{\"Timezone\":\"America/Havana\"},\"MOB\":{\"Timezone\":\"America/Chicago\"},\"MOC\":{\"Timezone\":\"America/Sao_Paulo\"},\"MOD\":{\"Timezone\":\"America/Los_Angeles\"},\"MOE\":{\"Timezone\":\"Asia/Rangoon\"},\"MOF\":{\"Timezone\":\"Asia/Makassar\"},\"MOG\":{\"Timezone\":\"Asia/Rangoon\"},\"MOI\":{\"Timezone\":\"Pacific/Rarotonga\"},\"MOJ\":{\"Timezone\":\"America/Paramaribo\"},\"MOL\":{\"Timezone\":\"Europe/Oslo\"},\"MON\":{\"Timezone\":\"Pacific/Auckland\"},\"MOO\":{\"Timezone\":\"Australia/Adelaide\"},\"MOQ\":{\"Timezone\":\"Indian/Antananarivo\"},\"MOT\":{\"Timezone\":\"America/Chicago\"},\"MOU\":{\"Timezone\":\"America/Anchorage\"},\"MOV\":{\"Timezone\":\"Australia/Brisbane\"},\"MOZ\":{\"Timezone\":\"Pacific/Tahiti\"},\"MPA\":{\"Timezone\":\"Africa/Windhoek\"},\"MPH\":{\"Timezone\":\"Asia/Manila\"},\"MPK\":{\"Timezone\":\"Asia/Seoul\"},\"MPL\":{\"Timezone\":\"Europe/Paris\"},\"MPM\":{\"Timezone\":\"Africa/Maputo\"},\"MPN\":{\"Timezone\":\"Atlantic/Stanley\"},\"MPO\":{\"Timezone\":null},\"MPV\":{\"Timezone\":\"America/New_York\"},\"MPW\":{\"Timezone\":\"Europe/Kiev\"},\"MPY\":{\"Timezone\":\"America/Cayenne\"},\"MQC\":{\"Timezone\":\"America/Miquelon\"},\"MQF\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"MQH\":{\"Timezone\":\"America/Sao_Paulo\"},\"MQJ\":{\"Timezone\":\"Asia/Srednekolymsk\"},\"MQL\":{\"Timezone\":\"Australia/Hobart\"},\"MQM\":{\"Timezone\":\"Europe/Istanbul\"},\"MQN\":{\"Timezone\":\"Europe/Oslo\"},\"MQP\":{\"Timezone\":\"Africa/Johannesburg\"},\"MQQ\":{\"Timezone\":\"Africa/Ndjamena\"},\"MQS\":{\"Timezone\":\"America/St_Vincent\"},\"MQT\":{\"Timezone\":\"America/New_York\"},\"MQU\":{\"Timezone\":\"America/Bogota\"},\"MQX\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"MQY\":{\"Timezone\":\"America/Chicago\"},\"MRB\":{\"Timezone\":\"America/New_York\"},\"MRD\":{\"Timezone\":\"America/Caracas\"},\"MRE\":{\"Timezone\":\"Africa/Nairobi\"},\"MRF\":{\"Timezone\":null},\"MRG\":{\"Timezone\":null},\"MRI\":{\"Timezone\":\"America/Anchorage\"},\"MRK\":{\"Timezone\":\"America/New_York\"},\"MRN\":{\"Timezone\":\"America/New_York\"},\"MRO\":{\"Timezone\":\"Pacific/Auckland\"},\"MRQ\":{\"Timezone\":\"Asia/Manila\"},\"MRR\":{\"Timezone\":\"America/Guayaquil\"},\"MRS\":{\"Timezone\":\"Europe/Paris\"},\"MRU\":{\"Timezone\":\"Indian/Mauritius\"},\"MRV\":{\"Timezone\":\"Europe/Moscow\"},\"MRW\":{\"Timezone\":\"Europe/Copenhagen\"},\"MRX\":{\"Timezone\":\"Asia/Tehran\"},\"MRY\":{\"Timezone\":\"America/Los_Angeles\"},\"MRZ\":{\"Timezone\":\"Australia/Sydney\"},\"MSA\":{\"Timezone\":\"America/Winnipeg\"},\"MSC\":{\"Timezone\":\"America/Phoenix\"},\"MSE\":{\"Timezone\":\"Europe/London\"},\"MSH\":{\"Timezone\":\"Asia/Muscat\"},\"MSJ\":{\"Timezone\":\"Asia/Tokyo\"},\"MSL\":{\"Timezone\":\"America/Chicago\"},\"MSN\":{\"Timezone\":\"America/Chicago\"},\"MSO\":{\"Timezone\":\"America/Denver\"},\"MSP\":{\"Timezone\":\"America/Chicago\"},\"MSQ\":{\"Timezone\":\"Europe/Minsk\"},\"MSR\":{\"Timezone\":\"Europe/Istanbul\"},\"MSS\":{\"Timezone\":\"America/New_York\"},\"MST\":{\"Timezone\":\"Europe/Amsterdam\"},\"MSU\":{\"Timezone\":\"Africa/Maseru\"},\"MSW\":{\"Timezone\":\"Africa/Asmera\"},\"MSY\":{\"Timezone\":\"America/Chicago\"},\"MSZ\":{\"Timezone\":\"Africa/Luanda\"},\"MTC\":{\"Timezone\":\"America/New_York\"},\"MTF\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"MTG\":{\"Timezone\":null},\"MTH\":{\"Timezone\":\"America/New_York\"},\"MTJ\":{\"Timezone\":\"America/Denver\"},\"MTK\":{\"Timezone\":\"Pacific/Tarawa\"},\"MTL\":{\"Timezone\":\"Australia/Sydney\"},\"MTM\":{\"Timezone\":\"America/Anchorage\"},\"MTN\":{\"Timezone\":\"America/New_York\"},\"MTP\":{\"Timezone\":null},\"MTR\":{\"Timezone\":\"America/Bogota\"},\"MTS\":{\"Timezone\":\"Africa/Mbabane\"},\"MTT\":{\"Timezone\":\"America/Mexico_City\"},\"MTV\":{\"Timezone\":\"Pacific/Efate\"},\"MTY\":{\"Timezone\":\"America/Mexico_City\"},\"MTZ\":{\"Timezone\":\"Asia/Jerusalem\"},\"MUA\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"MUB\":{\"Timezone\":\"Africa/Gaborone\"},\"MUC\":{\"Timezone\":\"Europe/Berlin\"},\"MUD\":{\"Timezone\":\"Africa/Maputo\"},\"MUE\":{\"Timezone\":\"Pacific/Honolulu\"},\"MUH\":{\"Timezone\":\"Africa/Cairo\"},\"MUI\":{\"Timezone\":\"America/New_York\"},\"MUK\":{\"Timezone\":\"Pacific/Rarotonga\"},\"MUN\":{\"Timezone\":\"America/Caracas\"},\"MUO\":{\"Timezone\":\"America/Denver\"},\"MUR\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"MUS\":{\"Timezone\":\"Asia/Tokyo\"},\"MUW\":{\"Timezone\":\"Africa/Algiers\"},\"MUX\":{\"Timezone\":\"Asia/Karachi\"},\"MUZ\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"MVA\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"MVB\":{\"Timezone\":\"Africa/Libreville\"},\"MVD\":{\"Timezone\":\"America/Montevideo\"},\"MVF\":{\"Timezone\":\"America/Fortaleza\"},\"MVL\":{\"Timezone\":\"America/New_York\"},\"MVP\":{\"Timezone\":\"America/Bogota\"},\"MVQ\":{\"Timezone\":\"Europe/Minsk\"},\"MVR\":{\"Timezone\":\"Africa/Douala\"},\"MVS\":{\"Timezone\":\"America/Fortaleza\"},\"MVT\":{\"Timezone\":\"Pacific/Tahiti\"},\"MVV\":{\"Timezone\":\"Europe/Paris\"},\"MVW\":{\"Timezone\":null},\"MVY\":{\"Timezone\":\"America/New_York\"},\"MVZ\":{\"Timezone\":\"Africa/Harare\"},\"MWA\":{\"Timezone\":\"America/Chicago\"},\"MWC\":{\"Timezone\":\"America/Chicago\"},\"MWD\":{\"Timezone\":\"Asia/Karachi\"},\"MWE\":{\"Timezone\":null},\"MWF\":{\"Timezone\":\"Pacific/Efate\"},\"MWH\":{\"Timezone\":\"America/Los_Angeles\"},\"MWK\":{\"Timezone\":\"Asia/Jakarta\"},\"MWL\":{\"Timezone\":\"America/Chicago\"},\"MWQ\":{\"Timezone\":\"Asia/Rangoon\"},\"MWX\":{\"Timezone\":\"Asia/Seoul\"},\"MWZ\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"MXB\":{\"Timezone\":\"Asia/Makassar\"},\"MXF\":{\"Timezone\":\"America/Chicago\"},\"MXH\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"MXI\":{\"Timezone\":null},\"MXJ\":{\"Timezone\":\"Africa/Lagos\"},\"MXL\":{\"Timezone\":\"America/Tijuana\"},\"MXM\":{\"Timezone\":\"Indian/Antananarivo\"},\"MXN\":{\"Timezone\":\"Europe/Paris\"},\"MXP\":{\"Timezone\":\"Europe/Rome\"},\"MXS\":{\"Timezone\":\"Pacific/Apia\"},\"MXT\":{\"Timezone\":\"Indian/Antananarivo\"},\"MXV\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"MXX\":{\"Timezone\":\"Europe/Stockholm\"},\"MXZ\":{\"Timezone\":\"Asia/Shanghai\"},\"MYA\":{\"Timezone\":\"Australia/Sydney\"},\"MYB\":{\"Timezone\":\"Africa/Libreville\"},\"MYC\":{\"Timezone\":\"America/Caracas\"},\"MYD\":{\"Timezone\":\"Africa/Nairobi\"},\"MYE\":{\"Timezone\":\"Asia/Tokyo\"},\"MYG\":{\"Timezone\":\"America/Nassau\"},\"MYI\":{\"Timezone\":\"Australia/Brisbane\"},\"MYJ\":{\"Timezone\":\"Asia/Tokyo\"},\"MYL\":{\"Timezone\":\"America/Denver\"},\"MYP\":{\"Timezone\":\"Asia/Ashgabat\"},\"MYQ\":{\"Timezone\":\"Asia/Calcutta\"},\"MYR\":{\"Timezone\":\"America/New_York\"},\"MYT\":{\"Timezone\":\"Asia/Rangoon\"},\"MYU\":{\"Timezone\":\"America/Anchorage\"},\"MYV\":{\"Timezone\":\"America/Los_Angeles\"},\"MYW\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"MYY\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"MYZ\":{\"Timezone\":null},\"MZB\":{\"Timezone\":\"Africa/Maputo\"},\"MZG\":{\"Timezone\":\"Asia/Taipei\"},\"MZH\":{\"Timezone\":\"Europe/Istanbul\"},\"MZI\":{\"Timezone\":\"Africa/Bamako\"},\"MZJ\":{\"Timezone\":\"America/Phoenix\"},\"MZK\":{\"Timezone\":\"Pacific/Tarawa\"},\"MZL\":{\"Timezone\":\"America/Bogota\"},\"MZM\":{\"Timezone\":\"Europe/Paris\"},\"MZO\":{\"Timezone\":\"America/Havana\"},\"MZP\":{\"Timezone\":\"Pacific/Auckland\"},\"MZQ\":{\"Timezone\":\"Africa/Johannesburg\"},\"MZR\":{\"Timezone\":\"Asia/Kabul\"},\"MZT\":{\"Timezone\":\"America/Mazatlan\"},\"MZU\":{\"Timezone\":\"Asia/Calcutta\"},\"MZV\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"MZW\":{\"Timezone\":\"Africa/Algiers\"},\"NAA\":{\"Timezone\":\"Australia/Sydney\"},\"NAC\":{\"Timezone\":null},\"NAG\":{\"Timezone\":\"Asia/Calcutta\"},\"NAH\":{\"Timezone\":\"Asia/Makassar\"},\"NAI\":{\"Timezone\":\"America/Guyana\"},\"NAJ\":{\"Timezone\":\"Asia/Baku\"},\"NAK\":{\"Timezone\":\"Asia/Bangkok\"},\"NAL\":{\"Timezone\":\"Europe/Moscow\"},\"NAM\":{\"Timezone\":null},\"NAN\":{\"Timezone\":\"Pacific/Fiji\"},\"NAO\":{\"Timezone\":\"Asia/Shanghai\"},\"NAP\":{\"Timezone\":\"Europe/Rome\"},\"NAQ\":{\"Timezone\":\"America/Thule\"},\"NAS\":{\"Timezone\":\"America/Nassau\"},\"NAT\":{\"Timezone\":\"America/Fortaleza\"},\"NAU\":{\"Timezone\":null},\"NAV\":{\"Timezone\":\"Europe/Istanbul\"},\"NAW\":{\"Timezone\":\"Asia/Bangkok\"},\"NAY\":{\"Timezone\":\"Asia/Shanghai\"},\"NBC\":{\"Timezone\":\"Europe/Moscow\"},\"NBE\":{\"Timezone\":\"Africa/Tunis\"},\"NBG\":{\"Timezone\":\"America/Chicago\"},\"NBN\":{\"Timezone\":null},\"NBO\":{\"Timezone\":\"Africa/Nairobi\"},\"NBS\":{\"Timezone\":\"Asia/Shanghai\"},\"NBW\":{\"Timezone\":null},\"NBX\":{\"Timezone\":\"Asia/Jayapura\"},\"NCA\":{\"Timezone\":\"America/Grand_Turk\"},\"NCE\":{\"Timezone\":\"Europe/Paris\"},\"NCG\":{\"Timezone\":\"America/Mazatlan\"},\"NCJ\":{\"Timezone\":null},\"NCL\":{\"Timezone\":\"Europe/London\"},\"NCN\":{\"Timezone\":\"America/Anchorage\"},\"NCO\":{\"Timezone\":\"America/New_York\"},\"NCR\":{\"Timezone\":\"America/Managua\"},\"NCS\":{\"Timezone\":\"Africa/Johannesburg\"},\"NCU\":{\"Timezone\":\"Asia/Samarkand\"},\"NCY\":{\"Timezone\":\"Europe/Paris\"},\"NDB\":{\"Timezone\":\"Africa/Nouakchott\"},\"NDC\":{\"Timezone\":\"Asia/Calcutta\"},\"NDD\":{\"Timezone\":null},\"NDG\":{\"Timezone\":\"Asia/Shanghai\"},\"NDJ\":{\"Timezone\":\"Africa/Ndjamena\"},\"NDN\":{\"Timezone\":null},\"NDR\":{\"Timezone\":\"Africa/Casablanca\"},\"NDU\":{\"Timezone\":\"Africa/Windhoek\"},\"NDY\":{\"Timezone\":\"Europe/London\"},\"NEC\":{\"Timezone\":\"America/Buenos_Aires\"},\"NEG\":{\"Timezone\":\"America/Jamaica\"},\"NEL\":{\"Timezone\":\"America/New_York\"},\"NER\":{\"Timezone\":\"Asia/Yakutsk\"},\"NEU\":{\"Timezone\":\"Asia/Vientiane\"},\"NEV\":{\"Timezone\":\"America/St_Kitts\"},\"NEW\":{\"Timezone\":\"America/Chicago\"},\"NFG\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"NFL\":{\"Timezone\":\"America/Los_Angeles\"},\"NFO\":{\"Timezone\":\"Pacific/Tongatapu\"},\"NGA\":{\"Timezone\":null},\"NGB\":{\"Timezone\":\"Asia/Shanghai\"},\"NGD\":{\"Timezone\":null},\"NGE\":{\"Timezone\":\"Africa/Douala\"},\"NGF\":{\"Timezone\":\"Pacific/Honolulu\"},\"NGI\":{\"Timezone\":\"Pacific/Fiji\"},\"NGK\":{\"Timezone\":null},\"NGO\":{\"Timezone\":\"Asia/Tokyo\"},\"NGQ\":{\"Timezone\":\"Asia/Shanghai\"},\"NGS\":{\"Timezone\":\"Asia/Tokyo\"},\"NGU\":{\"Timezone\":\"America/New_York\"},\"NGX\":{\"Timezone\":\"Asia/Katmandu\"},\"NGZ\":{\"Timezone\":\"America/Los_Angeles\"},\"NHA\":{\"Timezone\":\"Asia/Saigon\"},\"NHD\":{\"Timezone\":\"Asia/Dubai\"},\"NHK\":{\"Timezone\":\"America/New_York\"},\"NHT\":{\"Timezone\":\"Europe/London\"},\"NHV\":{\"Timezone\":\"Pacific/Marquesas\"},\"NHZ\":{\"Timezone\":null},\"NIB\":{\"Timezone\":\"America/Anchorage\"},\"NIG\":{\"Timezone\":\"Pacific/Tarawa\"},\"NIM\":{\"Timezone\":\"Africa/Niamey\"},\"NIO\":{\"Timezone\":\"Africa/Kinshasa\"},\"NIP\":{\"Timezone\":\"America/New_York\"},\"NIS\":{\"Timezone\":null},\"NIT\":{\"Timezone\":\"Europe/Paris\"},\"NIU\":{\"Timezone\":\"Pacific/Tahiti\"},\"NJA\":{\"Timezone\":\"Asia/Tokyo\"},\"NJC\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"NJF\":{\"Timezone\":\"Asia/Baghdad\"},\"NJK\":{\"Timezone\":\"America/Los_Angeles\"},\"NKB\":{\"Timezone\":null},\"NKC\":{\"Timezone\":\"Africa/Nouakchott\"},\"NKG\":{\"Timezone\":\"Asia/Shanghai\"},\"NKM\":{\"Timezone\":\"Asia/Tokyo\"},\"NKT\":{\"Timezone\":\"Europe/Istanbul\"},\"NKW\":{\"Timezone\":\"Indian/Chagos\"},\"NKX\":{\"Timezone\":\"America/Los_Angeles\"},\"NLA\":{\"Timezone\":\"Africa/Lusaka\"},\"NLC\":{\"Timezone\":\"America/Los_Angeles\"},\"NLD\":{\"Timezone\":\"America/Mexico_City\"},\"NLF\":{\"Timezone\":\"Australia/Brisbane\"},\"NLG\":{\"Timezone\":\"America/Anchorage\"},\"NLH\":{\"Timezone\":null},\"NLI\":{\"Timezone\":null},\"NLK\":{\"Timezone\":\"Pacific/Norfolk\"},\"NLO\":{\"Timezone\":\"Africa/Kinshasa\"},\"NLP\":{\"Timezone\":\"Africa/Johannesburg\"},\"NLT\":{\"Timezone\":\"Asia/Shanghai\"},\"NLV\":{\"Timezone\":\"Europe/Kiev\"},\"NMA\":{\"Timezone\":\"Asia/Samarkand\"},\"NMB\":{\"Timezone\":\"Asia/Calcutta\"},\"NMC\":{\"Timezone\":\"America/Nassau\"},\"NME\":{\"Timezone\":\"America/Anchorage\"},\"NMS\":{\"Timezone\":\"Asia/Rangoon\"},\"NMT\":{\"Timezone\":\"Asia/Rangoon\"},\"NNA\":{\"Timezone\":\"Africa/Casablanca\"},\"NNB\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"NNG\":{\"Timezone\":\"Asia/Shanghai\"},\"NNL\":{\"Timezone\":\"America/Anchorage\"},\"NNM\":{\"Timezone\":\"Europe/Moscow\"},\"NNR\":{\"Timezone\":\"Europe/Dublin\"},\"NNT\":{\"Timezone\":\"Asia/Bangkok\"},\"NNX\":{\"Timezone\":\"Asia/Makassar\"},\"NNY\":{\"Timezone\":\"Asia/Shanghai\"},\"NOA\":{\"Timezone\":\"Australia/Sydney\"},\"NOB\":{\"Timezone\":\"America/Costa_Rica\"},\"NOC\":{\"Timezone\":\"Europe/Dublin\"},\"NOD\":{\"Timezone\":\"Europe/Berlin\"},\"NOG\":{\"Timezone\":\"America/Hermosillo\"},\"NOJ\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"NON\":{\"Timezone\":\"Pacific/Tarawa\"},\"NOP\":{\"Timezone\":\"Europe/Istanbul\"},\"NOR\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"NOS\":{\"Timezone\":\"Indian/Antananarivo\"},\"NOT\":{\"Timezone\":\"America/Los_Angeles\"},\"NOU\":{\"Timezone\":\"Pacific/Noumea\"},\"NOV\":{\"Timezone\":\"Africa/Luanda\"},\"NOZ\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"NPA\":{\"Timezone\":\"America/Chicago\"},\"NPE\":{\"Timezone\":\"Pacific/Auckland\"},\"NPL\":{\"Timezone\":\"Pacific/Auckland\"},\"NPO\":{\"Timezone\":\"Asia/Jakarta\"},\"NPR\":{\"Timezone\":null},\"NQA\":{\"Timezone\":\"America/Chicago\"},\"NQI\":{\"Timezone\":\"America/Chicago\"},\"NQN\":{\"Timezone\":\"America/Argentina/Salta\"},\"NQT\":{\"Timezone\":\"Europe/London\"},\"NQU\":{\"Timezone\":\"America/Bogota\"},\"NQX\":{\"Timezone\":\"America/New_York\"},\"NQY\":{\"Timezone\":\"Europe/London\"},\"NRA\":{\"Timezone\":\"Australia/Sydney\"},\"NRB\":{\"Timezone\":null},\"NRD\":{\"Timezone\":\"Europe/Berlin\"},\"NRE\":{\"Timezone\":null},\"NRK\":{\"Timezone\":\"Europe/Stockholm\"},\"NRL\":{\"Timezone\":\"Europe/London\"},\"NRN\":{\"Timezone\":\"Europe/Berlin\"},\"NRR\":{\"Timezone\":\"America/Puerto_Rico\"},\"NRT\":{\"Timezone\":\"Asia/Tokyo\"},\"NSE\":{\"Timezone\":\"America/Chicago\"},\"NSH\":{\"Timezone\":\"Asia/Tehran\"},\"NSI\":{\"Timezone\":\"Africa/Douala\"},\"NSK\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"NSN\":{\"Timezone\":\"Pacific/Auckland\"},\"NSO\":{\"Timezone\":\"Australia/Sydney\"},\"NST\":{\"Timezone\":\"Asia/Bangkok\"},\"NSY\":{\"Timezone\":\"Europe/Rome\"},\"NTB\":{\"Timezone\":\"Europe/Oslo\"},\"NTD\":{\"Timezone\":\"America/Los_Angeles\"},\"NTE\":{\"Timezone\":\"Europe/Paris\"},\"NTI\":{\"Timezone\":\"Asia/Jayapura\"},\"NTL\":{\"Timezone\":\"Australia/Sydney\"},\"NTN\":{\"Timezone\":\"Australia/Brisbane\"},\"NTQ\":{\"Timezone\":\"Asia/Tokyo\"},\"NTR\":{\"Timezone\":\"America/Mexico_City\"},\"NTT\":{\"Timezone\":\"Pacific/Tongatapu\"},\"NTU\":{\"Timezone\":\"America/New_York\"},\"NTX\":{\"Timezone\":\"Asia/Jakarta\"},\"NTY\":{\"Timezone\":\"Africa/Johannesburg\"},\"NUE\":{\"Timezone\":\"Europe/Berlin\"},\"NUI\":{\"Timezone\":\"America/Anchorage\"},\"NUK\":{\"Timezone\":null},\"NUL\":{\"Timezone\":\"America/Anchorage\"},\"NUQ\":{\"Timezone\":\"America/Los_Angeles\"},\"NUS\":{\"Timezone\":\"Pacific/Efate\"},\"NUW\":{\"Timezone\":\"America/Los_Angeles\"},\"NUX\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"NVA\":{\"Timezone\":\"America/Bogota\"},\"NVI\":{\"Timezone\":\"Asia/Samarkand\"},\"NVK\":{\"Timezone\":\"Europe/Oslo\"},\"NVP\":{\"Timezone\":\"America/Boa_Vista\"},\"NVS\":{\"Timezone\":\"Europe/Paris\"},\"NVT\":{\"Timezone\":\"America/Sao_Paulo\"},\"NWA\":{\"Timezone\":\"Indian/Comoro\"},\"NWI\":{\"Timezone\":\"Europe/London\"},\"NXX\":{\"Timezone\":\"America/New_York\"},\"NYA\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"NYE\":{\"Timezone\":\"Africa/Nairobi\"},\"NYI\":{\"Timezone\":\"Africa/Accra\"},\"NYK\":{\"Timezone\":\"Africa/Nairobi\"},\"NYM\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"NYO\":{\"Timezone\":\"Europe/Stockholm\"},\"NYR\":{\"Timezone\":null},\"NYT\":{\"Timezone\":\"Asia/Rangoon\"},\"NYU\":{\"Timezone\":\"Asia/Rangoon\"},\"NYW\":{\"Timezone\":\"Asia/Rangoon\"},\"NZA\":{\"Timezone\":\"Africa/Luanda\"},\"NZC\":{\"Timezone\":\"America/Lima\"},\"NZE\":{\"Timezone\":null},\"NZH\":{\"Timezone\":\"Asia/Shanghai\"},\"NZJ\":{\"Timezone\":\"America/Los_Angeles\"},\"NZL\":{\"Timezone\":null},\"NZY\":{\"Timezone\":\"America/Los_Angeles\"},\"OAA\":{\"Timezone\":\"Asia/Kabul\"},\"OAG\":{\"Timezone\":\"Australia/Sydney\"},\"OAH\":{\"Timezone\":\"Asia/Kabul\"},\"OAI\":{\"Timezone\":\"Asia/Kabul\"},\"OAJ\":{\"Timezone\":\"America/New_York\"},\"OAK\":{\"Timezone\":\"America/Los_Angeles\"},\"OAL\":{\"Timezone\":\"America/Boa_Vista\"},\"OAM\":{\"Timezone\":\"Pacific/Auckland\"},\"OAR\":{\"Timezone\":\"America/Los_Angeles\"},\"OAS\":{\"Timezone\":\"Asia/Kabul\"},\"OAX\":{\"Timezone\":\"America/Mexico_City\"},\"OAZ\":{\"Timezone\":\"Asia/Kabul\"},\"OBC\":{\"Timezone\":\"Africa/Djibouti\"},\"OBE\":{\"Timezone\":\"America/New_York\"},\"OBF\":{\"Timezone\":\"Europe/Berlin\"},\"OBL\":{\"Timezone\":\"Europe/Brussels\"},\"OBN\":{\"Timezone\":\"Europe/London\"},\"OBO\":{\"Timezone\":\"Asia/Tokyo\"},\"OBS\":{\"Timezone\":\"Europe/Paris\"},\"OBU\":{\"Timezone\":\"America/Anchorage\"},\"OBY\":{\"Timezone\":\"America/Scoresbysund\"},\"OCA\":{\"Timezone\":\"America/New_York\"},\"OCC\":{\"Timezone\":\"America/Guayaquil\"},\"OCF\":{\"Timezone\":\"America/New_York\"},\"OCJ\":{\"Timezone\":\"America/Jamaica\"},\"OCM\":{\"Timezone\":null},\"OCN\":{\"Timezone\":\"America/Los_Angeles\"},\"OCV\":{\"Timezone\":\"America/Bogota\"},\"OCW\":{\"Timezone\":\"America/New_York\"},\"ODB\":{\"Timezone\":\"Europe/Madrid\"},\"ODE\":{\"Timezone\":\"Europe/Copenhagen\"},\"ODH\":{\"Timezone\":\"Europe/London\"},\"ODN\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"ODO\":{\"Timezone\":\"Asia/Irkutsk\"},\"ODS\":{\"Timezone\":\"Europe/Kiev\"},\"ODY\":{\"Timezone\":\"Asia/Vientiane\"},\"OEL\":{\"Timezone\":null},\"OEM\":{\"Timezone\":\"America/Paramaribo\"},\"OER\":{\"Timezone\":\"Europe/Stockholm\"},\"OES\":{\"Timezone\":\"America/Argentina/Salta\"},\"OFF\":{\"Timezone\":\"America/Chicago\"},\"OFK\":{\"Timezone\":null},\"OGB\":{\"Timezone\":null},\"OGD\":{\"Timezone\":\"America/Denver\"},\"OGG\":{\"Timezone\":\"Pacific/Honolulu\"},\"OGL\":{\"Timezone\":\"America/Guyana\"},\"OGN\":{\"Timezone\":\"Asia/Tokyo\"},\"OGS\":{\"Timezone\":\"America/New_York\"},\"OGU\":{\"Timezone\":null},\"OGX\":{\"Timezone\":\"Africa/Algiers\"},\"OGZ\":{\"Timezone\":\"Europe/Moscow\"},\"OHA\":{\"Timezone\":\"Pacific/Auckland\"},\"OHD\":{\"Timezone\":\"Europe/Skopje\"},\"OHE\":{\"Timezone\":\"Asia/Shanghai\"},\"OHO\":{\"Timezone\":\"Asia/Vladivostok\"},\"OHS\":{\"Timezone\":null},\"OIA\":{\"Timezone\":\"America/Belem\"},\"OIM\":{\"Timezone\":\"Asia/Tokyo\"},\"OIR\":{\"Timezone\":\"Asia/Tokyo\"},\"OIT\":{\"Timezone\":\"Asia/Tokyo\"},\"OJC\":{\"Timezone\":\"America/Chicago\"},\"OKA\":{\"Timezone\":\"Asia/Tokyo\"},\"OKC\":{\"Timezone\":\"America/Chicago\"},\"OKD\":{\"Timezone\":\"Asia/Tokyo\"},\"OKE\":{\"Timezone\":\"Asia/Tokyo\"},\"OKF\":{\"Timezone\":\"Africa/Windhoek\"},\"OKI\":{\"Timezone\":\"Asia/Tokyo\"},\"OKJ\":{\"Timezone\":\"Asia/Tokyo\"},\"OKK\":{\"Timezone\":null},\"OKL\":{\"Timezone\":null},\"OKM\":{\"Timezone\":\"America/Chicago\"},\"OKN\":{\"Timezone\":\"Africa/Libreville\"},\"OKO\":{\"Timezone\":\"Asia/Tokyo\"},\"OKR\":{\"Timezone\":\"Australia/Brisbane\"},\"OKU\":{\"Timezone\":\"Africa/Windhoek\"},\"OKY\":{\"Timezone\":\"Australia/Brisbane\"},\"OLA\":{\"Timezone\":\"Europe/Oslo\"},\"OLB\":{\"Timezone\":\"Europe/Rome\"},\"OLC\":{\"Timezone\":\"America/Boa_Vista\"},\"OLF\":{\"Timezone\":\"America/Denver\"},\"OLJ\":{\"Timezone\":\"Pacific/Efate\"},\"OLL\":{\"Timezone\":null},\"OLM\":{\"Timezone\":\"America/Los_Angeles\"},\"OLP\":{\"Timezone\":\"Australia/Adelaide\"},\"OLS\":{\"Timezone\":\"America/Phoenix\"},\"OLV\":{\"Timezone\":\"America/Chicago\"},\"OLZ\":{\"Timezone\":\"Asia/Yakutsk\"},\"OMA\":{\"Timezone\":\"America/Chicago\"},\"OMB\":{\"Timezone\":\"Africa/Libreville\"},\"OMC\":{\"Timezone\":\"Asia/Manila\"},\"OMD\":{\"Timezone\":\"Africa/Windhoek\"},\"OME\":{\"Timezone\":\"America/Anchorage\"},\"OMF\":{\"Timezone\":\"Asia/Amman\"},\"OMH\":{\"Timezone\":\"Asia/Tehran\"},\"OMI\":{\"Timezone\":\"Asia/Tehran\"},\"OMO\":{\"Timezone\":\"Europe/Sarajevo\"},\"OMR\":{\"Timezone\":\"Europe/Bucharest\"},\"OMS\":{\"Timezone\":\"Asia/Omsk\"},\"OND\":{\"Timezone\":\"Africa/Windhoek\"},\"ONG\":{\"Timezone\":\"Australia/Brisbane\"},\"ONJ\":{\"Timezone\":\"Asia/Tokyo\"},\"ONK\":{\"Timezone\":\"Asia/Yakutsk\"},\"ONO\":{\"Timezone\":\"America/Denver\"},\"ONP\":{\"Timezone\":\"America/Los_Angeles\"},\"ONQ\":{\"Timezone\":\"Europe/Istanbul\"},\"ONS\":{\"Timezone\":\"Australia/Perth\"},\"ONT\":{\"Timezone\":\"America/Los_Angeles\"},\"ONX\":{\"Timezone\":\"America/Panama\"},\"OOK\":{\"Timezone\":\"America/Anchorage\"},\"OOL\":{\"Timezone\":\"Australia/Brisbane\"},\"OOM\":{\"Timezone\":\"Australia/Sydney\"},\"OPF\":{\"Timezone\":\"America/New_York\"},\"OPO\":{\"Timezone\":\"Europe/Lisbon\"},\"OPS\":{\"Timezone\":\"America/Campo_Grande\"},\"OPU\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"ORA\":{\"Timezone\":\"America/Argentina/Salta\"},\"ORB\":{\"Timezone\":\"Europe/Stockholm\"},\"ORD\":{\"Timezone\":\"America/Chicago\"},\"ORE\":{\"Timezone\":\"Europe/Paris\"},\"ORF\":{\"Timezone\":\"America/New_York\"},\"ORG\":{\"Timezone\":\"America/Paramaribo\"},\"ORH\":{\"Timezone\":\"America/New_York\"},\"ORJ\":{\"Timezone\":\"America/Guyana\"},\"ORK\":{\"Timezone\":\"Europe/Dublin\"},\"ORL\":{\"Timezone\":\"America/New_York\"},\"ORN\":{\"Timezone\":\"Africa/Algiers\"},\"ORP\":{\"Timezone\":\"Africa/Gaborone\"},\"ORT\":{\"Timezone\":\"America/Anchorage\"},\"ORU\":{\"Timezone\":\"America/La_Paz\"},\"ORV\":{\"Timezone\":\"America/Anchorage\"},\"ORW\":{\"Timezone\":\"Asia/Karachi\"},\"ORX\":{\"Timezone\":\"America/Belem\"},\"ORY\":{\"Timezone\":\"Europe/Paris\"},\"OSC\":{\"Timezone\":\"America/New_York\"},\"OSD\":{\"Timezone\":\"Europe/Stockholm\"},\"OSF\":{\"Timezone\":\"Europe/Moscow\"},\"OSH\":{\"Timezone\":\"America/Chicago\"},\"OSI\":{\"Timezone\":\"Europe/Zagreb\"},\"OSK\":{\"Timezone\":\"Europe/Stockholm\"},\"OSL\":{\"Timezone\":\"Europe/Oslo\"},\"OSM\":{\"Timezone\":\"Asia/Baghdad\"},\"OSN\":{\"Timezone\":\"Asia/Seoul\"},\"OSP\":{\"Timezone\":\"Europe/Warsaw\"},\"OSR\":{\"Timezone\":\"Europe/Prague\"},\"OSS\":{\"Timezone\":\"Asia/Bishkek\"},\"OST\":{\"Timezone\":\"Europe/Brussels\"},\"OSU\":{\"Timezone\":\"America/New_York\"},\"OSW\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"OSY\":{\"Timezone\":\"Europe/Oslo\"},\"OTH\":{\"Timezone\":\"America/Los_Angeles\"},\"OTI\":{\"Timezone\":\"Asia/Jayapura\"},\"OTJ\":{\"Timezone\":null},\"OTK\":{\"Timezone\":\"America/Los_Angeles\"},\"OTM\":{\"Timezone\":null},\"OTP\":{\"Timezone\":\"Europe/Bucharest\"},\"OTR\":{\"Timezone\":\"America/Costa_Rica\"},\"OTU\":{\"Timezone\":\"America/Bogota\"},\"OTZ\":{\"Timezone\":\"America/Anchorage\"},\"OUA\":{\"Timezone\":\"Africa/Ouagadougou\"},\"OUD\":{\"Timezone\":\"Africa/Casablanca\"},\"OUE\":{\"Timezone\":\"Africa/Brazzaville\"},\"OUH\":{\"Timezone\":\"Africa/Johannesburg\"},\"OUK\":{\"Timezone\":\"Europe/London\"},\"OUL\":{\"Timezone\":\"Europe/Helsinki\"},\"OUZ\":{\"Timezone\":\"Africa/Nouakchott\"},\"OVA\":{\"Timezone\":\"Indian/Antananarivo\"},\"OVB\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"OVD\":{\"Timezone\":\"Europe/Madrid\"},\"OVG\":{\"Timezone\":\"Africa/Johannesburg\"},\"OVR\":{\"Timezone\":\"America/Buenos_Aires\"},\"OVS\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"OWB\":{\"Timezone\":\"America/Chicago\"},\"OWD\":{\"Timezone\":\"America/New_York\"},\"OXB\":{\"Timezone\":\"Africa/Bissau\"},\"OXC\":{\"Timezone\":\"America/New_York\"},\"OXF\":{\"Timezone\":\"Europe/London\"},\"OXR\":{\"Timezone\":\"America/Los_Angeles\"},\"OYA\":{\"Timezone\":\"America/Cordoba\"},\"OYE\":{\"Timezone\":\"Africa/Libreville\"},\"OYK\":{\"Timezone\":\"America/Fortaleza\"},\"OYL\":{\"Timezone\":\"Africa/Nairobi\"},\"OYO\":{\"Timezone\":\"America/Buenos_Aires\"},\"OYP\":{\"Timezone\":\"America/Cayenne\"},\"OZA\":{\"Timezone\":\"America/Chicago\"},\"OZC\":{\"Timezone\":\"Asia/Manila\"},\"OZG\":{\"Timezone\":\"Africa/Casablanca\"},\"OZH\":{\"Timezone\":\"Europe/Kiev\"},\"OZP\":{\"Timezone\":\"Europe/Madrid\"},\"OZR\":{\"Timezone\":null},\"OZZ\":{\"Timezone\":\"Africa/Casablanca\"},\"PAA\":{\"Timezone\":\"Asia/Rangoon\"},\"PAB\":{\"Timezone\":\"Asia/Calcutta\"},\"PAC\":{\"Timezone\":\"America/Panama\"},\"PAD\":{\"Timezone\":\"Europe/Berlin\"},\"PAE\":{\"Timezone\":\"America/Los_Angeles\"},\"PAG\":{\"Timezone\":\"Asia/Manila\"},\"PAH\":{\"Timezone\":\"America/Chicago\"},\"PAJ\":{\"Timezone\":\"Asia/Karachi\"},\"PAL\":{\"Timezone\":null},\"PAM\":{\"Timezone\":\"America/Chicago\"},\"PAN\":{\"Timezone\":\"Asia/Bangkok\"},\"PAO\":{\"Timezone\":\"America/Los_Angeles\"},\"PAP\":{\"Timezone\":\"America/Port-au-Prince\"},\"PAQ\":{\"Timezone\":\"America/Anchorage\"},\"PAS\":{\"Timezone\":\"Europe/Athens\"},\"PAT\":{\"Timezone\":\"Asia/Calcutta\"},\"PAV\":{\"Timezone\":\"America/Fortaleza\"},\"PAX\":{\"Timezone\":\"America/Port-au-Prince\"},\"PAZ\":{\"Timezone\":\"America/Mexico_City\"},\"PBC\":{\"Timezone\":\"America/Mexico_City\"},\"PBD\":{\"Timezone\":\"Asia/Calcutta\"},\"PBF\":{\"Timezone\":\"America/Chicago\"},\"PBG\":{\"Timezone\":\"America/New_York\"},\"PBH\":{\"Timezone\":\"Asia/Thimphu\"},\"PBI\":{\"Timezone\":\"America/New_York\"},\"PBJ\":{\"Timezone\":\"Pacific/Efate\"},\"PBL\":{\"Timezone\":\"America/Caracas\"},\"PBM\":{\"Timezone\":\"America/Paramaribo\"},\"PBN\":{\"Timezone\":\"Africa/Luanda\"},\"PBO\":{\"Timezone\":\"Australia/Perth\"},\"PBP\":{\"Timezone\":\"America/Costa_Rica\"},\"PBQ\":{\"Timezone\":null},\"PBR\":{\"Timezone\":\"America/Guatemala\"},\"PBU\":{\"Timezone\":\"Asia/Rangoon\"},\"PBZ\":{\"Timezone\":\"Africa/Johannesburg\"},\"PCB\":{\"Timezone\":\"Asia/Jakarta\"},\"PCD\":{\"Timezone\":null},\"PCF\":{\"Timezone\":\"Africa/Johannesburg\"},\"PCL\":{\"Timezone\":\"America/Lima\"},\"PCN\":{\"Timezone\":\"Pacific/Auckland\"},\"PCP\":{\"Timezone\":\"Africa/Sao_Tome\"},\"PCQ\":{\"Timezone\":null},\"PCR\":{\"Timezone\":\"America/Bogota\"},\"PCS\":{\"Timezone\":null},\"PDA\":{\"Timezone\":\"America/Bogota\"},\"PDG\":{\"Timezone\":\"Asia/Jakarta\"},\"PDK\":{\"Timezone\":\"America/New_York\"},\"PDL\":{\"Timezone\":\"Atlantic/Azores\"},\"PDO\":{\"Timezone\":\"Asia/Jakarta\"},\"PDP\":{\"Timezone\":\"America/Montevideo\"},\"PDS\":{\"Timezone\":\"America/Mexico_City\"},\"PDT\":{\"Timezone\":\"America/Los_Angeles\"},\"PDU\":{\"Timezone\":null},\"PDV\":{\"Timezone\":\"Europe/Sofia\"},\"PDX\":{\"Timezone\":\"America/Los_Angeles\"},\"PEA\":{\"Timezone\":\"Australia/Adelaide\"},\"PED\":{\"Timezone\":\"Europe/Prague\"},\"PEE\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"PEF\":{\"Timezone\":\"Europe/Berlin\"},\"PEG\":{\"Timezone\":\"Europe/Rome\"},\"PEH\":{\"Timezone\":\"America/Buenos_Aires\"},\"PEI\":{\"Timezone\":\"America/Bogota\"},\"PEK\":{\"Timezone\":\"Asia/Shanghai\"},\"PEM\":{\"Timezone\":\"America/Lima\"},\"PEN\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"PEQ\":{\"Timezone\":\"America/Chicago\"},\"PER\":{\"Timezone\":\"Australia/Perth\"},\"PES\":{\"Timezone\":\"Europe/Moscow\"},\"PET\":{\"Timezone\":\"America/Sao_Paulo\"},\"PEU\":{\"Timezone\":\"America/Tegucigalpa\"},\"PEV\":{\"Timezone\":\"Europe/Budapest\"},\"PEW\":{\"Timezone\":\"Asia/Karachi\"},\"PEX\":{\"Timezone\":\"Europe/Moscow\"},\"PEZ\":{\"Timezone\":\"Europe/Moscow\"},\"PFB\":{\"Timezone\":\"America/Sao_Paulo\"},\"PFJ\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"PFN\":{\"Timezone\":\"America/Chicago\"},\"PFO\":{\"Timezone\":\"Asia/Nicosia\"},\"PFQ\":{\"Timezone\":\"Asia/Tehran\"},\"PFR\":{\"Timezone\":\"Africa/Lubumbashi\"},\"PGA\":{\"Timezone\":\"America/Phoenix\"},\"PGD\":{\"Timezone\":\"America/New_York\"},\"PGF\":{\"Timezone\":\"Europe/Paris\"},\"PGH\":{\"Timezone\":\"Asia/Calcutta\"},\"PGK\":{\"Timezone\":\"Asia/Jakarta\"},\"PGU\":{\"Timezone\":\"Asia/Tehran\"},\"PGV\":{\"Timezone\":\"America/New_York\"},\"PGX\":{\"Timezone\":\"Europe/Paris\"},\"PGZ\":{\"Timezone\":null},\"PHA\":{\"Timezone\":\"Asia/Saigon\"},\"PHB\":{\"Timezone\":\"America/Fortaleza\"},\"PHC\":{\"Timezone\":\"Africa/Lagos\"},\"PHD\":{\"Timezone\":\"America/New_York\"},\"PHE\":{\"Timezone\":\"Australia/Perth\"},\"PHF\":{\"Timezone\":\"America/New_York\"},\"PHK\":{\"Timezone\":\"America/New_York\"},\"PHL\":{\"Timezone\":\"America/New_York\"},\"PHN\":{\"Timezone\":\"America/New_York\"},\"PHS\":{\"Timezone\":\"Asia/Bangkok\"},\"PHW\":{\"Timezone\":\"Africa/Johannesburg\"},\"PHX\":{\"Timezone\":\"America/Phoenix\"},\"PHY\":{\"Timezone\":\"Asia/Bangkok\"},\"PIA\":{\"Timezone\":\"America/Chicago\"},\"PIB\":{\"Timezone\":\"America/Chicago\"},\"PID\":{\"Timezone\":\"America/Nassau\"},\"PIE\":{\"Timezone\":\"America/New_York\"},\"PIF\":{\"Timezone\":\"Asia/Taipei\"},\"PIH\":{\"Timezone\":\"America/Denver\"},\"PIK\":{\"Timezone\":\"Europe/London\"},\"PIL\":{\"Timezone\":\"America/Asuncion\"},\"PIM\":{\"Timezone\":\"America/New_York\"},\"PIN\":{\"Timezone\":\"America/Boa_Vista\"},\"PIO\":{\"Timezone\":\"America/Lima\"},\"PIP\":{\"Timezone\":\"America/Anchorage\"},\"PIR\":{\"Timezone\":\"America/Chicago\"},\"PIS\":{\"Timezone\":\"Europe/Paris\"},\"PIT\":{\"Timezone\":\"America/New_York\"},\"PIU\":{\"Timezone\":\"America/Lima\"},\"PIW\":{\"Timezone\":null},\"PIX\":{\"Timezone\":\"Atlantic/Azores\"},\"PIZ\":{\"Timezone\":\"America/Anchorage\"},\"PJA\":{\"Timezone\":\"Europe/Stockholm\"},\"PJC\":{\"Timezone\":\"America/Asuncion\"},\"PJG\":{\"Timezone\":\"Asia/Karachi\"},\"PJM\":{\"Timezone\":\"America/Costa_Rica\"},\"PKA\":{\"Timezone\":\"America/Anchorage\"},\"PKB\":{\"Timezone\":\"America/New_York\"},\"PKC\":{\"Timezone\":\"Asia/Anadyr\"},\"PKE\":{\"Timezone\":\"Australia/Sydney\"},\"PKG\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"PKH\":{\"Timezone\":\"Europe/Athens\"},\"PKK\":{\"Timezone\":\"Asia/Rangoon\"},\"PKN\":{\"Timezone\":\"Asia/Jakarta\"},\"PKO\":{\"Timezone\":null},\"PKP\":{\"Timezone\":\"Pacific/Tahiti\"},\"PKR\":{\"Timezone\":\"Asia/Katmandu\"},\"PKT\":{\"Timezone\":null},\"PKU\":{\"Timezone\":\"Asia/Jakarta\"},\"PKV\":{\"Timezone\":\"Europe/Moscow\"},\"PKW\":{\"Timezone\":\"Africa/Gaborone\"},\"PKX\":{\"Timezone\":null},\"PKY\":{\"Timezone\":\"Asia/Jakarta\"},\"PKZ\":{\"Timezone\":\"Asia/Vientiane\"},\"PLD\":{\"Timezone\":\"America/Costa_Rica\"},\"PLH\":{\"Timezone\":\"Europe/London\"},\"PLL\":{\"Timezone\":\"America/Boa_Vista\"},\"PLM\":{\"Timezone\":\"Asia/Jakarta\"},\"PLN\":{\"Timezone\":\"America/New_York\"},\"PLO\":{\"Timezone\":\"Australia/Adelaide\"},\"PLP\":{\"Timezone\":\"America/Panama\"},\"PLQ\":{\"Timezone\":\"Europe/Vilnius\"},\"PLS\":{\"Timezone\":\"America/Grand_Turk\"},\"PLU\":{\"Timezone\":\"America/Sao_Paulo\"},\"PLV\":{\"Timezone\":\"Europe/Kiev\"},\"PLW\":{\"Timezone\":\"Asia/Makassar\"},\"PLX\":{\"Timezone\":\"Asia/Qyzylorda\"},\"PLZ\":{\"Timezone\":\"Africa/Johannesburg\"},\"PMA\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"PMB\":{\"Timezone\":\"America/Chicago\"},\"PMC\":{\"Timezone\":\"America/Santiago\"},\"PMD\":{\"Timezone\":\"America/Los_Angeles\"},\"PMF\":{\"Timezone\":\"Europe/Rome\"},\"PMG\":{\"Timezone\":\"America/Campo_Grande\"},\"PMH\":{\"Timezone\":null},\"PMI\":{\"Timezone\":\"Europe/Madrid\"},\"PMK\":{\"Timezone\":\"Australia/Brisbane\"},\"PML\":{\"Timezone\":\"America/Anchorage\"},\"PMO\":{\"Timezone\":\"Europe/Rome\"},\"PMQ\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"PMR\":{\"Timezone\":\"Pacific/Auckland\"},\"PMS\":{\"Timezone\":\"Asia/Damascus\"},\"PMV\":{\"Timezone\":\"America/Caracas\"},\"PMW\":{\"Timezone\":\"America/Fortaleza\"},\"PMY\":{\"Timezone\":\"America/Catamarca\"},\"PMZ\":{\"Timezone\":\"America/Costa_Rica\"},\"PNA\":{\"Timezone\":\"Europe/Madrid\"},\"PNB\":{\"Timezone\":\"America/Fortaleza\"},\"PNC\":{\"Timezone\":\"America/Chicago\"},\"PNE\":{\"Timezone\":\"America/New_York\"},\"PNH\":{\"Timezone\":\"Asia/Phnom_Penh\"},\"PNI\":{\"Timezone\":\"Pacific/Ponape\"},\"PNK\":{\"Timezone\":\"Asia/Jakarta\"},\"PNL\":{\"Timezone\":\"Europe/Rome\"},\"PNP\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"PNQ\":{\"Timezone\":\"Asia/Calcutta\"},\"PNR\":{\"Timezone\":\"Africa/Brazzaville\"},\"PNS\":{\"Timezone\":\"America/Chicago\"},\"PNT\":{\"Timezone\":\"America/Santiago\"},\"PNV\":{\"Timezone\":\"Europe/Vilnius\"},\"PNY\":{\"Timezone\":\"Asia/Calcutta\"},\"PNZ\":{\"Timezone\":\"America/Fortaleza\"},\"POA\":{\"Timezone\":\"America/Sao_Paulo\"},\"POB\":{\"Timezone\":\"America/New_York\"},\"POC\":{\"Timezone\":\"America/Los_Angeles\"},\"POE\":{\"Timezone\":\"America/Chicago\"},\"POF\":{\"Timezone\":\"America/Chicago\"},\"POG\":{\"Timezone\":\"Africa/Libreville\"},\"POI\":{\"Timezone\":\"America/La_Paz\"},\"POJ\":{\"Timezone\":\"America/Sao_Paulo\"},\"POL\":{\"Timezone\":\"Africa/Maputo\"},\"POM\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"POO\":{\"Timezone\":\"America/Sao_Paulo\"},\"POP\":{\"Timezone\":\"America/Santo_Domingo\"},\"POR\":{\"Timezone\":\"Europe/Helsinki\"},\"POS\":{\"Timezone\":\"America/Port_of_Spain\"},\"POT\":{\"Timezone\":\"America/Jamaica\"},\"POU\":{\"Timezone\":null},\"POW\":{\"Timezone\":\"Europe/Ljubljana\"},\"POX\":{\"Timezone\":\"Europe/Paris\"},\"POZ\":{\"Timezone\":\"Europe/Warsaw\"},\"PPA\":{\"Timezone\":null},\"PPB\":{\"Timezone\":\"America/Sao_Paulo\"},\"PPC\":{\"Timezone\":\"America/Anchorage\"},\"PPE\":{\"Timezone\":\"America/Hermosillo\"},\"PPF\":{\"Timezone\":null},\"PPG\":{\"Timezone\":\"Pacific/Pago_Pago\"},\"PPI\":{\"Timezone\":null},\"PPK\":{\"Timezone\":\"Asia/Qyzylorda\"},\"PPL\":{\"Timezone\":\"Asia/Katmandu\"},\"PPM\":{\"Timezone\":\"America/New_York\"},\"PPN\":{\"Timezone\":\"America/Bogota\"},\"PPP\":{\"Timezone\":\"Australia/Brisbane\"},\"PPQ\":{\"Timezone\":\"Pacific/Auckland\"},\"PPR\":{\"Timezone\":null},\"PPS\":{\"Timezone\":\"Asia/Manila\"},\"PPT\":{\"Timezone\":\"Pacific/Tahiti\"},\"PPW\":{\"Timezone\":\"Europe/London\"},\"PPY\":{\"Timezone\":null},\"PQC\":{\"Timezone\":\"Asia/Saigon\"},\"PQI\":{\"Timezone\":\"America/New_York\"},\"PQM\":{\"Timezone\":null},\"PQQ\":{\"Timezone\":\"Australia/Sydney\"},\"PRA\":{\"Timezone\":\"America/Cordoba\"},\"PRB\":{\"Timezone\":null},\"PRC\":{\"Timezone\":\"America/Phoenix\"},\"PRG\":{\"Timezone\":\"Europe/Prague\"},\"PRH\":{\"Timezone\":\"Asia/Bangkok\"},\"PRI\":{\"Timezone\":\"Indian/Mahe\"},\"PRM\":{\"Timezone\":\"Europe/Lisbon\"},\"PRN\":{\"Timezone\":\"Europe/Belgrade\"},\"PRP\":{\"Timezone\":\"Europe/Paris\"},\"PRQ\":{\"Timezone\":\"America/Cordoba\"},\"PRU\":{\"Timezone\":\"Asia/Rangoon\"},\"PRV\":{\"Timezone\":\"Europe/Prague\"},\"PRX\":{\"Timezone\":null},\"PRY\":{\"Timezone\":\"Africa/Johannesburg\"},\"PRZ\":{\"Timezone\":\"America/Los_Angeles\"},\"PSA\":{\"Timezone\":\"Europe/Rome\"},\"PSC\":{\"Timezone\":\"America/Los_Angeles\"},\"PSD\":{\"Timezone\":\"Africa/Cairo\"},\"PSE\":{\"Timezone\":\"America/Puerto_Rico\"},\"PSG\":{\"Timezone\":\"America/Anchorage\"},\"PSH\":{\"Timezone\":\"Europe/Berlin\"},\"PSI\":{\"Timezone\":\"Asia/Karachi\"},\"PSJ\":{\"Timezone\":\"Asia/Makassar\"},\"PSL\":{\"Timezone\":\"Europe/London\"},\"PSM\":{\"Timezone\":\"America/New_York\"},\"PSO\":{\"Timezone\":\"America/Bogota\"},\"PSP\":{\"Timezone\":\"America/Los_Angeles\"},\"PSR\":{\"Timezone\":\"Europe/Rome\"},\"PSS\":{\"Timezone\":\"America/Cordoba\"},\"PSU\":{\"Timezone\":\"Asia/Jakarta\"},\"PSX\":{\"Timezone\":\"America/Chicago\"},\"PSY\":{\"Timezone\":\"Atlantic/Stanley\"},\"PSZ\":{\"Timezone\":\"America/La_Paz\"},\"PTA\":{\"Timezone\":\"America/Anchorage\"},\"PTB\":{\"Timezone\":\"America/New_York\"},\"PTF\":{\"Timezone\":\"Pacific/Fiji\"},\"PTG\":{\"Timezone\":\"Africa/Johannesburg\"},\"PTH\":{\"Timezone\":\"America/Anchorage\"},\"PTJ\":{\"Timezone\":\"Australia/Hobart\"},\"PTK\":{\"Timezone\":\"America/New_York\"},\"PTM\":{\"Timezone\":\"America/Caracas\"},\"PTP\":{\"Timezone\":\"America/Guadeloupe\"},\"PTT\":{\"Timezone\":null},\"PTU\":{\"Timezone\":\"America/Anchorage\"},\"PTX\":{\"Timezone\":\"America/Bogota\"},\"PTY\":{\"Timezone\":\"America/Panama\"},\"PTZ\":{\"Timezone\":\"America/Guayaquil\"},\"PUB\":{\"Timezone\":\"America/Denver\"},\"PUC\":{\"Timezone\":\"America/Denver\"},\"PUD\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"PUE\":{\"Timezone\":\"America/Panama\"},\"PUF\":{\"Timezone\":\"Europe/Paris\"},\"PUG\":{\"Timezone\":\"Australia/Adelaide\"},\"PUJ\":{\"Timezone\":\"America/Santo_Domingo\"},\"PUK\":{\"Timezone\":null},\"PUQ\":{\"Timezone\":\"America/Santiago\"},\"PUR\":{\"Timezone\":\"America/La_Paz\"},\"PUS\":{\"Timezone\":\"Asia/Seoul\"},\"PUT\":{\"Timezone\":null},\"PUU\":{\"Timezone\":\"America/Bogota\"},\"PUW\":{\"Timezone\":\"America/Los_Angeles\"},\"PUY\":{\"Timezone\":\"Europe/Zagreb\"},\"PUZ\":{\"Timezone\":\"America/Managua\"},\"PVA\":{\"Timezone\":\"America/Bogota\"},\"PVC\":{\"Timezone\":\"America/New_York\"},\"PVD\":{\"Timezone\":\"America/New_York\"},\"PVG\":{\"Timezone\":\"Asia/Shanghai\"},\"PVH\":{\"Timezone\":\"America/Boa_Vista\"},\"PVK\":{\"Timezone\":\"Europe/Athens\"},\"PVL\":{\"Timezone\":\"America/New_York\"},\"PVO\":{\"Timezone\":\"America/Guayaquil\"},\"PVR\":{\"Timezone\":\"America/Mexico_City\"},\"PVS\":{\"Timezone\":\"Asia/Anadyr\"},\"PVU\":{\"Timezone\":\"America/Denver\"},\"PWA\":{\"Timezone\":\"America/Chicago\"},\"PWE\":{\"Timezone\":null},\"PWK\":{\"Timezone\":\"America/Chicago\"},\"PWM\":{\"Timezone\":\"America/New_York\"},\"PWQ\":{\"Timezone\":\"Asia/Qyzylorda\"},\"PWT\":{\"Timezone\":\"America/Los_Angeles\"},\"PWY\":{\"Timezone\":null},\"PXH\":{\"Timezone\":\"Australia/Adelaide\"},\"PXM\":{\"Timezone\":\"America/Mexico_City\"},\"PXO\":{\"Timezone\":\"Europe/Lisbon\"},\"PXR\":{\"Timezone\":\"Asia/Bangkok\"},\"PXU\":{\"Timezone\":\"Asia/Saigon\"},\"PYB\":{\"Timezone\":null},\"PYE\":{\"Timezone\":\"Pacific/Rarotonga\"},\"PYH\":{\"Timezone\":\"America/Caracas\"},\"PYJ\":{\"Timezone\":\"Asia/Yakutsk\"},\"PYK\":{\"Timezone\":null},\"PYM\":{\"Timezone\":\"America/New_York\"},\"PYR\":{\"Timezone\":\"Europe/Athens\"},\"PYY\":{\"Timezone\":\"Asia/Bangkok\"},\"PZA\":{\"Timezone\":null},\"PZB\":{\"Timezone\":\"Africa/Johannesburg\"},\"PZE\":{\"Timezone\":\"Europe/London\"},\"PZH\":{\"Timezone\":\"Asia/Karachi\"},\"PZI\":{\"Timezone\":\"Asia/Shanghai\"},\"PZL\":{\"Timezone\":null},\"PZO\":{\"Timezone\":\"America/Caracas\"},\"PZS\":{\"Timezone\":\"America/Santiago\"},\"PZU\":{\"Timezone\":\"Africa/Khartoum\"},\"PZY\":{\"Timezone\":\"Europe/Bratislava\"},\"QBC\":{\"Timezone\":\"America/Vancouver\"},\"QCJ\":{\"Timezone\":\"America/Sao_Paulo\"},\"QCY\":{\"Timezone\":\"Europe/London\"},\"QDJ\":{\"Timezone\":\"Africa/Algiers\"},\"QEF\":{\"Timezone\":\"Europe/Berlin\"},\"QFG\":{\"Timezone\":null},\"QFO\":{\"Timezone\":\"Europe/London\"},\"QGQ\":{\"Timezone\":null},\"QGU\":{\"Timezone\":\"Asia/Tokyo\"},\"QHP\":{\"Timezone\":null},\"QHR\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"QIG\":{\"Timezone\":\"America/Fortaleza\"},\"QJB\":{\"Timezone\":\"Asia/Riyadh\"},\"QJE\":{\"Timezone\":null},\"QJI\":{\"Timezone\":null},\"QKX\":{\"Timezone\":null},\"QLA\":{\"Timezone\":\"Europe/London\"},\"QLD\":{\"Timezone\":\"Africa/Algiers\"},\"QLF\":{\"Timezone\":\"Europe/Helsinki\"},\"QLP\":{\"Timezone\":null},\"QLR\":{\"Timezone\":\"Europe/Lisbon\"},\"QLS\":{\"Timezone\":\"Europe/Zurich\"},\"QLT\":{\"Timezone\":\"Europe/Rome\"},\"QNC\":{\"Timezone\":\"Europe/Zurich\"},\"QND\":{\"Timezone\":null},\"QNJ\":{\"Timezone\":\"Europe/Paris\"},\"QNV\":{\"Timezone\":\"America/Sao_Paulo\"},\"QOW\":{\"Timezone\":\"Africa/Lagos\"},\"QPA\":{\"Timezone\":\"Europe/Rome\"},\"QPD\":{\"Timezone\":\"America/Havana\"},\"QPG\":{\"Timezone\":\"Asia/Singapore\"},\"QPS\":{\"Timezone\":\"America/Sao_Paulo\"},\"QPW\":{\"Timezone\":null},\"QQT\":{\"Timezone\":null},\"QRA\":{\"Timezone\":\"Africa/Johannesburg\"},\"QRC\":{\"Timezone\":\"America/Santiago\"},\"QRM\":{\"Timezone\":null},\"QRO\":{\"Timezone\":\"America/Mexico_City\"},\"QRR\":{\"Timezone\":null},\"QRW\":{\"Timezone\":\"Africa/Lagos\"},\"QRY\":{\"Timezone\":null},\"QSA\":{\"Timezone\":\"Europe/Madrid\"},\"QSC\":{\"Timezone\":\"America/Sao_Paulo\"},\"QSF\":{\"Timezone\":\"Africa/Algiers\"},\"QSI\":{\"Timezone\":null},\"QSN\":{\"Timezone\":null},\"QSR\":{\"Timezone\":\"Europe/Rome\"},\"QSZ\":{\"Timezone\":null},\"QUG\":{\"Timezone\":null},\"QUO\":{\"Timezone\":\"Africa/Lagos\"},\"QUY\":{\"Timezone\":\"Europe/London\"},\"QXH\":{\"Timezone\":\"Europe/Berlin\"},\"QYD\":{\"Timezone\":\"Europe/Warsaw\"},\"RAB\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"RAC\":{\"Timezone\":\"America/Chicago\"},\"RAE\":{\"Timezone\":\"Asia/Riyadh\"},\"RAH\":{\"Timezone\":\"Asia/Riyadh\"},\"RAI\":{\"Timezone\":\"Atlantic/Cape_Verde\"},\"RAJ\":{\"Timezone\":\"Asia/Calcutta\"},\"RAK\":{\"Timezone\":\"Africa/Casablanca\"},\"RAL\":{\"Timezone\":\"America/Los_Angeles\"},\"RAM\":{\"Timezone\":\"Australia/Darwin\"},\"RAO\":{\"Timezone\":\"America/Sao_Paulo\"},\"RAP\":{\"Timezone\":\"America/Denver\"},\"RAQ\":{\"Timezone\":null},\"RAR\":{\"Timezone\":\"Pacific/Rarotonga\"},\"RAS\":{\"Timezone\":\"Asia/Tehran\"},\"RAT\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"RAZ\":{\"Timezone\":\"Asia/Karachi\"},\"RBA\":{\"Timezone\":\"Africa/Casablanca\"},\"RBB\":{\"Timezone\":\"America/Boa_Vista\"},\"RBD\":{\"Timezone\":\"America/Chicago\"},\"RBE\":{\"Timezone\":\"Asia/Phnom_Penh\"},\"RBK\":{\"Timezone\":\"America/Los_Angeles\"},\"RBL\":{\"Timezone\":\"America/Los_Angeles\"},\"RBM\":{\"Timezone\":\"Europe/Berlin\"},\"RBQ\":{\"Timezone\":\"America/La_Paz\"},\"RBR\":{\"Timezone\":\"America/Rio_Branco\"},\"RBV\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"RBX\":{\"Timezone\":\"Africa/Juba\"},\"RBY\":{\"Timezone\":\"America/Anchorage\"},\"RCA\":{\"Timezone\":\"America/Denver\"},\"RCB\":{\"Timezone\":\"Africa/Johannesburg\"},\"RCH\":{\"Timezone\":\"America/Bogota\"},\"RCL\":{\"Timezone\":\"Pacific/Efate\"},\"RCM\":{\"Timezone\":null},\"RCO\":{\"Timezone\":\"Europe/Paris\"},\"RCQ\":{\"Timezone\":\"America/Cordoba\"},\"RCS\":{\"Timezone\":\"Europe/London\"},\"RCU\":{\"Timezone\":\"America/Cordoba\"},\"RCY\":{\"Timezone\":\"America/Nassau\"},\"RDB\":{\"Timezone\":null},\"RDC\":{\"Timezone\":\"America/Belem\"},\"RDD\":{\"Timezone\":\"America/Los_Angeles\"},\"RDG\":{\"Timezone\":\"America/New_York\"},\"RDM\":{\"Timezone\":\"America/Los_Angeles\"},\"RDN\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"RDO\":{\"Timezone\":\"Europe/Warsaw\"},\"RDP\":{\"Timezone\":null},\"RDR\":{\"Timezone\":\"America/Chicago\"},\"RDS\":{\"Timezone\":\"America/Argentina/Salta\"},\"RDU\":{\"Timezone\":\"America/New_York\"},\"RDZ\":{\"Timezone\":\"Europe/Paris\"},\"REA\":{\"Timezone\":null},\"REB\":{\"Timezone\":\"Europe/Berlin\"},\"REC\":{\"Timezone\":\"America/Fortaleza\"},\"REG\":{\"Timezone\":\"Europe/Rome\"},\"REL\":{\"Timezone\":\"America/Catamarca\"},\"REN\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"REP\":{\"Timezone\":\"Asia/Phnom_Penh\"},\"RER\":{\"Timezone\":\"America/Guatemala\"},\"RES\":{\"Timezone\":\"America/Cordoba\"},\"RET\":{\"Timezone\":\"Europe/Oslo\"},\"REU\":{\"Timezone\":\"Europe/Madrid\"},\"REX\":{\"Timezone\":\"America/Mexico_City\"},\"REY\":{\"Timezone\":\"America/La_Paz\"},\"REZ\":{\"Timezone\":null},\"RFD\":{\"Timezone\":\"America/Chicago\"},\"RFP\":{\"Timezone\":\"Pacific/Tahiti\"},\"RFS\":{\"Timezone\":\"America/Managua\"},\"RGA\":{\"Timezone\":\"America/Argentina/Ushuaia\"},\"RGI\":{\"Timezone\":\"Pacific/Tahiti\"},\"RGK\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"RGL\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"RGN\":{\"Timezone\":\"Asia/Rangoon\"},\"RGO\":{\"Timezone\":\"Asia/Pyongyang\"},\"RGS\":{\"Timezone\":\"Europe/Madrid\"},\"RGT\":{\"Timezone\":\"Asia/Jakarta\"},\"RHD\":{\"Timezone\":\"America/Cordoba\"},\"RHE\":{\"Timezone\":\"Europe/Paris\"},\"RHI\":{\"Timezone\":\"America/Chicago\"},\"RHO\":{\"Timezone\":\"Europe/Athens\"},\"RHP\":{\"Timezone\":\"Asia/Katmandu\"},\"RHT\":{\"Timezone\":null},\"RHV\":{\"Timezone\":null},\"RIA\":{\"Timezone\":\"America/Sao_Paulo\"},\"RIB\":{\"Timezone\":\"America/La_Paz\"},\"RIC\":{\"Timezone\":\"America/New_York\"},\"RIH\":{\"Timezone\":null},\"RIJ\":{\"Timezone\":null},\"RIL\":{\"Timezone\":\"America/Denver\"},\"RIN\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"RIS\":{\"Timezone\":\"Asia/Tokyo\"},\"RIV\":{\"Timezone\":\"America/Los_Angeles\"},\"RIW\":{\"Timezone\":\"America/Denver\"},\"RIX\":{\"Timezone\":\"Europe/Riga\"},\"RIY\":{\"Timezone\":\"Asia/Aden\"},\"RIZ\":{\"Timezone\":null},\"RJA\":{\"Timezone\":\"Asia/Calcutta\"},\"RJB\":{\"Timezone\":null},\"RJH\":{\"Timezone\":\"Asia/Dhaka\"},\"RJK\":{\"Timezone\":\"Europe/Zagreb\"},\"RJL\":{\"Timezone\":\"Europe/Madrid\"},\"RJN\":{\"Timezone\":\"Asia/Tehran\"},\"RKD\":{\"Timezone\":\"America/New_York\"},\"RKE\":{\"Timezone\":\"Europe/Copenhagen\"},\"RKH\":{\"Timezone\":\"America/New_York\"},\"RKO\":{\"Timezone\":null},\"RKP\":{\"Timezone\":\"America/Chicago\"},\"RKS\":{\"Timezone\":\"America/Denver\"},\"RKT\":{\"Timezone\":\"Asia/Dubai\"},\"RKV\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"RKZ\":{\"Timezone\":\"Asia/Shanghai\"},\"RLG\":{\"Timezone\":\"Europe/Berlin\"},\"RLK\":{\"Timezone\":\"Asia/Shanghai\"},\"RMA\":{\"Timezone\":\"Australia/Brisbane\"},\"RME\":{\"Timezone\":\"America/New_York\"},\"RMF\":{\"Timezone\":\"Africa/Cairo\"},\"RMG\":{\"Timezone\":\"America/New_York\"},\"RMI\":{\"Timezone\":\"Europe/Rome\"},\"RMK\":{\"Timezone\":\"Australia/Adelaide\"},\"RML\":{\"Timezone\":\"Asia/Colombo\"},\"RMQ\":{\"Timezone\":\"Asia/Taipei\"},\"RMS\":{\"Timezone\":\"Europe/Berlin\"},\"RMT\":{\"Timezone\":null},\"RMU\":{\"Timezone\":null},\"RMY\":{\"Timezone\":\"America/Los_Angeles\"},\"RNA\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"RNB\":{\"Timezone\":\"Europe/Stockholm\"},\"RND\":{\"Timezone\":\"America/Chicago\"},\"RNE\":{\"Timezone\":\"Europe/Paris\"},\"RNI\":{\"Timezone\":\"America/Managua\"},\"RNJ\":{\"Timezone\":\"Asia/Tokyo\"},\"RNL\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"RNN\":{\"Timezone\":\"Europe/Copenhagen\"},\"RNO\":{\"Timezone\":\"America/Los_Angeles\"},\"RNS\":{\"Timezone\":\"Europe/Paris\"},\"RNT\":{\"Timezone\":\"America/Los_Angeles\"},\"RNZ\":{\"Timezone\":null},\"ROA\":{\"Timezone\":\"America/New_York\"},\"ROB\":{\"Timezone\":\"Africa/Monrovia\"},\"ROC\":{\"Timezone\":\"America/New_York\"},\"ROD\":{\"Timezone\":\"Africa/Johannesburg\"},\"ROI\":{\"Timezone\":\"Asia/Bangkok\"},\"ROK\":{\"Timezone\":\"Australia/Brisbane\"},\"ROO\":{\"Timezone\":\"America/Campo_Grande\"},\"ROP\":{\"Timezone\":\"Pacific/Saipan\"},\"ROR\":{\"Timezone\":\"Pacific/Palau\"},\"ROS\":{\"Timezone\":\"America/Cordoba\"},\"ROT\":{\"Timezone\":\"Pacific/Auckland\"},\"ROV\":{\"Timezone\":\"Europe/Moscow\"},\"ROW\":{\"Timezone\":\"America/Denver\"},\"ROZ\":{\"Timezone\":\"Europe/Madrid\"},\"RPB\":{\"Timezone\":\"Australia/Darwin\"},\"RPM\":{\"Timezone\":null},\"RPN\":{\"Timezone\":\"Asia/Jerusalem\"},\"RPR\":{\"Timezone\":\"Asia/Calcutta\"},\"RQW\":{\"Timezone\":null},\"RRG\":{\"Timezone\":\"Indian/Mauritius\"},\"RRK\":{\"Timezone\":\"Asia/Calcutta\"},\"RRR\":{\"Timezone\":null},\"RRS\":{\"Timezone\":\"Europe/Oslo\"},\"RSA\":{\"Timezone\":\"America/Argentina/Salta\"},\"RSD\":{\"Timezone\":\"America/Nassau\"},\"RSH\":{\"Timezone\":\"America/Anchorage\"},\"RSL\":{\"Timezone\":null},\"RSS\":{\"Timezone\":\"Africa/Khartoum\"},\"RST\":{\"Timezone\":\"America/Chicago\"},\"RSU\":{\"Timezone\":\"Asia/Seoul\"},\"RSW\":{\"Timezone\":\"America/New_York\"},\"RTA\":{\"Timezone\":\"Pacific/Fiji\"},\"RTB\":{\"Timezone\":\"America/Tegucigalpa\"},\"RTC\":{\"Timezone\":null},\"RTG\":{\"Timezone\":\"Asia/Makassar\"},\"RTM\":{\"Timezone\":\"Europe/Amsterdam\"},\"RTN\":{\"Timezone\":null},\"RTS\":{\"Timezone\":\"Australia/Perth\"},\"RTW\":{\"Timezone\":\"Europe/Moscow\"},\"RUA\":{\"Timezone\":\"Africa/Kampala\"},\"RUD\":{\"Timezone\":\"Asia/Tehran\"},\"RUG\":{\"Timezone\":null},\"RUH\":{\"Timezone\":\"Asia/Riyadh\"},\"RUI\":{\"Timezone\":\"America/Denver\"},\"RUK\":{\"Timezone\":\"Asia/Katmandu\"},\"RUM\":{\"Timezone\":\"Asia/Katmandu\"},\"RUN\":{\"Timezone\":\"Indian/Reunion\"},\"RUR\":{\"Timezone\":null},\"RUS\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"RUT\":{\"Timezone\":\"America/New_York\"},\"RUV\":{\"Timezone\":null},\"RVA\":{\"Timezone\":\"Indian/Antananarivo\"},\"RVD\":{\"Timezone\":\"America/Sao_Paulo\"},\"RVE\":{\"Timezone\":\"America/Bogota\"},\"RVK\":{\"Timezone\":\"Europe/Oslo\"},\"RVN\":{\"Timezone\":\"Europe/Helsinki\"},\"RVS\":{\"Timezone\":\"America/Chicago\"},\"RVT\":{\"Timezone\":\"Australia/Perth\"},\"RVV\":{\"Timezone\":\"Pacific/Tahiti\"},\"RVY\":{\"Timezone\":\"America/Montevideo\"},\"RWF\":{\"Timezone\":null},\"RWI\":{\"Timezone\":\"America/New_York\"},\"RWL\":{\"Timezone\":\"America/Denver\"},\"RWN\":{\"Timezone\":\"Europe/Kiev\"},\"RXS\":{\"Timezone\":\"Asia/Manila\"},\"RYB\":{\"Timezone\":\"Europe/Moscow\"},\"RYG\":{\"Timezone\":\"Europe/Oslo\"},\"RYK\":{\"Timezone\":\"Asia/Karachi\"},\"RYN\":{\"Timezone\":\"Europe/Paris\"},\"RZA\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"RZE\":{\"Timezone\":\"Europe/Warsaw\"},\"RZP\":{\"Timezone\":\"Asia/Manila\"},\"RZR\":{\"Timezone\":\"Asia/Tehran\"},\"RZS\":{\"Timezone\":null},\"SAA\":{\"Timezone\":\"America/Denver\"},\"SAB\":{\"Timezone\":\"America/Curacao\"},\"SAC\":{\"Timezone\":\"America/Los_Angeles\"},\"SAD\":{\"Timezone\":\"America/Phoenix\"},\"SAF\":{\"Timezone\":\"America/Denver\"},\"SAG\":{\"Timezone\":null},\"SAH\":{\"Timezone\":\"Asia/Aden\"},\"SAK\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"SAL\":{\"Timezone\":\"America/El_Salvador\"},\"SAN\":{\"Timezone\":\"America/Los_Angeles\"},\"SAP\":{\"Timezone\":\"America/Tegucigalpa\"},\"SAQ\":{\"Timezone\":\"America/Nassau\"},\"SAT\":{\"Timezone\":\"America/Chicago\"},\"SAV\":{\"Timezone\":\"America/New_York\"},\"SAW\":{\"Timezone\":\"Europe/Istanbul\"},\"SAY\":{\"Timezone\":\"Europe/Rome\"},\"SBA\":{\"Timezone\":\"America/Los_Angeles\"},\"SBB\":{\"Timezone\":\"America/Caracas\"},\"SBD\":{\"Timezone\":\"America/Los_Angeles\"},\"SBG\":{\"Timezone\":\"Asia/Jakarta\"},\"SBH\":{\"Timezone\":null},\"SBK\":{\"Timezone\":\"Europe/Paris\"},\"SBL\":{\"Timezone\":\"America/La_Paz\"},\"SBM\":{\"Timezone\":\"America/Chicago\"},\"SBN\":{\"Timezone\":\"America/New_York\"},\"SBP\":{\"Timezone\":\"America/Los_Angeles\"},\"SBR\":{\"Timezone\":\"Australia/Brisbane\"},\"SBS\":{\"Timezone\":\"America/Denver\"},\"SBT\":{\"Timezone\":null},\"SBU\":{\"Timezone\":\"Africa/Johannesburg\"},\"SBW\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"SBY\":{\"Timezone\":\"America/New_York\"},\"SBZ\":{\"Timezone\":\"Europe/Bucharest\"},\"SCC\":{\"Timezone\":\"America/Anchorage\"},\"SCE\":{\"Timezone\":\"America/New_York\"},\"SCF\":{\"Timezone\":\"America/Phoenix\"},\"SCH\":{\"Timezone\":\"America/New_York\"},\"SCI\":{\"Timezone\":\"America/Caracas\"},\"SCK\":{\"Timezone\":\"America/Los_Angeles\"},\"SCL\":{\"Timezone\":\"America/Santiago\"},\"SCM\":{\"Timezone\":\"America/Anchorage\"},\"SCN\":{\"Timezone\":\"Europe/Berlin\"},\"SCO\":{\"Timezone\":\"Asia/Oral\"},\"SCQ\":{\"Timezone\":\"Europe/Madrid\"},\"SCS\":{\"Timezone\":\"Europe/London\"},\"SCT\":{\"Timezone\":\"Asia/Aden\"},\"SCU\":{\"Timezone\":\"America/Havana\"},\"SCV\":{\"Timezone\":\"Europe/Bucharest\"},\"SCW\":{\"Timezone\":\"Europe/Moscow\"},\"SCY\":{\"Timezone\":\"Pacific/Galapagos\"},\"SCZ\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"SDB\":{\"Timezone\":\"Africa/Johannesburg\"},\"SDD\":{\"Timezone\":\"Africa/Luanda\"},\"SDE\":{\"Timezone\":\"America/Cordoba\"},\"SDF\":{\"Timezone\":\"America/New_York\"},\"SDG\":{\"Timezone\":\"Asia/Tehran\"},\"SDJ\":{\"Timezone\":\"Asia/Tokyo\"},\"SDK\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"SDL\":{\"Timezone\":\"Europe/Stockholm\"},\"SDM\":{\"Timezone\":\"America/Los_Angeles\"},\"SDN\":{\"Timezone\":\"Europe/Oslo\"},\"SDP\":{\"Timezone\":\"America/Anchorage\"},\"SDQ\":{\"Timezone\":\"America/Santo_Domingo\"},\"SDR\":{\"Timezone\":\"Europe/Madrid\"},\"SDS\":{\"Timezone\":\"Asia/Tokyo\"},\"SDT\":{\"Timezone\":\"Asia/Karachi\"},\"SDU\":{\"Timezone\":\"America/Sao_Paulo\"},\"SDV\":{\"Timezone\":\"Asia/Jerusalem\"},\"SDX\":{\"Timezone\":\"America/Phoenix\"},\"SDY\":{\"Timezone\":\"America/Denver\"},\"SEA\":{\"Timezone\":\"America/Los_Angeles\"},\"SEB\":{\"Timezone\":\"Africa/Tripoli\"},\"SEE\":{\"Timezone\":\"America/Los_Angeles\"},\"SEF\":{\"Timezone\":\"America/New_York\"},\"SEH\":{\"Timezone\":\"Asia/Jayapura\"},\"SEK\":{\"Timezone\":\"Asia/Srednekolymsk\"},\"SEM\":{\"Timezone\":\"America/Chicago\"},\"SEN\":{\"Timezone\":\"Europe/London\"},\"SEP\":{\"Timezone\":\"America/Chicago\"},\"SEU\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"SEY\":{\"Timezone\":\"Africa/Nouakchott\"},\"SEZ\":{\"Timezone\":\"Indian/Mahe\"},\"SFA\":{\"Timezone\":\"Africa/Tunis\"},\"SFB\":{\"Timezone\":\"America/New_York\"},\"SFC\":{\"Timezone\":\"America/Guadeloupe\"},\"SFD\":{\"Timezone\":\"America/Caracas\"},\"SFE\":{\"Timezone\":\"Asia/Manila\"},\"SFF\":{\"Timezone\":\"America/Los_Angeles\"},\"SFG\":{\"Timezone\":null},\"SFH\":{\"Timezone\":\"America/Tijuana\"},\"SFJ\":{\"Timezone\":\"America/Godthab\"},\"SFK\":{\"Timezone\":\"America/Belem\"},\"SFL\":{\"Timezone\":\"Atlantic/Cape_Verde\"},\"SFN\":{\"Timezone\":\"America/Cordoba\"},\"SFO\":{\"Timezone\":\"America/Los_Angeles\"},\"SFQ\":{\"Timezone\":\"Europe/Istanbul\"},\"SFS\":{\"Timezone\":\"Asia/Manila\"},\"SFT\":{\"Timezone\":\"Europe/Stockholm\"},\"SFZ\":{\"Timezone\":\"America/New_York\"},\"SGC\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"SGD\":{\"Timezone\":\"Europe/Copenhagen\"},\"SGE\":{\"Timezone\":\"Europe/Berlin\"},\"SGF\":{\"Timezone\":\"America/Chicago\"},\"SGH\":{\"Timezone\":\"America/New_York\"},\"SGI\":{\"Timezone\":null},\"SGN\":{\"Timezone\":\"Asia/Saigon\"},\"SGO\":{\"Timezone\":\"Australia/Brisbane\"},\"SGQ\":{\"Timezone\":null},\"SGR\":{\"Timezone\":\"America/Chicago\"},\"SGU\":{\"Timezone\":\"America/Denver\"},\"SGV\":{\"Timezone\":\"America/Argentina/Salta\"},\"SGX\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"SGY\":{\"Timezone\":\"America/Anchorage\"},\"SGZ\":{\"Timezone\":\"Asia/Bangkok\"},\"SHA\":{\"Timezone\":\"Asia/Shanghai\"},\"SHB\":{\"Timezone\":\"Asia/Tokyo\"},\"SHD\":{\"Timezone\":\"America/New_York\"},\"SHE\":{\"Timezone\":\"Asia/Shanghai\"},\"SHG\":{\"Timezone\":\"America/Anchorage\"},\"SHH\":{\"Timezone\":\"America/Anchorage\"},\"SHI\":{\"Timezone\":\"Asia/Tokyo\"},\"SHJ\":{\"Timezone\":\"Asia/Dubai\"},\"SHL\":{\"Timezone\":\"Asia/Calcutta\"},\"SHM\":{\"Timezone\":\"Asia/Tokyo\"},\"SHN\":{\"Timezone\":\"America/Los_Angeles\"},\"SHO\":{\"Timezone\":null},\"SHP\":{\"Timezone\":\"Asia/Shanghai\"},\"SHR\":{\"Timezone\":\"America/Denver\"},\"SHT\":{\"Timezone\":\"Australia/Hobart\"},\"SHV\":{\"Timezone\":\"America/Chicago\"},\"SHW\":{\"Timezone\":\"Asia/Riyadh\"},\"SHX\":{\"Timezone\":\"America/Anchorage\"},\"SHY\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"SIA\":{\"Timezone\":\"Asia/Shanghai\"},\"SID\":{\"Timezone\":\"Atlantic/Cape_Verde\"},\"SIF\":{\"Timezone\":\"Asia/Katmandu\"},\"SIG\":{\"Timezone\":\"America/Puerto_Rico\"},\"SIJ\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"SIK\":{\"Timezone\":\"America/Chicago\"},\"SIN\":{\"Timezone\":\"Asia/Singapore\"},\"SIO\":{\"Timezone\":null},\"SIP\":{\"Timezone\":\"Europe/Simferopol\"},\"SIQ\":{\"Timezone\":\"Asia/Jakarta\"},\"SIR\":{\"Timezone\":\"Europe/Zurich\"},\"SIS\":{\"Timezone\":\"Africa/Johannesburg\"},\"SIT\":{\"Timezone\":\"America/Anchorage\"},\"SIU\":{\"Timezone\":\"America/Managua\"},\"SJC\":{\"Timezone\":\"America/Los_Angeles\"},\"SJD\":{\"Timezone\":\"America/Mazatlan\"},\"SJE\":{\"Timezone\":\"America/Bogota\"},\"SJI\":{\"Timezone\":\"Asia/Manila\"},\"SJJ\":{\"Timezone\":\"Europe/Sarajevo\"},\"SJK\":{\"Timezone\":\"America/Sao_Paulo\"},\"SJL\":{\"Timezone\":\"America/Boa_Vista\"},\"SJO\":{\"Timezone\":\"America/Costa_Rica\"},\"SJP\":{\"Timezone\":\"America/Sao_Paulo\"},\"SJT\":{\"Timezone\":\"America/Chicago\"},\"SJU\":{\"Timezone\":\"America/Puerto_Rico\"},\"SJW\":{\"Timezone\":\"Asia/Shanghai\"},\"SJY\":{\"Timezone\":\"Europe/Helsinki\"},\"SJZ\":{\"Timezone\":\"Atlantic/Azores\"},\"SKA\":{\"Timezone\":\"America/Los_Angeles\"},\"SKB\":{\"Timezone\":\"America/St_Kitts\"},\"SKD\":{\"Timezone\":\"Asia/Samarkand\"},\"SKE\":{\"Timezone\":\"Europe/Oslo\"},\"SKF\":{\"Timezone\":\"America/Chicago\"},\"SKG\":{\"Timezone\":\"Europe/Athens\"},\"SKH\":{\"Timezone\":\"Asia/Katmandu\"},\"SKK\":{\"Timezone\":\"America/Anchorage\"},\"SKN\":{\"Timezone\":\"Europe/Oslo\"},\"SKO\":{\"Timezone\":\"Africa/Lagos\"},\"SKP\":{\"Timezone\":\"Europe/Skopje\"},\"SKS\":{\"Timezone\":\"Europe/Copenhagen\"},\"SKT\":{\"Timezone\":\"Asia/Karachi\"},\"SKU\":{\"Timezone\":\"Europe/Athens\"},\"SKV\":{\"Timezone\":\"Africa/Cairo\"},\"SKX\":{\"Timezone\":\"Europe/Moscow\"},\"SKY\":{\"Timezone\":\"America/New_York\"},\"SKZ\":{\"Timezone\":\"Asia/Karachi\"},\"SLA\":{\"Timezone\":\"America/Argentina/Salta\"},\"SLC\":{\"Timezone\":\"America/Denver\"},\"SLD\":{\"Timezone\":\"Europe/Bratislava\"},\"SLE\":{\"Timezone\":\"America/Los_Angeles\"},\"SLF\":{\"Timezone\":\"Asia/Riyadh\"},\"SLH\":{\"Timezone\":\"Pacific/Efate\"},\"SLJ\":{\"Timezone\":\"Australia/Perth\"},\"SLK\":{\"Timezone\":\"America/New_York\"},\"SLL\":{\"Timezone\":\"Asia/Muscat\"},\"SLM\":{\"Timezone\":\"Europe/Madrid\"},\"SLN\":{\"Timezone\":\"America/Chicago\"},\"SLP\":{\"Timezone\":\"America/Mexico_City\"},\"SLQ\":{\"Timezone\":\"America/Anchorage\"},\"SLU\":{\"Timezone\":\"America/St_Lucia\"},\"SLV\":{\"Timezone\":\"Asia/Calcutta\"},\"SLW\":{\"Timezone\":\"America/Mexico_City\"},\"SLX\":{\"Timezone\":\"America/Grand_Turk\"},\"SLY\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"SLZ\":{\"Timezone\":\"America/Fortaleza\"},\"SMA\":{\"Timezone\":\"Atlantic/Azores\"},\"SMD\":{\"Timezone\":\"America/New_York\"},\"SME\":{\"Timezone\":\"America/New_York\"},\"SMF\":{\"Timezone\":\"America/Los_Angeles\"},\"SMI\":{\"Timezone\":\"Europe/Athens\"},\"SMK\":{\"Timezone\":\"America/Anchorage\"},\"SML\":{\"Timezone\":\"America/Nassau\"},\"SMN\":{\"Timezone\":\"America/Denver\"},\"SMO\":{\"Timezone\":\"America/Los_Angeles\"},\"SMQ\":{\"Timezone\":\"Asia/Jakarta\"},\"SMR\":{\"Timezone\":\"America/Bogota\"},\"SMS\":{\"Timezone\":\"Indian/Antananarivo\"},\"SMT\":{\"Timezone\":null},\"SMV\":{\"Timezone\":\"Europe/Zurich\"},\"SMW\":{\"Timezone\":\"Africa/El_Aaiun\"},\"SMX\":{\"Timezone\":\"America/Los_Angeles\"},\"SMZ\":{\"Timezone\":\"America/Paramaribo\"},\"SNA\":{\"Timezone\":\"America/Los_Angeles\"},\"SNB\":{\"Timezone\":null},\"SNC\":{\"Timezone\":\"America/Guayaquil\"},\"SNE\":{\"Timezone\":\"Atlantic/Cape_Verde\"},\"SNF\":{\"Timezone\":\"America/Caracas\"},\"SNJ\":{\"Timezone\":null},\"SNN\":{\"Timezone\":\"Europe/Dublin\"},\"SNO\":{\"Timezone\":\"Asia/Bangkok\"},\"SNP\":{\"Timezone\":\"America/Anchorage\"},\"SNR\":{\"Timezone\":\"Europe/Paris\"},\"SNS\":{\"Timezone\":null},\"SNU\":{\"Timezone\":\"America/Havana\"},\"SNV\":{\"Timezone\":\"America/Caracas\"},\"SNW\":{\"Timezone\":\"Asia/Rangoon\"},\"SNY\":{\"Timezone\":\"America/Denver\"},\"SNZ\":{\"Timezone\":\"America/Sao_Paulo\"},\"SOB\":{\"Timezone\":\"Europe/Budapest\"},\"SOC\":{\"Timezone\":\"Asia/Jakarta\"},\"SOD\":{\"Timezone\":\"America/Sao_Paulo\"},\"SOF\":{\"Timezone\":\"Europe/Sofia\"},\"SOG\":{\"Timezone\":\"Europe/Oslo\"},\"SOJ\":{\"Timezone\":\"Europe/Oslo\"},\"SOM\":{\"Timezone\":\"America/Caracas\"},\"SON\":{\"Timezone\":\"Pacific/Efate\"},\"SOO\":{\"Timezone\":\"Europe/Stockholm\"},\"SOP\":{\"Timezone\":\"America/New_York\"},\"SOQ\":{\"Timezone\":\"Asia/Jayapura\"},\"SOT\":{\"Timezone\":\"Europe/Helsinki\"},\"SOU\":{\"Timezone\":\"Europe/London\"},\"SOV\":{\"Timezone\":null},\"SOW\":{\"Timezone\":\"America/Phoenix\"},\"SOY\":{\"Timezone\":\"Europe/London\"},\"SOZ\":{\"Timezone\":\"Europe/Paris\"},\"SPA\":{\"Timezone\":null},\"SPB\":{\"Timezone\":\"America/St_Thomas\"},\"SPC\":{\"Timezone\":\"Atlantic/Canary\"},\"SPD\":{\"Timezone\":\"Asia/Dhaka\"},\"SPF\":{\"Timezone\":\"America/Denver\"},\"SPG\":{\"Timezone\":\"America/New_York\"},\"SPI\":{\"Timezone\":\"America/Chicago\"},\"SPJ\":{\"Timezone\":\"Europe/Athens\"},\"SPM\":{\"Timezone\":\"Europe/Berlin\"},\"SPN\":{\"Timezone\":\"Pacific/Saipan\"},\"SPP\":{\"Timezone\":\"Africa/Luanda\"},\"SPR\":{\"Timezone\":\"America/Belize\"},\"SPS\":{\"Timezone\":\"America/Chicago\"},\"SPU\":{\"Timezone\":\"Europe/Zagreb\"},\"SPW\":{\"Timezone\":\"America/Chicago\"},\"SPY\":{\"Timezone\":\"Africa/Abidjan\"},\"SQA\":{\"Timezone\":null},\"SQD\":{\"Timezone\":null},\"SQG\":{\"Timezone\":\"Asia/Jakarta\"},\"SQH\":{\"Timezone\":\"Asia/Saigon\"},\"SQJ\":{\"Timezone\":null},\"SQL\":{\"Timezone\":\"America/Los_Angeles\"},\"SQN\":{\"Timezone\":null},\"SQO\":{\"Timezone\":\"Europe/Stockholm\"},\"SQQ\":{\"Timezone\":\"Europe/Vilnius\"},\"SQR\":{\"Timezone\":\"Asia/Makassar\"},\"SQW\":{\"Timezone\":\"Europe/Copenhagen\"},\"SQX\":{\"Timezone\":null},\"SQZ\":{\"Timezone\":\"Europe/London\"},\"SRA\":{\"Timezone\":\"America/Sao_Paulo\"},\"SRE\":{\"Timezone\":\"America/La_Paz\"},\"SRG\":{\"Timezone\":\"Asia/Jakarta\"},\"SRH\":{\"Timezone\":\"Africa/Ndjamena\"},\"SRI\":{\"Timezone\":\"Asia/Makassar\"},\"SRJ\":{\"Timezone\":\"America/La_Paz\"},\"SRN\":{\"Timezone\":\"Australia/Melbourne\"},\"SRP\":{\"Timezone\":\"Europe/Oslo\"},\"SRQ\":{\"Timezone\":\"America/New_York\"},\"SRT\":{\"Timezone\":\"Africa/Kampala\"},\"SRX\":{\"Timezone\":\"Africa/Tripoli\"},\"SRY\":{\"Timezone\":\"Asia/Tehran\"},\"SRZ\":{\"Timezone\":\"America/La_Paz\"},\"SSA\":{\"Timezone\":\"America/Fortaleza\"},\"SSC\":{\"Timezone\":\"America/New_York\"},\"SSE\":{\"Timezone\":\"Asia/Calcutta\"},\"SSF\":{\"Timezone\":null},\"SSG\":{\"Timezone\":\"Africa/Malabo\"},\"SSH\":{\"Timezone\":\"Africa/Cairo\"},\"SSI\":{\"Timezone\":\"America/New_York\"},\"SSJ\":{\"Timezone\":\"Europe/Oslo\"},\"SSN\":{\"Timezone\":\"Asia/Seoul\"},\"SSR\":{\"Timezone\":\"Pacific/Efate\"},\"SST\":{\"Timezone\":\"America/Buenos_Aires\"},\"SSY\":{\"Timezone\":\"Africa/Luanda\"},\"SSZ\":{\"Timezone\":\"America/Sao_Paulo\"},\"STA\":{\"Timezone\":\"Europe/Copenhagen\"},\"STB\":{\"Timezone\":\"America/Caracas\"},\"STC\":{\"Timezone\":\"America/Chicago\"},\"STD\":{\"Timezone\":\"America/Caracas\"},\"STE\":{\"Timezone\":\"America/Chicago\"},\"STG\":{\"Timezone\":\"America/Anchorage\"},\"STI\":{\"Timezone\":\"America/Santo_Domingo\"},\"STJ\":{\"Timezone\":\"America/Chicago\"},\"STK\":{\"Timezone\":\"America/Denver\"},\"STL\":{\"Timezone\":\"America/Chicago\"},\"STM\":{\"Timezone\":\"America/Belem\"},\"STN\":{\"Timezone\":\"Europe/London\"},\"STP\":{\"Timezone\":\"America/Chicago\"},\"STR\":{\"Timezone\":\"Europe/Berlin\"},\"STS\":{\"Timezone\":\"America/Los_Angeles\"},\"STT\":{\"Timezone\":\"America/St_Thomas\"},\"STV\":{\"Timezone\":\"Asia/Calcutta\"},\"STW\":{\"Timezone\":\"Europe/Moscow\"},\"STX\":{\"Timezone\":\"America/St_Thomas\"},\"STY\":{\"Timezone\":\"America/Montevideo\"},\"STZ\":{\"Timezone\":\"America/Campo_Grande\"},\"SUA\":{\"Timezone\":\"America/New_York\"},\"SUB\":{\"Timezone\":\"Asia/Jakarta\"},\"SUF\":{\"Timezone\":\"Europe/Rome\"},\"SUG\":{\"Timezone\":\"Asia/Manila\"},\"SUI\":{\"Timezone\":\"Asia/Tbilisi\"},\"SUJ\":{\"Timezone\":\"Europe/Bucharest\"},\"SUK\":{\"Timezone\":null},\"SUL\":{\"Timezone\":\"Asia/Karachi\"},\"SUN\":{\"Timezone\":\"America/Denver\"},\"SUP\":{\"Timezone\":null},\"SUR\":{\"Timezone\":\"America/Toronto\"},\"SUS\":{\"Timezone\":\"America/Chicago\"},\"SUU\":{\"Timezone\":\"America/Los_Angeles\"},\"SUV\":{\"Timezone\":\"Pacific/Fiji\"},\"SUX\":{\"Timezone\":\"America/Chicago\"},\"SUY\":{\"Timezone\":\"Asia/Yakutsk\"},\"SVA\":{\"Timezone\":\"America/Anchorage\"},\"SVB\":{\"Timezone\":\"Indian/Antananarivo\"},\"SVD\":{\"Timezone\":\"America/St_Vincent\"},\"SVG\":{\"Timezone\":\"Europe/Oslo\"},\"SVH\":{\"Timezone\":\"America/New_York\"},\"SVI\":{\"Timezone\":\"America/Bogota\"},\"SVJ\":{\"Timezone\":\"Europe/Oslo\"},\"SVL\":{\"Timezone\":\"Europe/Helsinki\"},\"SVN\":{\"Timezone\":\"America/New_York\"},\"SVO\":{\"Timezone\":\"Europe/Moscow\"},\"SVP\":{\"Timezone\":\"Africa/Luanda\"},\"SVQ\":{\"Timezone\":\"Europe/Madrid\"},\"SVU\":{\"Timezone\":\"Pacific/Fiji\"},\"SVW\":{\"Timezone\":\"America/Anchorage\"},\"SVX\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"SVZ\":{\"Timezone\":\"America/Caracas\"},\"SWA\":{\"Timezone\":\"Asia/Shanghai\"},\"SWC\":{\"Timezone\":null},\"SWD\":{\"Timezone\":\"America/Anchorage\"},\"SWF\":{\"Timezone\":\"America/New_York\"},\"SWH\":{\"Timezone\":null},\"SWJ\":{\"Timezone\":\"Pacific/Efate\"},\"SWO\":{\"Timezone\":\"America/Chicago\"},\"SWP\":{\"Timezone\":\"Africa/Windhoek\"},\"SWQ\":{\"Timezone\":\"Asia/Makassar\"},\"SWS\":{\"Timezone\":\"Europe/London\"},\"SWT\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"SWU\":{\"Timezone\":\"Asia/Seoul\"},\"SWX\":{\"Timezone\":\"Africa/Gaborone\"},\"SXB\":{\"Timezone\":\"Europe/Paris\"},\"SXE\":{\"Timezone\":null},\"SXF\":{\"Timezone\":\"Europe/Berlin\"},\"SXI\":{\"Timezone\":\"Asia/Tehran\"},\"SXJ\":{\"Timezone\":null},\"SXK\":{\"Timezone\":null},\"SXL\":{\"Timezone\":\"Europe/Dublin\"},\"SXM\":{\"Timezone\":\"America/Curacao\"},\"SXN\":{\"Timezone\":null},\"SXO\":{\"Timezone\":\"America/Campo_Grande\"},\"SXQ\":{\"Timezone\":\"America/Anchorage\"},\"SXR\":{\"Timezone\":\"Asia/Calcutta\"},\"SXV\":{\"Timezone\":\"Asia/Calcutta\"},\"SXX\":{\"Timezone\":\"America/Belem\"},\"SXZ\":{\"Timezone\":\"Europe/Istanbul\"},\"SYA\":{\"Timezone\":\"America/Adak\"},\"SYD\":{\"Timezone\":\"Australia/Sydney\"},\"SYH\":{\"Timezone\":\"Asia/Katmandu\"},\"SYJ\":{\"Timezone\":\"Asia/Tehran\"},\"SYM\":{\"Timezone\":\"Asia/Shanghai\"},\"SYO\":{\"Timezone\":\"Asia/Tokyo\"},\"SYP\":{\"Timezone\":\"America/Panama\"},\"SYQ\":{\"Timezone\":\"America/Costa_Rica\"},\"SYR\":{\"Timezone\":\"America/New_York\"},\"SYS\":{\"Timezone\":\"Asia/Yakutsk\"},\"SYT\":{\"Timezone\":\"Europe/Paris\"},\"SYU\":{\"Timezone\":\"Australia/Brisbane\"},\"SYW\":{\"Timezone\":\"Asia/Karachi\"},\"SYX\":{\"Timezone\":\"Asia/Shanghai\"},\"SYY\":{\"Timezone\":\"Europe/London\"},\"SYZ\":{\"Timezone\":\"Asia/Tehran\"},\"SZA\":{\"Timezone\":\"Africa/Luanda\"},\"SZB\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"SZF\":{\"Timezone\":\"Europe/Istanbul\"},\"SZG\":{\"Timezone\":\"Europe/Vienna\"},\"SZJ\":{\"Timezone\":\"America/Havana\"},\"SZK\":{\"Timezone\":\"Africa/Johannesburg\"},\"SZL\":{\"Timezone\":\"America/Chicago\"},\"SZR\":{\"Timezone\":\"Europe/Sofia\"},\"SZS\":{\"Timezone\":\"Pacific/Auckland\"},\"SZT\":{\"Timezone\":\"America/Mexico_City\"},\"SZV\":{\"Timezone\":\"Asia/Shanghai\"},\"SZW\":{\"Timezone\":\"Europe/Berlin\"},\"SZX\":{\"Timezone\":\"Asia/Shanghai\"},\"SZY\":{\"Timezone\":null},\"SZZ\":{\"Timezone\":\"Europe/Warsaw\"},\"TAB\":{\"Timezone\":\"America/Port_of_Spain\"},\"TAC\":{\"Timezone\":\"Asia/Manila\"},\"TAE\":{\"Timezone\":\"Asia/Seoul\"},\"TAF\":{\"Timezone\":\"Africa/Algiers\"},\"TAG\":{\"Timezone\":\"Asia/Manila\"},\"TAH\":{\"Timezone\":\"Pacific/Efate\"},\"TAI\":{\"Timezone\":\"Asia/Aden\"},\"TAK\":{\"Timezone\":\"Asia/Tokyo\"},\"TAM\":{\"Timezone\":\"America/Mexico_City\"},\"TAO\":{\"Timezone\":\"Asia/Shanghai\"},\"TAP\":{\"Timezone\":\"America/Mexico_City\"},\"TAR\":{\"Timezone\":\"Europe/Rome\"},\"TAS\":{\"Timezone\":\"Asia/Samarkand\"},\"TAT\":{\"Timezone\":\"Europe/Bratislava\"},\"TAY\":{\"Timezone\":\"Europe/Tallinn\"},\"TAZ\":{\"Timezone\":\"Asia/Ashgabat\"},\"TBB\":{\"Timezone\":\"Asia/Saigon\"},\"TBF\":{\"Timezone\":null},\"TBG\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"TBH\":{\"Timezone\":\"Asia/Manila\"},\"TBI\":{\"Timezone\":\"America/Nassau\"},\"TBJ\":{\"Timezone\":\"Africa/Tunis\"},\"TBN\":{\"Timezone\":\"America/Chicago\"},\"TBO\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"TBP\":{\"Timezone\":\"America/Lima\"},\"TBR\":{\"Timezone\":null},\"TBS\":{\"Timezone\":\"Asia/Tbilisi\"},\"TBT\":{\"Timezone\":\"America/Boa_Vista\"},\"TBU\":{\"Timezone\":\"Pacific/Tongatapu\"},\"TBW\":{\"Timezone\":\"Europe/Moscow\"},\"TBZ\":{\"Timezone\":\"Asia/Tehran\"},\"TCA\":{\"Timezone\":\"Australia/Darwin\"},\"TCB\":{\"Timezone\":\"America/Nassau\"},\"TCC\":{\"Timezone\":\"America/Denver\"},\"TCE\":{\"Timezone\":\"Europe/Bucharest\"},\"TCG\":{\"Timezone\":\"Asia/Shanghai\"},\"TCH\":{\"Timezone\":\"Africa/Libreville\"},\"TCL\":{\"Timezone\":\"America/Chicago\"},\"TCM\":{\"Timezone\":\"America/Los_Angeles\"},\"TCN\":{\"Timezone\":\"America/Mexico_City\"},\"TCO\":{\"Timezone\":\"America/Bogota\"},\"TCP\":{\"Timezone\":\"Africa/Cairo\"},\"TCQ\":{\"Timezone\":\"America/Lima\"},\"TCS\":{\"Timezone\":\"America/Denver\"},\"TCX\":{\"Timezone\":\"Asia/Tehran\"},\"TCZ\":{\"Timezone\":\"Asia/Shanghai\"},\"TDD\":{\"Timezone\":\"America/La_Paz\"},\"TDG\":{\"Timezone\":\"Asia/Manila\"},\"TDJ\":{\"Timezone\":\"Africa/Djibouti\"},\"TDL\":{\"Timezone\":\"America/Buenos_Aires\"},\"TDR\":{\"Timezone\":\"Australia/Brisbane\"},\"TDS\":{\"Timezone\":null},\"TDX\":{\"Timezone\":\"Asia/Bangkok\"},\"TEA\":{\"Timezone\":\"America/Tegucigalpa\"},\"TEB\":{\"Timezone\":\"America/New_York\"},\"TEC\":{\"Timezone\":\"America/Sao_Paulo\"},\"TED\":{\"Timezone\":\"Europe/Copenhagen\"},\"TEE\":{\"Timezone\":\"Africa/Algiers\"},\"TEF\":{\"Timezone\":\"Australia/Perth\"},\"TEI\":{\"Timezone\":null},\"TEM\":{\"Timezone\":\"Australia/Sydney\"},\"TEN\":{\"Timezone\":\"Asia/Shanghai\"},\"TEQ\":{\"Timezone\":\"Europe/Istanbul\"},\"TER\":{\"Timezone\":\"Atlantic/Azores\"},\"TET\":{\"Timezone\":\"Africa/Maputo\"},\"TEU\":{\"Timezone\":\"Pacific/Auckland\"},\"TEV\":{\"Timezone\":null},\"TEX\":{\"Timezone\":\"America/Denver\"},\"TEZ\":{\"Timezone\":\"Asia/Calcutta\"},\"TFF\":{\"Timezone\":\"America/Boa_Vista\"},\"TFL\":{\"Timezone\":null},\"TFN\":{\"Timezone\":\"Atlantic/Canary\"},\"TFS\":{\"Timezone\":\"Atlantic/Canary\"},\"TGA\":{\"Timezone\":\"Asia/Singapore\"},\"TGD\":{\"Timezone\":\"Europe/Podgorica\"},\"TGG\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"TGH\":{\"Timezone\":\"Pacific/Efate\"},\"TGI\":{\"Timezone\":\"America/Lima\"},\"TGJ\":{\"Timezone\":\"Pacific/Noumea\"},\"TGK\":{\"Timezone\":\"Europe/Moscow\"},\"TGM\":{\"Timezone\":\"Europe/Bucharest\"},\"TGN\":{\"Timezone\":null},\"TGO\":{\"Timezone\":\"Asia/Shanghai\"},\"TGP\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"TGQ\":{\"Timezone\":null},\"TGR\":{\"Timezone\":\"Africa/Algiers\"},\"TGT\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"TGU\":{\"Timezone\":\"America/Tegucigalpa\"},\"TGZ\":{\"Timezone\":\"America/Mexico_City\"},\"THE\":{\"Timezone\":\"America/Fortaleza\"},\"THF\":{\"Timezone\":\"Europe/Berlin\"},\"THG\":{\"Timezone\":\"Australia/Brisbane\"},\"THL\":{\"Timezone\":\"Asia/Rangoon\"},\"THN\":{\"Timezone\":\"Europe/Stockholm\"},\"THO\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"THQ\":{\"Timezone\":\"Asia/Shanghai\"},\"THR\":{\"Timezone\":\"Asia/Tehran\"},\"THS\":{\"Timezone\":\"Asia/Bangkok\"},\"THU\":{\"Timezone\":\"America/Thule\"},\"THX\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"THZ\":{\"Timezone\":\"Africa/Niamey\"},\"TIA\":{\"Timezone\":\"Europe/Tirane\"},\"TID\":{\"Timezone\":\"Africa/Algiers\"},\"TIE\":{\"Timezone\":\"Africa/Addis_Ababa\"},\"TIF\":{\"Timezone\":\"Asia/Riyadh\"},\"TIH\":{\"Timezone\":\"Pacific/Tahiti\"},\"TII\":{\"Timezone\":\"Asia/Kabul\"},\"TIJ\":{\"Timezone\":\"America/Tijuana\"},\"TIK\":{\"Timezone\":\"America/Chicago\"},\"TIM\":{\"Timezone\":\"Asia/Jayapura\"},\"TIN\":{\"Timezone\":\"Africa/Algiers\"},\"TIP\":{\"Timezone\":\"Africa/Tripoli\"},\"TIQ\":{\"Timezone\":\"Pacific/Saipan\"},\"TIR\":{\"Timezone\":\"Asia/Calcutta\"},\"TIU\":{\"Timezone\":\"Pacific/Auckland\"},\"TIV\":{\"Timezone\":\"Europe/Podgorica\"},\"TIW\":{\"Timezone\":\"America/Los_Angeles\"},\"TIX\":{\"Timezone\":\"America/New_York\"},\"TIY\":{\"Timezone\":\"Africa/Nouakchott\"},\"TIZ\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"TJA\":{\"Timezone\":\"America/La_Paz\"},\"TJB\":{\"Timezone\":null},\"TJG\":{\"Timezone\":\"Asia/Makassar\"},\"TJH\":{\"Timezone\":\"Asia/Tokyo\"},\"TJI\":{\"Timezone\":\"America/Tegucigalpa\"},\"TJK\":{\"Timezone\":\"Europe/Istanbul\"},\"TJL\":{\"Timezone\":\"America/Campo_Grande\"},\"TJM\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"TJQ\":{\"Timezone\":\"Asia/Jakarta\"},\"TJS\":{\"Timezone\":\"Asia/Makassar\"},\"TJU\":{\"Timezone\":\"Asia/Dushanbe\"},\"TJV\":{\"Timezone\":\"Asia/Calcutta\"},\"TKA\":{\"Timezone\":\"America/Anchorage\"},\"TKC\":{\"Timezone\":\"Africa/Douala\"},\"TKD\":{\"Timezone\":\"Africa/Accra\"},\"TKF\":{\"Timezone\":\"America/Los_Angeles\"},\"TKG\":{\"Timezone\":\"Asia/Jakarta\"},\"TKH\":{\"Timezone\":\"Asia/Bangkok\"},\"TKJ\":{\"Timezone\":\"America/Anchorage\"},\"TKK\":{\"Timezone\":\"Pacific/Truk\"},\"TKN\":{\"Timezone\":\"Asia/Tokyo\"},\"TKP\":{\"Timezone\":\"Pacific/Tahiti\"},\"TKQ\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"TKS\":{\"Timezone\":\"Asia/Tokyo\"},\"TKT\":{\"Timezone\":\"Asia/Bangkok\"},\"TKU\":{\"Timezone\":\"Europe/Helsinki\"},\"TKV\":{\"Timezone\":null},\"TKX\":{\"Timezone\":\"Pacific/Tahiti\"},\"TLA\":{\"Timezone\":\"America/Anchorage\"},\"TLC\":{\"Timezone\":\"America/Mexico_City\"},\"TLD\":{\"Timezone\":\"Africa/Gaborone\"},\"TLE\":{\"Timezone\":\"Indian/Antananarivo\"},\"TLH\":{\"Timezone\":\"America/New_York\"},\"TLI\":{\"Timezone\":null},\"TLJ\":{\"Timezone\":\"America/Anchorage\"},\"TLK\":{\"Timezone\":null},\"TLL\":{\"Timezone\":\"Europe/Tallinn\"},\"TLM\":{\"Timezone\":\"Africa/Algiers\"},\"TLN\":{\"Timezone\":\"Europe/Paris\"},\"TLQ\":{\"Timezone\":\"Asia/Shanghai\"},\"TLS\":{\"Timezone\":\"Europe/Paris\"},\"TLU\":{\"Timezone\":\"America/Bogota\"},\"TLV\":{\"Timezone\":\"Asia/Jerusalem\"},\"TLX\":{\"Timezone\":null},\"TMA\":{\"Timezone\":\"America/New_York\"},\"TMB\":{\"Timezone\":\"America/New_York\"},\"TMC\":{\"Timezone\":\"Asia/Makassar\"},\"TME\":{\"Timezone\":\"America/Bogota\"},\"TMF\":{\"Timezone\":null},\"TMG\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"TMH\":{\"Timezone\":null},\"TMI\":{\"Timezone\":\"Asia/Katmandu\"},\"TMJ\":{\"Timezone\":\"Asia/Samarkand\"},\"TML\":{\"Timezone\":\"Africa/Accra\"},\"TMM\":{\"Timezone\":\"Indian/Antananarivo\"},\"TMN\":{\"Timezone\":\"Pacific/Tarawa\"},\"TMO\":{\"Timezone\":\"America/Caracas\"},\"TMP\":{\"Timezone\":\"Europe/Helsinki\"},\"TMR\":{\"Timezone\":\"Africa/Algiers\"},\"TMS\":{\"Timezone\":\"Africa/Sao_Tome\"},\"TMT\":{\"Timezone\":\"America/Belem\"},\"TMU\":{\"Timezone\":\"America/Costa_Rica\"},\"TMW\":{\"Timezone\":\"Australia/Sydney\"},\"TMX\":{\"Timezone\":\"Africa/Algiers\"},\"TNA\":{\"Timezone\":\"Asia/Shanghai\"},\"TNC\":{\"Timezone\":\"America/Anchorage\"},\"TND\":{\"Timezone\":\"America/Havana\"},\"TNE\":{\"Timezone\":\"Asia/Tokyo\"},\"TNF\":{\"Timezone\":\"Europe/Paris\"},\"TNG\":{\"Timezone\":\"Africa/Casablanca\"},\"TNH\":{\"Timezone\":\"Asia/Shanghai\"},\"TNI\":{\"Timezone\":\"Asia/Calcutta\"},\"TNJ\":{\"Timezone\":\"Asia/Jakarta\"},\"TNM\":{\"Timezone\":\"Antarctica/South_Pole\"},\"TNN\":{\"Timezone\":\"Asia/Taipei\"},\"TNR\":{\"Timezone\":\"Indian/Antananarivo\"},\"TNT\":{\"Timezone\":\"America/New_York\"},\"TNW\":{\"Timezone\":null},\"TNX\":{\"Timezone\":\"Asia/Phnom_Penh\"},\"TOA\":{\"Timezone\":\"America/Los_Angeles\"},\"TOB\":{\"Timezone\":\"Africa/Tripoli\"},\"TOC\":{\"Timezone\":\"America/New_York\"},\"TOD\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"TOE\":{\"Timezone\":\"Africa/Tunis\"},\"TOF\":{\"Timezone\":\"Asia/Krasnoyarsk\"},\"TOG\":{\"Timezone\":\"America/Anchorage\"},\"TOH\":{\"Timezone\":\"Pacific/Efate\"},\"TOI\":{\"Timezone\":null},\"TOJ\":{\"Timezone\":\"Europe/Madrid\"},\"TOL\":{\"Timezone\":\"America/New_York\"},\"TOM\":{\"Timezone\":\"Africa/Bamako\"},\"TOO\":{\"Timezone\":\"America/Costa_Rica\"},\"TOP\":{\"Timezone\":\"America/Chicago\"},\"TOQ\":{\"Timezone\":null},\"TOS\":{\"Timezone\":\"Europe/Oslo\"},\"TOT\":{\"Timezone\":\"America/Paramaribo\"},\"TOU\":{\"Timezone\":\"Pacific/Noumea\"},\"TOW\":{\"Timezone\":\"America/Sao_Paulo\"},\"TOY\":{\"Timezone\":\"Asia/Tokyo\"},\"TPA\":{\"Timezone\":\"America/New_York\"},\"TPC\":{\"Timezone\":\"America/Guayaquil\"},\"TPE\":{\"Timezone\":\"Asia/Taipei\"},\"TPF\":{\"Timezone\":null},\"TPH\":{\"Timezone\":null},\"TPJ\":{\"Timezone\":\"Asia/Katmandu\"},\"TPL\":{\"Timezone\":\"America/Chicago\"},\"TPN\":{\"Timezone\":\"America/Guayaquil\"},\"TPP\":{\"Timezone\":\"America/Lima\"},\"TPQ\":{\"Timezone\":\"America/Mazatlan\"},\"TPS\":{\"Timezone\":\"Europe/Rome\"},\"TQD\":{\"Timezone\":\"Asia/Baghdad\"},\"TQL\":{\"Timezone\":null},\"TQQ\":{\"Timezone\":\"Asia/Makassar\"},\"TQS\":{\"Timezone\":null},\"TRA\":{\"Timezone\":\"Asia/Tokyo\"},\"TRC\":{\"Timezone\":\"America/Mexico_City\"},\"TRD\":{\"Timezone\":\"Europe/Oslo\"},\"TRE\":{\"Timezone\":\"Europe/London\"},\"TRF\":{\"Timezone\":\"Europe/Oslo\"},\"TRG\":{\"Timezone\":\"Pacific/Auckland\"},\"TRI\":{\"Timezone\":\"America/New_York\"},\"TRK\":{\"Timezone\":\"Asia/Makassar\"},\"TRM\":{\"Timezone\":\"America/Los_Angeles\"},\"TRN\":{\"Timezone\":\"Europe/Rome\"},\"TRO\":{\"Timezone\":\"Australia/Sydney\"},\"TRQ\":{\"Timezone\":\"America/Rio_Branco\"},\"TRR\":{\"Timezone\":\"Asia/Colombo\"},\"TRS\":{\"Timezone\":\"Europe/Rome\"},\"TRU\":{\"Timezone\":\"America/Lima\"},\"TRV\":{\"Timezone\":\"Asia/Calcutta\"},\"TRW\":{\"Timezone\":\"Pacific/Tarawa\"},\"TRZ\":{\"Timezone\":\"Asia/Calcutta\"},\"TSA\":{\"Timezone\":\"Asia/Taipei\"},\"TSB\":{\"Timezone\":\"Africa/Windhoek\"},\"TSE\":{\"Timezone\":\"Asia/Qyzylorda\"},\"TSF\":{\"Timezone\":\"Europe/Rome\"},\"TSH\":{\"Timezone\":\"Africa/Lubumbashi\"},\"TSJ\":{\"Timezone\":\"Asia/Tokyo\"},\"TSL\":{\"Timezone\":\"America/Mexico_City\"},\"TSM\":{\"Timezone\":null},\"TSN\":{\"Timezone\":\"Asia/Shanghai\"},\"TSR\":{\"Timezone\":\"Europe/Bucharest\"},\"TST\":{\"Timezone\":\"Asia/Bangkok\"},\"TSU\":{\"Timezone\":\"Pacific/Tarawa\"},\"TSV\":{\"Timezone\":\"Australia/Brisbane\"},\"TSX\":{\"Timezone\":\"Asia/Makassar\"},\"TSY\":{\"Timezone\":\"Asia/Jakarta\"},\"TTA\":{\"Timezone\":\"Africa/Casablanca\"},\"TTB\":{\"Timezone\":\"Europe/Rome\"},\"TTC\":{\"Timezone\":null},\"TTD\":{\"Timezone\":\"America/Los_Angeles\"},\"TTE\":{\"Timezone\":\"Asia/Jayapura\"},\"TTG\":{\"Timezone\":\"America/Argentina/Salta\"},\"TTH\":{\"Timezone\":\"Asia/Muscat\"},\"TTI\":{\"Timezone\":\"Pacific/Tahiti\"},\"TTJ\":{\"Timezone\":\"Asia/Tokyo\"},\"TTL\":{\"Timezone\":null},\"TTN\":{\"Timezone\":\"America/New_York\"},\"TTQ\":{\"Timezone\":\"America/Costa_Rica\"},\"TTR\":{\"Timezone\":\"Asia/Makassar\"},\"TTT\":{\"Timezone\":\"Asia/Taipei\"},\"TTU\":{\"Timezone\":\"Africa/Casablanca\"},\"TUA\":{\"Timezone\":\"America/Guayaquil\"},\"TUB\":{\"Timezone\":\"Pacific/Tahiti\"},\"TUC\":{\"Timezone\":\"America/Argentina/Tucuman\"},\"TUD\":{\"Timezone\":\"Africa/Dakar\"},\"TUF\":{\"Timezone\":\"Europe/Paris\"},\"TUG\":{\"Timezone\":\"Asia/Manila\"},\"TUI\":{\"Timezone\":\"Asia/Riyadh\"},\"TUK\":{\"Timezone\":\"Asia/Karachi\"},\"TUL\":{\"Timezone\":\"America/Chicago\"},\"TUM\":{\"Timezone\":null},\"TUN\":{\"Timezone\":\"Africa/Tunis\"},\"TUO\":{\"Timezone\":\"Pacific/Auckland\"},\"TUP\":{\"Timezone\":\"America/Chicago\"},\"TUR\":{\"Timezone\":\"America/Belem\"},\"TUS\":{\"Timezone\":\"America/Phoenix\"},\"TUU\":{\"Timezone\":\"Asia/Riyadh\"},\"TUV\":{\"Timezone\":\"America/Caracas\"},\"TVA\":{\"Timezone\":\"Indian/Antananarivo\"},\"TVC\":{\"Timezone\":\"America/New_York\"},\"TVF\":{\"Timezone\":\"America/Chicago\"},\"TVI\":{\"Timezone\":\"America/New_York\"},\"TVL\":{\"Timezone\":\"America/Los_Angeles\"},\"TVU\":{\"Timezone\":\"Pacific/Fiji\"},\"TVY\":{\"Timezone\":\"Asia/Rangoon\"},\"TWB\":{\"Timezone\":\"Australia/Brisbane\"},\"TWF\":{\"Timezone\":\"America/Denver\"},\"TWT\":{\"Timezone\":\"Asia/Manila\"},\"TWU\":{\"Timezone\":\"Asia/Kuala_Lumpur\"},\"TWZ\":{\"Timezone\":\"Pacific/Auckland\"},\"TXF\":{\"Timezone\":null},\"TXG\":{\"Timezone\":\"Asia/Taipei\"},\"TXK\":{\"Timezone\":\"America/Chicago\"},\"TXL\":{\"Timezone\":\"Europe/Berlin\"},\"TXN\":{\"Timezone\":\"Asia/Shanghai\"},\"TYB\":{\"Timezone\":null},\"TYF\":{\"Timezone\":\"Europe/Stockholm\"},\"TYL\":{\"Timezone\":\"America/Lima\"},\"TYM\":{\"Timezone\":\"America/Nassau\"},\"TYN\":{\"Timezone\":\"Asia/Shanghai\"},\"TYR\":{\"Timezone\":\"America/Chicago\"},\"TYS\":{\"Timezone\":\"America/New_York\"},\"TZL\":{\"Timezone\":\"Europe/Sarajevo\"},\"TZR\":{\"Timezone\":\"Europe/Budapest\"},\"TZX\":{\"Timezone\":\"Europe/Istanbul\"},\"UAB\":{\"Timezone\":\"Europe/Istanbul\"},\"UAH\":{\"Timezone\":\"Pacific/Marquesas\"},\"UAI\":{\"Timezone\":\"Asia/Dili\"},\"UAK\":{\"Timezone\":\"America/Godthab\"},\"UAM\":{\"Timezone\":\"Pacific/Guam\"},\"UAP\":{\"Timezone\":\"Pacific/Marquesas\"},\"UAQ\":{\"Timezone\":\"America/Argentina/San_Juan\"},\"UAR\":{\"Timezone\":\"Africa/Casablanca\"},\"UAS\":{\"Timezone\":\"Africa/Nairobi\"},\"UBA\":{\"Timezone\":\"America/Sao_Paulo\"},\"UBB\":{\"Timezone\":\"Australia/Brisbane\"},\"UBJ\":{\"Timezone\":\"Asia/Tokyo\"},\"UBP\":{\"Timezone\":\"Asia/Bangkok\"},\"UBT\":{\"Timezone\":null},\"UCB\":{\"Timezone\":null},\"UCK\":{\"Timezone\":\"Europe/Kiev\"},\"UCT\":{\"Timezone\":\"Europe/Moscow\"},\"UDD\":{\"Timezone\":\"America/Los_Angeles\"},\"UDI\":{\"Timezone\":\"America/Sao_Paulo\"},\"UDJ\":{\"Timezone\":\"Europe/Kiev\"},\"UDR\":{\"Timezone\":\"Asia/Calcutta\"},\"UEL\":{\"Timezone\":\"Africa/Maputo\"},\"UEO\":{\"Timezone\":\"Asia/Tokyo\"},\"UET\":{\"Timezone\":\"Asia/Karachi\"},\"UFA\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"UGA\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"UGC\":{\"Timezone\":\"Asia/Samarkand\"},\"UGN\":{\"Timezone\":\"America/Chicago\"},\"UGO\":{\"Timezone\":\"Africa/Luanda\"},\"UHE\":{\"Timezone\":\"Europe/Prague\"},\"UIB\":{\"Timezone\":\"America/Bogota\"},\"UIH\":{\"Timezone\":\"Asia/Saigon\"},\"UII\":{\"Timezone\":\"America/Tegucigalpa\"},\"UIK\":{\"Timezone\":\"Asia/Irkutsk\"},\"UIN\":{\"Timezone\":\"America/Chicago\"},\"UIO\":{\"Timezone\":\"America/Guayaquil\"},\"UIP\":{\"Timezone\":\"Europe/Paris\"},\"UJE\":{\"Timezone\":\"Pacific/Majuro\"},\"UKA\":{\"Timezone\":\"Africa/Nairobi\"},\"UKB\":{\"Timezone\":\"Asia/Tokyo\"},\"UKG\":{\"Timezone\":null},\"UKI\":{\"Timezone\":null},\"UKK\":{\"Timezone\":\"Asia/Qyzylorda\"},\"UKS\":{\"Timezone\":\"Europe/Simferopol\"},\"UKT\":{\"Timezone\":null},\"UKX\":{\"Timezone\":\"Asia/Irkutsk\"},\"ULA\":{\"Timezone\":\"America/Argentina/Rio_Gallegos\"},\"ULB\":{\"Timezone\":\"Pacific/Efate\"},\"ULD\":{\"Timezone\":\"Africa/Johannesburg\"},\"ULG\":{\"Timezone\":\"Asia/Hovd\"},\"ULH\":{\"Timezone\":\"Asia/Riyadh\"},\"ULK\":{\"Timezone\":\"Asia/Yakutsk\"},\"ULN\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"ULO\":{\"Timezone\":\"Asia/Hovd\"},\"ULP\":{\"Timezone\":\"Australia/Brisbane\"},\"ULQ\":{\"Timezone\":\"America/Bogota\"},\"ULU\":{\"Timezone\":\"Africa/Kampala\"},\"ULV\":{\"Timezone\":\"Europe/Samara\"},\"ULY\":{\"Timezone\":\"Europe/Samara\"},\"ULZ\":{\"Timezone\":\"Asia/Ulaanbaatar\"},\"UMD\":{\"Timezone\":\"America/Godthab\"},\"UME\":{\"Timezone\":\"Europe/Stockholm\"},\"UMR\":{\"Timezone\":\"Australia/Adelaide\"},\"UMS\":{\"Timezone\":\"Asia/Yakutsk\"},\"UMU\":{\"Timezone\":\"America/Sao_Paulo\"},\"UNA\":{\"Timezone\":\"America/Fortaleza\"},\"UND\":{\"Timezone\":\"Asia/Kabul\"},\"UNG\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"UNI\":{\"Timezone\":\"America/St_Vincent\"},\"UNK\":{\"Timezone\":\"America/Anchorage\"},\"UNN\":{\"Timezone\":\"Asia/Bangkok\"},\"UNT\":{\"Timezone\":\"Europe/London\"},\"UOL\":{\"Timezone\":null},\"UOS\":{\"Timezone\":\"America/Chicago\"},\"UOX\":{\"Timezone\":null},\"UPB\":{\"Timezone\":\"America/Havana\"},\"UPG\":{\"Timezone\":\"Asia/Makassar\"},\"UPL\":{\"Timezone\":null},\"UPN\":{\"Timezone\":\"America/Mexico_City\"},\"UPP\":{\"Timezone\":\"Pacific/Honolulu\"},\"URA\":{\"Timezone\":\"Asia/Oral\"},\"URC\":{\"Timezone\":\"Asia/Shanghai\"},\"URD\":{\"Timezone\":\"Europe/Berlin\"},\"URE\":{\"Timezone\":\"Europe/Tallinn\"},\"URG\":{\"Timezone\":\"America/Sao_Paulo\"},\"URJ\":{\"Timezone\":\"Asia/Yekaterinburg\"},\"URO\":{\"Timezone\":\"Europe/Paris\"},\"URS\":{\"Timezone\":\"Europe/Moscow\"},\"URT\":{\"Timezone\":\"Asia/Bangkok\"},\"URY\":{\"Timezone\":\"Asia/Riyadh\"},\"USA\":{\"Timezone\":\"America/New_York\"},\"USH\":{\"Timezone\":\"America/Argentina/Ushuaia\"},\"USI\":{\"Timezone\":\"America/Guyana\"},\"USK\":{\"Timezone\":\"Europe/Moscow\"},\"USM\":{\"Timezone\":\"Asia/Bangkok\"},\"USN\":{\"Timezone\":\"Asia/Seoul\"},\"USQ\":{\"Timezone\":\"Europe/Istanbul\"},\"USR\":{\"Timezone\":\"Asia/Vladivostok\"},\"USS\":{\"Timezone\":\"America/Havana\"},\"UST\":{\"Timezone\":\"America/New_York\"},\"USU\":{\"Timezone\":\"Asia/Manila\"},\"UTA\":{\"Timezone\":\"Africa/Harare\"},\"UTC\":{\"Timezone\":\"Europe/Amsterdam\"},\"UTH\":{\"Timezone\":\"Asia/Bangkok\"},\"UTI\":{\"Timezone\":\"Europe/Helsinki\"},\"UTK\":{\"Timezone\":\"Pacific/Majuro\"},\"UTM\":{\"Timezone\":\"America/Chicago\"},\"UTN\":{\"Timezone\":\"Africa/Johannesburg\"},\"UTO\":{\"Timezone\":\"America/Anchorage\"},\"UTP\":{\"Timezone\":\"Asia/Bangkok\"},\"UTS\":{\"Timezone\":\"Europe/Moscow\"},\"UTT\":{\"Timezone\":\"Africa/Johannesburg\"},\"UTW\":{\"Timezone\":\"Africa/Johannesburg\"},\"UUA\":{\"Timezone\":\"Europe/Moscow\"},\"UUD\":{\"Timezone\":\"Asia/Irkutsk\"},\"UUK\":{\"Timezone\":\"America/Anchorage\"},\"UUN\":{\"Timezone\":null},\"UUS\":{\"Timezone\":\"Asia/Srednekolymsk\"},\"UVA\":{\"Timezone\":\"America/Chicago\"},\"UVE\":{\"Timezone\":\"Pacific/Noumea\"},\"UVF\":{\"Timezone\":\"America/St_Lucia\"},\"UYL\":{\"Timezone\":\"Africa/Khartoum\"},\"UYN\":{\"Timezone\":\"Asia/Shanghai\"},\"UYU\":{\"Timezone\":\"America/La_Paz\"},\"UZR\":{\"Timezone\":null},\"UZU\":{\"Timezone\":\"America/Cordoba\"},\"VAA\":{\"Timezone\":\"Europe/Helsinki\"},\"VAD\":{\"Timezone\":\"America/New_York\"},\"VAF\":{\"Timezone\":\"Europe/Paris\"},\"VAG\":{\"Timezone\":\"America/Sao_Paulo\"},\"VAI\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"VAK\":{\"Timezone\":\"America/Anchorage\"},\"VAL\":{\"Timezone\":\"America/Fortaleza\"},\"VAM\":{\"Timezone\":\"Indian/Maldives\"},\"VAN\":{\"Timezone\":\"Europe/Istanbul\"},\"VAO\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"VAR\":{\"Timezone\":\"Europe/Sofia\"},\"VAS\":{\"Timezone\":\"Europe/Istanbul\"},\"VAV\":{\"Timezone\":\"Pacific/Tongatapu\"},\"VAW\":{\"Timezone\":\"Europe/Oslo\"},\"VBA\":{\"Timezone\":\"Asia/Rangoon\"},\"VBG\":{\"Timezone\":\"America/Los_Angeles\"},\"VBP\":{\"Timezone\":\"Asia/Rangoon\"},\"VBS\":{\"Timezone\":\"Europe/Rome\"},\"VBV\":{\"Timezone\":\"Pacific/Fiji\"},\"VBY\":{\"Timezone\":\"Europe/Stockholm\"},\"VCA\":{\"Timezone\":\"Asia/Saigon\"},\"VCD\":{\"Timezone\":\"Australia/Darwin\"},\"VCE\":{\"Timezone\":\"Europe/Rome\"},\"VCL\":{\"Timezone\":\"Asia/Saigon\"},\"VCP\":{\"Timezone\":\"America/Sao_Paulo\"},\"VCR\":{\"Timezone\":\"America/Caracas\"},\"VCS\":{\"Timezone\":\"Asia/Saigon\"},\"VCT\":{\"Timezone\":\"America/Chicago\"},\"VCV\":{\"Timezone\":\"America/Los_Angeles\"},\"VDA\":{\"Timezone\":\"Asia/Jerusalem\"},\"VDB\":{\"Timezone\":\"Europe/Oslo\"},\"VDC\":{\"Timezone\":\"America/Fortaleza\"},\"VDE\":{\"Timezone\":\"Atlantic/Canary\"},\"VDH\":{\"Timezone\":\"Asia/Saigon\"},\"VDI\":{\"Timezone\":null},\"VDM\":{\"Timezone\":\"America/Argentina/Salta\"},\"VDP\":{\"Timezone\":\"America/Caracas\"},\"VDR\":{\"Timezone\":\"America/Cordoba\"},\"VDS\":{\"Timezone\":\"Europe/Oslo\"},\"VDY\":{\"Timezone\":null},\"VDZ\":{\"Timezone\":\"America/Anchorage\"},\"VEE\":{\"Timezone\":\"America/Anchorage\"},\"VEL\":{\"Timezone\":\"America/Denver\"},\"VER\":{\"Timezone\":\"America/Mexico_City\"},\"VEY\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"VFA\":{\"Timezone\":\"Africa/Harare\"},\"VGA\":{\"Timezone\":\"Asia/Calcutta\"},\"VGD\":{\"Timezone\":\"Europe/Moscow\"},\"VGO\":{\"Timezone\":\"Europe/Madrid\"},\"VGT\":{\"Timezone\":\"America/Los_Angeles\"},\"VGZ\":{\"Timezone\":\"America/Bogota\"},\"VHC\":{\"Timezone\":\"Africa/Luanda\"},\"VHM\":{\"Timezone\":\"Europe/Stockholm\"},\"VHV\":{\"Timezone\":null},\"VHY\":{\"Timezone\":\"Europe/Paris\"},\"VHZ\":{\"Timezone\":null},\"VIC\":{\"Timezone\":\"Europe/Rome\"},\"VIE\":{\"Timezone\":\"Europe/Vienna\"},\"VIG\":{\"Timezone\":\"America/Caracas\"},\"VII\":{\"Timezone\":\"Asia/Saigon\"},\"VIJ\":{\"Timezone\":\"America/Tortola\"},\"VIL\":{\"Timezone\":\"Africa/El_Aaiun\"},\"VIN\":{\"Timezone\":\"Europe/Kiev\"},\"VIR\":{\"Timezone\":\"Africa/Johannesburg\"},\"VIS\":{\"Timezone\":\"America/Los_Angeles\"},\"VIT\":{\"Timezone\":\"Europe/Madrid\"},\"VIX\":{\"Timezone\":\"America/Sao_Paulo\"},\"VIY\":{\"Timezone\":\"Europe/Paris\"},\"VKG\":{\"Timezone\":\"Asia/Saigon\"},\"VKO\":{\"Timezone\":\"Europe/Moscow\"},\"VKT\":{\"Timezone\":\"Europe/Moscow\"},\"VLC\":{\"Timezone\":\"Europe/Madrid\"},\"VLD\":{\"Timezone\":\"America/New_York\"},\"VLG\":{\"Timezone\":\"America/Buenos_Aires\"},\"VLI\":{\"Timezone\":\"Pacific/Efate\"},\"VLK\":{\"Timezone\":null},\"VLL\":{\"Timezone\":\"Europe/Madrid\"},\"VLM\":{\"Timezone\":\"America/La_Paz\"},\"VLN\":{\"Timezone\":\"America/Caracas\"},\"VLP\":{\"Timezone\":null},\"VLR\":{\"Timezone\":\"America/Santiago\"},\"VLS\":{\"Timezone\":\"Pacific/Efate\"},\"VLU\":{\"Timezone\":\"Europe/Moscow\"},\"VLV\":{\"Timezone\":\"America/Caracas\"},\"VLY\":{\"Timezone\":\"Europe/London\"},\"VME\":{\"Timezone\":\"America/Argentina/San_Luis\"},\"VMU\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"VNA\":{\"Timezone\":\"Asia/Vientiane\"},\"VNC\":{\"Timezone\":\"America/New_York\"},\"VNE\":{\"Timezone\":\"Europe/Paris\"},\"VNO\":{\"Timezone\":\"Europe/Vilnius\"},\"VNS\":{\"Timezone\":\"Asia/Calcutta\"},\"VNT\":{\"Timezone\":\"Europe/Riga\"},\"VNX\":{\"Timezone\":\"Africa/Maputo\"},\"VNY\":{\"Timezone\":\"America/Los_Angeles\"},\"VOD\":{\"Timezone\":\"Europe/Prague\"},\"VOG\":{\"Timezone\":\"Europe/Moscow\"},\"VOH\":{\"Timezone\":\"Indian/Antananarivo\"},\"VOK\":{\"Timezone\":\"America/Chicago\"},\"VOL\":{\"Timezone\":\"Europe/Athens\"},\"VOZ\":{\"Timezone\":\"Europe/Moscow\"},\"VPE\":{\"Timezone\":\"Africa/Luanda\"},\"VPN\":{\"Timezone\":\"Atlantic/Reykjavik\"},\"VPS\":{\"Timezone\":\"America/Chicago\"},\"VPY\":{\"Timezone\":\"Africa/Maputo\"},\"VPZ\":{\"Timezone\":null},\"VQQ\":{\"Timezone\":\"America/New_York\"},\"VQS\":{\"Timezone\":\"America/Puerto_Rico\"},\"VRA\":{\"Timezone\":\"America/Havana\"},\"VRB\":{\"Timezone\":\"America/New_York\"},\"VRC\":{\"Timezone\":\"Asia/Manila\"},\"VRE\":{\"Timezone\":\"Africa/Johannesburg\"},\"VRK\":{\"Timezone\":\"Europe/Helsinki\"},\"VRL\":{\"Timezone\":\"Europe/Lisbon\"},\"VRN\":{\"Timezone\":\"Europe/Rome\"},\"VRO\":{\"Timezone\":\"America/Havana\"},\"VRU\":{\"Timezone\":\"Africa/Johannesburg\"},\"VRY\":{\"Timezone\":\"Europe/Oslo\"},\"VSA\":{\"Timezone\":\"America/Mexico_City\"},\"VSE\":{\"Timezone\":\"Europe/Lisbon\"},\"VSG\":{\"Timezone\":\"Europe/Kiev\"},\"VST\":{\"Timezone\":\"Europe/Stockholm\"},\"VTB\":{\"Timezone\":\"Europe/Minsk\"},\"VTE\":{\"Timezone\":\"Asia/Vientiane\"},\"VTM\":{\"Timezone\":\"Asia/Jerusalem\"},\"VTN\":{\"Timezone\":null},\"VTU\":{\"Timezone\":\"America/Havana\"},\"VTZ\":{\"Timezone\":\"Asia/Calcutta\"},\"VUP\":{\"Timezone\":\"America/Bogota\"},\"VUS\":{\"Timezone\":\"Europe/Moscow\"},\"VVC\":{\"Timezone\":\"America/Bogota\"},\"VVI\":{\"Timezone\":\"America/La_Paz\"},\"VVO\":{\"Timezone\":\"Asia/Vladivostok\"},\"VVZ\":{\"Timezone\":\"Africa/Algiers\"},\"VXC\":{\"Timezone\":\"Africa/Maputo\"},\"VXE\":{\"Timezone\":\"Atlantic/Cape_Verde\"},\"VXO\":{\"Timezone\":\"Europe/Stockholm\"},\"VYI\":{\"Timezone\":null},\"VYS\":{\"Timezone\":\"America/Chicago\"},\"WAA\":{\"Timezone\":\"America/Anchorage\"},\"WAE\":{\"Timezone\":\"Asia/Riyadh\"},\"WAF\":{\"Timezone\":\"Asia/Karachi\"},\"WAG\":{\"Timezone\":\"Pacific/Auckland\"},\"WAI\":{\"Timezone\":\"Indian/Antananarivo\"},\"WAL\":{\"Timezone\":\"America/New_York\"},\"WAM\":{\"Timezone\":\"Indian/Antananarivo\"},\"WAQ\":{\"Timezone\":\"Indian/Antananarivo\"},\"WAR\":{\"Timezone\":\"Asia/Jayapura\"},\"WAT\":{\"Timezone\":\"Europe/Dublin\"},\"WAW\":{\"Timezone\":\"Europe/Warsaw\"},\"WBG\":{\"Timezone\":\"Europe/Berlin\"},\"WBM\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"WBQ\":{\"Timezone\":\"America/Anchorage\"},\"WBU\":{\"Timezone\":\"America/Denver\"},\"WBW\":{\"Timezone\":\"America/New_York\"},\"WCH\":{\"Timezone\":\"America/Santiago\"},\"WDH\":{\"Timezone\":\"Africa/Windhoek\"},\"WDR\":{\"Timezone\":\"America/New_York\"},\"WDS\":{\"Timezone\":null},\"WEF\":{\"Timezone\":\"Asia/Shanghai\"},\"WEH\":{\"Timezone\":\"Asia/Shanghai\"},\"WEI\":{\"Timezone\":\"Australia/Brisbane\"},\"WFI\":{\"Timezone\":\"Indian/Antananarivo\"},\"WFK\":{\"Timezone\":\"America/New_York\"},\"WGA\":{\"Timezone\":\"Australia/Sydney\"},\"WGE\":{\"Timezone\":\"Australia/Sydney\"},\"WGN\":{\"Timezone\":null},\"WGP\":{\"Timezone\":\"Asia/Makassar\"},\"WGT\":{\"Timezone\":null},\"WHF\":{\"Timezone\":\"Africa/Khartoum\"},\"WHK\":{\"Timezone\":\"Pacific/Auckland\"},\"WHP\":{\"Timezone\":\"America/Los_Angeles\"},\"WHU\":{\"Timezone\":null},\"WIC\":{\"Timezone\":\"Europe/London\"},\"WIE\":{\"Timezone\":\"Europe/Berlin\"},\"WIK\":{\"Timezone\":null},\"WIL\":{\"Timezone\":\"Africa/Nairobi\"},\"WIN\":{\"Timezone\":\"Australia/Brisbane\"},\"WIO\":{\"Timezone\":\"Australia/Sydney\"},\"WIR\":{\"Timezone\":\"Pacific/Auckland\"},\"WJF\":{\"Timezone\":null},\"WJR\":{\"Timezone\":\"Africa/Nairobi\"},\"WJU\":{\"Timezone\":\"Asia/Seoul\"},\"WKA\":{\"Timezone\":\"Pacific/Auckland\"},\"WKB\":{\"Timezone\":null},\"WKF\":{\"Timezone\":\"Africa/Johannesburg\"},\"WKI\":{\"Timezone\":null},\"WKJ\":{\"Timezone\":\"Asia/Tokyo\"},\"WKK\":{\"Timezone\":\"America/Anchorage\"},\"WKL\":{\"Timezone\":\"Pacific/Honolulu\"},\"WKR\":{\"Timezone\":null},\"WLD\":{\"Timezone\":\"America/Chicago\"},\"WLG\":{\"Timezone\":\"Pacific/Auckland\"},\"WLH\":{\"Timezone\":\"Pacific/Efate\"},\"WLK\":{\"Timezone\":\"America/Anchorage\"},\"WLS\":{\"Timezone\":\"Pacific/Wallis\"},\"WMA\":{\"Timezone\":\"Indian/Antananarivo\"},\"WMB\":{\"Timezone\":null},\"WMC\":{\"Timezone\":null},\"WME\":{\"Timezone\":\"Australia/Perth\"},\"WMH\":{\"Timezone\":null},\"WMI\":{\"Timezone\":\"Europe/Warsaw\"},\"WMN\":{\"Timezone\":\"Indian/Antananarivo\"},\"WMO\":{\"Timezone\":\"America/Anchorage\"},\"WMP\":{\"Timezone\":\"Indian/Antananarivo\"},\"WMR\":{\"Timezone\":\"Indian/Antananarivo\"},\"WMT\":{\"Timezone\":null},\"WMX\":{\"Timezone\":\"Asia/Jayapura\"},\"WNA\":{\"Timezone\":\"America/Anchorage\"},\"WNN\":{\"Timezone\":\"America/Toronto\"},\"WNP\":{\"Timezone\":\"Asia/Manila\"},\"WNR\":{\"Timezone\":\"Australia/Brisbane\"},\"WNS\":{\"Timezone\":\"Asia/Karachi\"},\"WNZ\":{\"Timezone\":\"Asia/Shanghai\"},\"WOE\":{\"Timezone\":\"Europe/Amsterdam\"},\"WOL\":{\"Timezone\":\"Australia/Sydney\"},\"WOS\":{\"Timezone\":null},\"WOT\":{\"Timezone\":\"Asia/Taipei\"},\"WPB\":{\"Timezone\":\"Indian/Antananarivo\"},\"WPC\":{\"Timezone\":null},\"WPR\":{\"Timezone\":\"America/Santiago\"},\"WPU\":{\"Timezone\":\"America/Santiago\"},\"WRB\":{\"Timezone\":\"America/New_York\"},\"WRE\":{\"Timezone\":\"Pacific/Auckland\"},\"WRG\":{\"Timezone\":\"America/Anchorage\"},\"WRI\":{\"Timezone\":\"America/New_York\"},\"WRL\":{\"Timezone\":\"America/Denver\"},\"WRO\":{\"Timezone\":\"Europe/Warsaw\"},\"WRT\":{\"Timezone\":\"Europe/London\"},\"WRY\":{\"Timezone\":\"Europe/London\"},\"WRZ\":{\"Timezone\":\"Asia/Colombo\"},\"WSD\":{\"Timezone\":\"America/Denver\"},\"WSN\":{\"Timezone\":\"America/Anchorage\"},\"WSO\":{\"Timezone\":\"America/Paramaribo\"},\"WSP\":{\"Timezone\":\"America/Managua\"},\"WSR\":{\"Timezone\":\"Asia/Jayapura\"},\"WST\":{\"Timezone\":\"America/New_York\"},\"WSY\":{\"Timezone\":\"Australia/Brisbane\"},\"WSZ\":{\"Timezone\":\"Pacific/Auckland\"},\"WTA\":{\"Timezone\":\"Indian/Antananarivo\"},\"WTB\":{\"Timezone\":\"Australia/Brisbane\"},\"WTK\":{\"Timezone\":\"America/Anchorage\"},\"WTN\":{\"Timezone\":\"Europe/London\"},\"WTS\":{\"Timezone\":\"Indian/Antananarivo\"},\"WTZ\":{\"Timezone\":\"Pacific/Auckland\"},\"WUA\":{\"Timezone\":\"Asia/Shanghai\"},\"WUH\":{\"Timezone\":\"Asia/Shanghai\"},\"WUN\":{\"Timezone\":\"Australia/Perth\"},\"WUS\":{\"Timezone\":\"Asia/Shanghai\"},\"WUT\":{\"Timezone\":null},\"WUU\":{\"Timezone\":\"Africa/Juba\"},\"WUX\":{\"Timezone\":\"Asia/Shanghai\"},\"WUZ\":{\"Timezone\":\"Asia/Shanghai\"},\"WVB\":{\"Timezone\":\"Africa/Windhoek\"},\"WVI\":{\"Timezone\":null},\"WVK\":{\"Timezone\":\"Indian/Antananarivo\"},\"WVN\":{\"Timezone\":\"Europe/Berlin\"},\"WWA\":{\"Timezone\":null},\"WWD\":{\"Timezone\":\"America/New_York\"},\"WWK\":{\"Timezone\":\"Pacific/Port_Moresby\"},\"WWR\":{\"Timezone\":null},\"WWY\":{\"Timezone\":null},\"WXN\":{\"Timezone\":\"Asia/Shanghai\"},\"WYA\":{\"Timezone\":\"Australia/Adelaide\"},\"WYE\":{\"Timezone\":\"Africa/Freetown\"},\"WYN\":{\"Timezone\":\"Australia/Perth\"},\"WYS\":{\"Timezone\":\"America/Denver\"},\"XAB\":{\"Timezone\":\"Europe/Paris\"},\"XAP\":{\"Timezone\":\"America/Sao_Paulo\"},\"XAU\":{\"Timezone\":\"America/Cayenne\"},\"XBE\":{\"Timezone\":\"America/Winnipeg\"},\"XBJ\":{\"Timezone\":\"Asia/Tehran\"},\"XCH\":{\"Timezone\":\"Indian/Christmas\"},\"XCR\":{\"Timezone\":\"Europe/Paris\"},\"XCZ\":{\"Timezone\":\"Europe/Paris\"},\"XFN\":{\"Timezone\":\"Asia/Shanghai\"},\"XFW\":{\"Timezone\":\"Europe/Berlin\"},\"XGN\":{\"Timezone\":\"Africa/Luanda\"},\"XGR\":{\"Timezone\":\"America/Toronto\"},\"XIC\":{\"Timezone\":\"Asia/Shanghai\"},\"XIJ\":{\"Timezone\":null},\"XIL\":{\"Timezone\":\"Asia/Shanghai\"},\"XIQ\":{\"Timezone\":null},\"XIY\":{\"Timezone\":\"Asia/Shanghai\"},\"XJD\":{\"Timezone\":\"Asia/Qatar\"},\"XJM\":{\"Timezone\":\"Asia/Karachi\"},\"XKH\":{\"Timezone\":\"Asia/Vientiane\"},\"XKS\":{\"Timezone\":\"America/Toronto\"},\"XLB\":{\"Timezone\":\"America/Winnipeg\"},\"XLS\":{\"Timezone\":\"Africa/Dakar\"},\"XMC\":{\"Timezone\":\"Australia/Hobart\"},\"XME\":{\"Timezone\":\"Europe/Paris\"},\"XMH\":{\"Timezone\":\"Pacific/Tahiti\"},\"XMN\":{\"Timezone\":\"Asia/Shanghai\"},\"XMS\":{\"Timezone\":\"America/Guayaquil\"},\"XMW\":{\"Timezone\":\"Europe/Paris\"},\"XMY\":{\"Timezone\":\"Australia/Brisbane\"},\"XNA\":{\"Timezone\":\"America/Chicago\"},\"XNN\":{\"Timezone\":\"Asia/Shanghai\"},\"XOG\":{\"Timezone\":\"Europe/Paris\"},\"XPK\":{\"Timezone\":null},\"XPL\":{\"Timezone\":null},\"XPP\":{\"Timezone\":null},\"XQC\":{\"Timezone\":\"Asia/Baghdad\"},\"XQP\":{\"Timezone\":\"America/Costa_Rica\"},\"XRH\":{\"Timezone\":\"Australia/Sydney\"},\"XRR\":{\"Timezone\":null},\"XRY\":{\"Timezone\":\"Europe/Madrid\"},\"XSB\":{\"Timezone\":\"Asia/Dubai\"},\"XSC\":{\"Timezone\":\"America/Grand_Turk\"},\"XSD\":{\"Timezone\":\"America/Los_Angeles\"},\"XSI\":{\"Timezone\":\"America/Winnipeg\"},\"XSP\":{\"Timezone\":\"Asia/Singapore\"},\"XTG\":{\"Timezone\":\"Australia/Brisbane\"},\"XTL\":{\"Timezone\":\"America/Winnipeg\"},\"XTO\":{\"Timezone\":null},\"XUZ\":{\"Timezone\":\"Asia/Shanghai\"},\"XVS\":{\"Timezone\":\"Europe/Paris\"},\"XXN\":{\"Timezone\":null},\"XYA\":{\"Timezone\":\"Pacific/Guadalcanal\"},\"XYE\":{\"Timezone\":\"Asia/Rangoon\"},\"YAA\":{\"Timezone\":\"America/Vancouver\"},\"YAB\":{\"Timezone\":\"America/Winnipeg\"},\"YAC\":{\"Timezone\":\"America/Winnipeg\"},\"YAG\":{\"Timezone\":\"America/Winnipeg\"},\"YAH\":{\"Timezone\":null},\"YAI\":{\"Timezone\":\"America/Santiago\"},\"YAK\":{\"Timezone\":\"America/Anchorage\"},\"YAL\":{\"Timezone\":null},\"YAM\":{\"Timezone\":\"America/Toronto\"},\"YAO\":{\"Timezone\":\"Africa/Douala\"},\"YAP\":{\"Timezone\":\"Pacific/Truk\"},\"YAS\":{\"Timezone\":null},\"YAT\":{\"Timezone\":\"America/Toronto\"},\"YAX\":{\"Timezone\":\"America/Winnipeg\"},\"YAY\":{\"Timezone\":\"America/St_Johns\"},\"YAZ\":{\"Timezone\":\"America/Vancouver\"},\"YBA\":{\"Timezone\":null},\"YBB\":{\"Timezone\":\"America/Edmonton\"},\"YBC\":{\"Timezone\":\"America/Toronto\"},\"YBE\":{\"Timezone\":\"America/Regina\"},\"YBG\":{\"Timezone\":\"America/Toronto\"},\"YBI\":{\"Timezone\":\"America/Halifax\"},\"YBK\":{\"Timezone\":\"America/Winnipeg\"},\"YBL\":{\"Timezone\":\"America/Vancouver\"},\"YBO\":{\"Timezone\":\"America/Vancouver\"},\"YBP\":{\"Timezone\":\"Asia/Shanghai\"},\"YBR\":{\"Timezone\":\"America/Winnipeg\"},\"YBS\":{\"Timezone\":null},\"YBT\":{\"Timezone\":\"America/Winnipeg\"},\"YBV\":{\"Timezone\":\"America/Winnipeg\"},\"YBW\":{\"Timezone\":\"America/Vancouver\"},\"YBX\":{\"Timezone\":\"America/Blanc-Sablon\"},\"YBY\":{\"Timezone\":\"America/Edmonton\"},\"YCB\":{\"Timezone\":\"America/Edmonton\"},\"YCC\":{\"Timezone\":\"America/Toronto\"},\"YCD\":{\"Timezone\":\"America/Vancouver\"},\"YCE\":{\"Timezone\":null},\"YCG\":{\"Timezone\":\"America/Vancouver\"},\"YCH\":{\"Timezone\":\"America/Halifax\"},\"YCK\":{\"Timezone\":\"America/Edmonton\"},\"YCL\":{\"Timezone\":\"America/Halifax\"},\"YCM\":{\"Timezone\":\"America/Toronto\"},\"YCN\":{\"Timezone\":\"America/Toronto\"},\"YCO\":{\"Timezone\":\"America/Edmonton\"},\"YCQ\":{\"Timezone\":null},\"YCR\":{\"Timezone\":\"America/Winnipeg\"},\"YCS\":{\"Timezone\":\"America/Winnipeg\"},\"YCT\":{\"Timezone\":\"America/Edmonton\"},\"YCU\":{\"Timezone\":\"Asia/Shanghai\"},\"YCW\":{\"Timezone\":\"America/Vancouver\"},\"YCY\":{\"Timezone\":\"America/Toronto\"},\"YDA\":{\"Timezone\":\"America/Vancouver\"},\"YDB\":{\"Timezone\":\"America/Vancouver\"},\"YDF\":{\"Timezone\":\"America/St_Johns\"},\"YDG\":{\"Timezone\":null},\"YDL\":{\"Timezone\":\"America/Vancouver\"},\"YDN\":{\"Timezone\":\"America/Winnipeg\"},\"YDO\":{\"Timezone\":null},\"YDP\":{\"Timezone\":\"America/Halifax\"},\"YDQ\":{\"Timezone\":\"America/Dawson_Creek\"},\"YDT\":{\"Timezone\":\"America/Vancouver\"},\"YEC\":{\"Timezone\":\"Asia/Seoul\"},\"YEG\":{\"Timezone\":\"America/Edmonton\"},\"YEI\":{\"Timezone\":\"Europe/Istanbul\"},\"YEK\":{\"Timezone\":\"America/Winnipeg\"},\"YEL\":{\"Timezone\":\"America/Toronto\"},\"YEM\":{\"Timezone\":\"America/Toronto\"},\"YEN\":{\"Timezone\":\"America/Regina\"},\"YEO\":{\"Timezone\":\"Europe/London\"},\"YER\":{\"Timezone\":\"America/Toronto\"},\"YES\":{\"Timezone\":\"Asia/Tehran\"},\"YET\":{\"Timezone\":\"America/Edmonton\"},\"YEU\":{\"Timezone\":\"America/Winnipeg\"},\"YEV\":{\"Timezone\":\"America/Edmonton\"},\"YEY\":{\"Timezone\":null},\"YFA\":{\"Timezone\":\"America/Toronto\"},\"YFB\":{\"Timezone\":\"America/Toronto\"},\"YFC\":{\"Timezone\":\"America/Halifax\"},\"YFE\":{\"Timezone\":\"America/Toronto\"},\"YFH\":{\"Timezone\":\"America/Toronto\"},\"YFJ\":{\"Timezone\":\"America/Edmonton\"},\"YFO\":{\"Timezone\":\"America/Winnipeg\"},\"YFR\":{\"Timezone\":\"America/Edmonton\"},\"YFS\":{\"Timezone\":\"America/Edmonton\"},\"YFX\":{\"Timezone\":\"America/St_Johns\"},\"YGB\":{\"Timezone\":\"America/Vancouver\"},\"YGG\":{\"Timezone\":\"America/Vancouver\"},\"YGH\":{\"Timezone\":\"America/Edmonton\"},\"YGJ\":{\"Timezone\":\"Asia/Tokyo\"},\"YGK\":{\"Timezone\":\"America/Toronto\"},\"YGL\":{\"Timezone\":\"America/Toronto\"},\"YGM\":{\"Timezone\":\"America/Winnipeg\"},\"YGO\":{\"Timezone\":\"America/Winnipeg\"},\"YGP\":{\"Timezone\":\"America/Toronto\"},\"YGQ\":{\"Timezone\":\"America/Toronto\"},\"YGR\":{\"Timezone\":\"America/Toronto\"},\"YGT\":{\"Timezone\":\"America/Toronto\"},\"YGV\":{\"Timezone\":\"America/Toronto\"},\"YGW\":{\"Timezone\":\"America/Toronto\"},\"YGX\":{\"Timezone\":\"America/Winnipeg\"},\"YGZ\":{\"Timezone\":\"America/Toronto\"},\"YHA\":{\"Timezone\":\"America/St_Johns\"},\"YHB\":{\"Timezone\":\"America/Regina\"},\"YHD\":{\"Timezone\":\"America/Winnipeg\"},\"YHE\":{\"Timezone\":null},\"YHF\":{\"Timezone\":\"America/Toronto\"},\"YHI\":{\"Timezone\":\"America/Edmonton\"},\"YHK\":{\"Timezone\":\"America/Edmonton\"},\"YHM\":{\"Timezone\":\"America/Toronto\"},\"YHN\":{\"Timezone\":\"America/Toronto\"},\"YHO\":{\"Timezone\":\"America/Halifax\"},\"YHP\":{\"Timezone\":\"America/Winnipeg\"},\"YHR\":{\"Timezone\":\"America/Blanc-Sablon\"},\"YHT\":{\"Timezone\":null},\"YHU\":{\"Timezone\":\"America/Toronto\"},\"YHY\":{\"Timezone\":\"America/Edmonton\"},\"YHZ\":{\"Timezone\":\"America/Halifax\"},\"YIB\":{\"Timezone\":\"America/Coral_Harbour\"},\"YIC\":{\"Timezone\":\"Asia/Shanghai\"},\"YIE\":{\"Timezone\":null},\"YIF\":{\"Timezone\":\"America/Blanc-Sablon\"},\"YIH\":{\"Timezone\":\"Asia/Shanghai\"},\"YIK\":{\"Timezone\":\"America/Toronto\"},\"YIN\":{\"Timezone\":\"Asia/Shanghai\"},\"YIO\":{\"Timezone\":\"America/Toronto\"},\"YIP\":{\"Timezone\":\"America/New_York\"},\"YIV\":{\"Timezone\":\"America/Winnipeg\"},\"YIW\":{\"Timezone\":\"Asia/Shanghai\"},\"YJF\":{\"Timezone\":null},\"YJN\":{\"Timezone\":\"America/Toronto\"},\"YJP\":{\"Timezone\":null},\"YJT\":{\"Timezone\":\"America/St_Johns\"},\"YKA\":{\"Timezone\":\"America/Vancouver\"},\"YKF\":{\"Timezone\":\"America/Toronto\"},\"YKG\":{\"Timezone\":\"America/Toronto\"},\"YKH\":{\"Timezone\":null},\"YKJ\":{\"Timezone\":null},\"YKL\":{\"Timezone\":\"America/Toronto\"},\"YKM\":{\"Timezone\":\"America/Los_Angeles\"},\"YKN\":{\"Timezone\":\"America/Chicago\"},\"YKO\":{\"Timezone\":null},\"YKQ\":{\"Timezone\":\"America/Toronto\"},\"YKS\":{\"Timezone\":\"Asia/Yakutsk\"},\"YKU\":{\"Timezone\":\"America/Toronto\"},\"YKX\":{\"Timezone\":\"America/Toronto\"},\"YKY\":{\"Timezone\":\"America/Regina\"},\"YKZ\":{\"Timezone\":\"America/Toronto\"},\"YLC\":{\"Timezone\":\"America/Toronto\"},\"YLD\":{\"Timezone\":\"America/Toronto\"},\"YLE\":{\"Timezone\":\"America/Edmonton\"},\"YLH\":{\"Timezone\":\"America/Toronto\"},\"YLI\":{\"Timezone\":\"Europe/Helsinki\"},\"YLJ\":{\"Timezone\":\"America/Regina\"},\"YLK\":{\"Timezone\":\"America/Toronto\"},\"YLL\":{\"Timezone\":\"America/Edmonton\"},\"YLR\":{\"Timezone\":null},\"YLT\":{\"Timezone\":\"America/Toronto\"},\"YLW\":{\"Timezone\":\"America/Vancouver\"},\"YLY\":{\"Timezone\":\"America/Vancouver\"},\"YMA\":{\"Timezone\":\"America/Vancouver\"},\"YME\":{\"Timezone\":null},\"YMG\":{\"Timezone\":\"America/Toronto\"},\"YMH\":{\"Timezone\":\"America/St_Johns\"},\"YMJ\":{\"Timezone\":\"America/Regina\"},\"YML\":{\"Timezone\":null},\"YMM\":{\"Timezone\":\"America/Edmonton\"},\"YMN\":{\"Timezone\":\"America/Halifax\"},\"YMO\":{\"Timezone\":\"America/Toronto\"},\"YMS\":{\"Timezone\":\"America/Lima\"},\"YMT\":{\"Timezone\":\"America/Toronto\"},\"YMW\":{\"Timezone\":\"America/Toronto\"},\"YMX\":{\"Timezone\":\"America/Toronto\"},\"YNA\":{\"Timezone\":\"America/Toronto\"},\"YNB\":{\"Timezone\":\"Asia/Riyadh\"},\"YNC\":{\"Timezone\":\"America/Toronto\"},\"YND\":{\"Timezone\":\"America/Toronto\"},\"YNE\":{\"Timezone\":\"America/Winnipeg\"},\"YNG\":{\"Timezone\":\"America/New_York\"},\"YNJ\":{\"Timezone\":\"Asia/Shanghai\"},\"YNL\":{\"Timezone\":\"America/Regina\"},\"YNM\":{\"Timezone\":\"America/Toronto\"},\"YNO\":{\"Timezone\":\"America/Winnipeg\"},\"YNP\":{\"Timezone\":\"America/Halifax\"},\"YNS\":{\"Timezone\":\"America/Toronto\"},\"YNT\":{\"Timezone\":\"Asia/Shanghai\"},\"YNY\":{\"Timezone\":\"Asia/Seoul\"},\"YNZ\":{\"Timezone\":\"Asia/Shanghai\"},\"YOA\":{\"Timezone\":\"America/Edmonton\"},\"YOC\":{\"Timezone\":\"America/Vancouver\"},\"YOD\":{\"Timezone\":\"America/Edmonton\"},\"YOG\":{\"Timezone\":\"America/Toronto\"},\"YOH\":{\"Timezone\":\"America/Winnipeg\"},\"YOJ\":{\"Timezone\":\"America/Edmonton\"},\"YOL\":{\"Timezone\":\"Africa/Lagos\"},\"YOO\":{\"Timezone\":\"America/Toronto\"},\"YOP\":{\"Timezone\":\"America/Edmonton\"},\"YOS\":{\"Timezone\":null},\"YOW\":{\"Timezone\":\"America/Toronto\"},\"YPA\":{\"Timezone\":\"America/Regina\"},\"YPC\":{\"Timezone\":\"America/Edmonton\"},\"YPD\":{\"Timezone\":\"America/Toronto\"},\"YPE\":{\"Timezone\":\"America/Edmonton\"},\"YPG\":{\"Timezone\":\"America/Winnipeg\"},\"YPH\":{\"Timezone\":\"America/Toronto\"},\"YPJ\":{\"Timezone\":\"America/Toronto\"},\"YPL\":{\"Timezone\":\"America/Coral_Harbour\"},\"YPM\":{\"Timezone\":\"America/Winnipeg\"},\"YPN\":{\"Timezone\":\"America/Toronto\"},\"YPO\":{\"Timezone\":\"America/Toronto\"},\"YPQ\":{\"Timezone\":\"America/Toronto\"},\"YPR\":{\"Timezone\":\"America/Vancouver\"},\"YPS\":{\"Timezone\":null},\"YPW\":{\"Timezone\":\"America/Vancouver\"},\"YPX\":{\"Timezone\":\"America/Toronto\"},\"YPY\":{\"Timezone\":\"America/Edmonton\"},\"YQA\":{\"Timezone\":\"America/Toronto\"},\"YQB\":{\"Timezone\":\"America/Toronto\"},\"YQC\":{\"Timezone\":\"America/Toronto\"},\"YQD\":{\"Timezone\":\"America/Winnipeg\"},\"YQF\":{\"Timezone\":\"America/Edmonton\"},\"YQG\":{\"Timezone\":\"America/Toronto\"},\"YQH\":{\"Timezone\":\"America/Vancouver\"},\"YQI\":{\"Timezone\":\"America/Halifax\"},\"YQK\":{\"Timezone\":\"America/Winnipeg\"},\"YQL\":{\"Timezone\":\"America/Edmonton\"},\"YQM\":{\"Timezone\":\"America/Halifax\"},\"YQN\":{\"Timezone\":\"America/Toronto\"},\"YQQ\":{\"Timezone\":\"America/Vancouver\"},\"YQR\":{\"Timezone\":\"America/Regina\"},\"YQS\":{\"Timezone\":null},\"YQT\":{\"Timezone\":\"America/Toronto\"},\"YQU\":{\"Timezone\":\"America/Edmonton\"},\"YQV\":{\"Timezone\":\"America/Regina\"},\"YQW\":{\"Timezone\":\"America/Regina\"},\"YQX\":{\"Timezone\":\"America/St_Johns\"},\"YQY\":{\"Timezone\":\"America/Halifax\"},\"YQZ\":{\"Timezone\":\"America/Vancouver\"},\"YRA\":{\"Timezone\":\"America/Edmonton\"},\"YRB\":{\"Timezone\":\"America/Winnipeg\"},\"YRF\":{\"Timezone\":\"America/Halifax\"},\"YRG\":{\"Timezone\":\"America/Halifax\"},\"YRI\":{\"Timezone\":\"America/Toronto\"},\"YRJ\":{\"Timezone\":\"America/Toronto\"},\"YRL\":{\"Timezone\":\"America/Winnipeg\"},\"YRM\":{\"Timezone\":\"America/Edmonton\"},\"YRO\":{\"Timezone\":null},\"YRQ\":{\"Timezone\":\"America/Toronto\"},\"YRS\":{\"Timezone\":\"America/Winnipeg\"},\"YRT\":{\"Timezone\":\"America/Winnipeg\"},\"YRV\":{\"Timezone\":\"America/Vancouver\"},\"YSB\":{\"Timezone\":\"America/Toronto\"},\"YSC\":{\"Timezone\":\"America/Toronto\"},\"YSD\":{\"Timezone\":\"America/Edmonton\"},\"YSE\":{\"Timezone\":null},\"YSF\":{\"Timezone\":\"America/Regina\"},\"YSG\":{\"Timezone\":null},\"YSH\":{\"Timezone\":null},\"YSJ\":{\"Timezone\":\"America/Halifax\"},\"YSK\":{\"Timezone\":null},\"YSL\":{\"Timezone\":null},\"YSM\":{\"Timezone\":\"America/Edmonton\"},\"YSN\":{\"Timezone\":null},\"YSO\":{\"Timezone\":\"America/Halifax\"},\"YSP\":{\"Timezone\":\"America/Toronto\"},\"YSQ\":{\"Timezone\":null},\"YSR\":{\"Timezone\":\"America/Toronto\"},\"YST\":{\"Timezone\":\"America/Winnipeg\"},\"YSU\":{\"Timezone\":\"America/Halifax\"},\"YSY\":{\"Timezone\":\"America/Edmonton\"},\"YTA\":{\"Timezone\":\"America/Toronto\"},\"YTD\":{\"Timezone\":null},\"YTE\":{\"Timezone\":\"America/Toronto\"},\"YTF\":{\"Timezone\":\"America/Toronto\"},\"YTH\":{\"Timezone\":\"America/Winnipeg\"},\"YTL\":{\"Timezone\":\"America/Winnipeg\"},\"YTM\":{\"Timezone\":\"America/Toronto\"},\"YTQ\":{\"Timezone\":\"America/Toronto\"},\"YTR\":{\"Timezone\":\"America/Toronto\"},\"YTS\":{\"Timezone\":\"America/Toronto\"},\"YTY\":{\"Timezone\":\"Asia/Shanghai\"},\"YTZ\":{\"Timezone\":\"America/Toronto\"},\"YUB\":{\"Timezone\":\"America/Edmonton\"},\"YUD\":{\"Timezone\":\"America/Toronto\"},\"YUE\":{\"Timezone\":\"Australia/Darwin\"},\"YUL\":{\"Timezone\":\"America/Toronto\"},\"YUM\":{\"Timezone\":\"America/Phoenix\"},\"YUS\":{\"Timezone\":\"Asia/Shanghai\"},\"YUT\":{\"Timezone\":\"America/Winnipeg\"},\"YUX\":{\"Timezone\":\"America/Toronto\"},\"YUY\":{\"Timezone\":\"America/Toronto\"},\"YVA\":{\"Timezone\":\"Indian/Comoro\"},\"YVB\":{\"Timezone\":\"America/Toronto\"},\"YVC\":{\"Timezone\":\"America/Regina\"},\"YVE\":{\"Timezone\":null},\"YVG\":{\"Timezone\":\"America/Edmonton\"},\"YVM\":{\"Timezone\":\"America/Toronto\"},\"YVO\":{\"Timezone\":\"America/Toronto\"},\"YVP\":{\"Timezone\":\"America/Toronto\"},\"YVQ\":{\"Timezone\":\"America/Edmonton\"},\"YVR\":{\"Timezone\":\"America/Vancouver\"},\"YVT\":{\"Timezone\":\"America/Regina\"},\"YVV\":{\"Timezone\":\"America/Toronto\"},\"YVZ\":{\"Timezone\":\"America/Winnipeg\"},\"YWA\":{\"Timezone\":\"America/Toronto\"},\"YWB\":{\"Timezone\":\"America/Toronto\"},\"YWG\":{\"Timezone\":\"America/Winnipeg\"},\"YWH\":{\"Timezone\":\"America/Vancouver\"},\"YWJ\":{\"Timezone\":\"America/Edmonton\"},\"YWK\":{\"Timezone\":\"America/Halifax\"},\"YWL\":{\"Timezone\":\"America/Vancouver\"},\"YWM\":{\"Timezone\":\"America/St_Johns\"},\"YWP\":{\"Timezone\":\"America/Toronto\"},\"YWS\":{\"Timezone\":\"America/Vancouver\"},\"YWY\":{\"Timezone\":\"America/Edmonton\"},\"YXC\":{\"Timezone\":\"America/Edmonton\"},\"YXD\":{\"Timezone\":\"America/Edmonton\"},\"YXE\":{\"Timezone\":\"America/Regina\"},\"YXH\":{\"Timezone\":\"America/Edmonton\"},\"YXJ\":{\"Timezone\":\"America/Dawson_Creek\"},\"YXK\":{\"Timezone\":\"America/Toronto\"},\"YXL\":{\"Timezone\":\"America/Winnipeg\"},\"YXN\":{\"Timezone\":\"America/Winnipeg\"},\"YXP\":{\"Timezone\":\"America/Toronto\"},\"YXQ\":{\"Timezone\":null},\"YXR\":{\"Timezone\":\"America/Toronto\"},\"YXS\":{\"Timezone\":\"America/Vancouver\"},\"YXT\":{\"Timezone\":\"America/Vancouver\"},\"YXU\":{\"Timezone\":\"America/Toronto\"},\"YXX\":{\"Timezone\":\"America/Vancouver\"},\"YXY\":{\"Timezone\":\"America/Vancouver\"},\"YXZ\":{\"Timezone\":\"America/Toronto\"},\"YYB\":{\"Timezone\":\"America/Toronto\"},\"YYC\":{\"Timezone\":\"America/Edmonton\"},\"YYD\":{\"Timezone\":\"America/Vancouver\"},\"YYE\":{\"Timezone\":\"America/Vancouver\"},\"YYF\":{\"Timezone\":\"America/Vancouver\"},\"YYG\":{\"Timezone\":\"America/Halifax\"},\"YYH\":{\"Timezone\":\"America/Edmonton\"},\"YYJ\":{\"Timezone\":\"America/Vancouver\"},\"YYL\":{\"Timezone\":\"America/Winnipeg\"},\"YYN\":{\"Timezone\":\"America/Regina\"},\"YYQ\":{\"Timezone\":\"America/Winnipeg\"},\"YYR\":{\"Timezone\":\"America/Halifax\"},\"YYT\":{\"Timezone\":\"America/St_Johns\"},\"YYU\":{\"Timezone\":\"America/Toronto\"},\"YYW\":{\"Timezone\":\"America/Toronto\"},\"YYY\":{\"Timezone\":\"America/Toronto\"},\"YYZ\":{\"Timezone\":\"America/Toronto\"},\"YZD\":{\"Timezone\":\"America/Toronto\"},\"YZE\":{\"Timezone\":\"America/Toronto\"},\"YZF\":{\"Timezone\":\"America/Edmonton\"},\"YZG\":{\"Timezone\":\"America/Toronto\"},\"YZH\":{\"Timezone\":\"America/Edmonton\"},\"YZP\":{\"Timezone\":\"America/Vancouver\"},\"YZR\":{\"Timezone\":\"America/Toronto\"},\"YZS\":{\"Timezone\":\"America/Coral_Harbour\"},\"YZT\":{\"Timezone\":\"America/Vancouver\"},\"YZU\":{\"Timezone\":\"America/Edmonton\"},\"YZV\":{\"Timezone\":\"America/Toronto\"},\"YZW\":{\"Timezone\":\"America/Vancouver\"},\"YZX\":{\"Timezone\":\"America/Halifax\"},\"YZY\":{\"Timezone\":\"Asia/Shanghai\"},\"YZZ\":{\"Timezone\":\"America/Vancouver\"},\"ZAC\":{\"Timezone\":\"America/Winnipeg\"},\"ZAD\":{\"Timezone\":\"Europe/Zagreb\"},\"ZAG\":{\"Timezone\":\"Europe/Zagreb\"},\"ZAH\":{\"Timezone\":\"Asia/Tehran\"},\"ZAJ\":{\"Timezone\":\"Asia/Kabul\"},\"ZAL\":{\"Timezone\":\"America/Santiago\"},\"ZAM\":{\"Timezone\":\"Asia/Manila\"},\"ZAO\":{\"Timezone\":\"Europe/Paris\"},\"ZAR\":{\"Timezone\":\"Africa/Lagos\"},\"ZAT\":{\"Timezone\":\"Asia/Shanghai\"},\"ZAZ\":{\"Timezone\":\"Europe/Madrid\"},\"ZBF\":{\"Timezone\":\"America/Halifax\"},\"ZBM\":{\"Timezone\":\"America/Toronto\"},\"ZBO\":{\"Timezone\":null},\"ZBR\":{\"Timezone\":\"Asia/Tehran\"},\"ZBY\":{\"Timezone\":null},\"ZCL\":{\"Timezone\":\"America/Mexico_City\"},\"ZCN\":{\"Timezone\":\"Europe/Berlin\"},\"ZCO\":{\"Timezone\":null},\"ZEC\":{\"Timezone\":\"Africa/Johannesburg\"},\"ZEM\":{\"Timezone\":\"America/Toronto\"},\"ZER\":{\"Timezone\":\"Asia/Calcutta\"},\"ZFA\":{\"Timezone\":\"America/Vancouver\"},\"ZFD\":{\"Timezone\":\"America/Regina\"},\"ZFM\":{\"Timezone\":\"America/Edmonton\"},\"ZFN\":{\"Timezone\":\"America/Edmonton\"},\"ZGF\":{\"Timezone\":null},\"ZGI\":{\"Timezone\":\"America/Winnipeg\"},\"ZGR\":{\"Timezone\":\"America/Winnipeg\"},\"ZGS\":{\"Timezone\":\"America/Blanc-Sablon\"},\"ZGU\":{\"Timezone\":\"Pacific/Efate\"},\"ZHA\":{\"Timezone\":\"Asia/Shanghai\"},\"ZHI\":{\"Timezone\":\"Europe/Zurich\"},\"ZHY\":{\"Timezone\":\"Asia/Shanghai\"},\"ZIA\":{\"Timezone\":\"Europe/Moscow\"},\"ZIC\":{\"Timezone\":null},\"ZIG\":{\"Timezone\":\"Africa/Dakar\"},\"ZIH\":{\"Timezone\":\"America/Mexico_City\"},\"ZIN\":{\"Timezone\":\"Europe/Zurich\"},\"ZIS\":{\"Timezone\":null},\"ZIX\":{\"Timezone\":null},\"ZJG\":{\"Timezone\":null},\"ZJI\":{\"Timezone\":\"Europe/Zurich\"},\"ZJN\":{\"Timezone\":\"America/Winnipeg\"},\"ZKB\":{\"Timezone\":\"Africa/Lusaka\"},\"ZKE\":{\"Timezone\":\"America/Toronto\"},\"ZKG\":{\"Timezone\":\"America/Blanc-Sablon\"},\"ZKP\":{\"Timezone\":\"Asia/Srednekolymsk\"},\"ZLO\":{\"Timezone\":\"America/Mexico_City\"},\"ZLT\":{\"Timezone\":\"America/Blanc-Sablon\"},\"ZMG\":{\"Timezone\":\"Europe/Berlin\"},\"ZMH\":{\"Timezone\":\"America/Vancouver\"},\"ZMM\":{\"Timezone\":\"America/Mexico_City\"},\"ZMT\":{\"Timezone\":\"America/Vancouver\"},\"ZNA\":{\"Timezone\":\"America/Vancouver\"},\"ZND\":{\"Timezone\":\"Africa/Niamey\"},\"ZNE\":{\"Timezone\":\"Australia/Perth\"},\"ZNF\":{\"Timezone\":\"Europe/Berlin\"},\"ZNZ\":{\"Timezone\":\"Africa/Dar_es_Salaam\"},\"ZOS\":{\"Timezone\":\"America/Santiago\"},\"ZPB\":{\"Timezone\":\"America/Winnipeg\"},\"ZPC\":{\"Timezone\":\"America/Santiago\"},\"ZPH\":{\"Timezone\":\"America/New_York\"},\"ZQL\":{\"Timezone\":\"Europe/Berlin\"},\"ZQN\":{\"Timezone\":\"Pacific/Auckland\"},\"ZQW\":{\"Timezone\":\"Europe/Berlin\"},\"ZQZ\":{\"Timezone\":null},\"ZRH\":{\"Timezone\":\"Europe/Zurich\"},\"ZRJ\":{\"Timezone\":\"America/Winnipeg\"},\"ZSA\":{\"Timezone\":\"America/Nassau\"},\"ZSE\":{\"Timezone\":\"Indian/Reunion\"},\"ZSJ\":{\"Timezone\":\"America/Winnipeg\"},\"ZST\":{\"Timezone\":null},\"ZSW\":{\"Timezone\":\"America/Vancouver\"},\"ZTA\":{\"Timezone\":null},\"ZTB\":{\"Timezone\":\"America/Blanc-Sablon\"},\"ZTH\":{\"Timezone\":\"Europe/Athens\"},\"ZTM\":{\"Timezone\":\"America/Winnipeg\"},\"ZTR\":{\"Timezone\":\"Europe/Kiev\"},\"ZTU\":{\"Timezone\":\"Asia/Baku\"},\"ZUC\":{\"Timezone\":null},\"ZUH\":{\"Timezone\":\"Asia/Shanghai\"},\"ZUM\":{\"Timezone\":\"America/Halifax\"},\"ZVA\":{\"Timezone\":\"Indian/Antananarivo\"},\"ZVK\":{\"Timezone\":\"Asia/Vientiane\"},\"ZWA\":{\"Timezone\":\"Indian/Antananarivo\"},\"ZWL\":{\"Timezone\":\"America/Regina\"},\"ZYI\":{\"Timezone\":\"Asia/Shanghai\"},\"ZYL\":{\"Timezone\":\"Asia/Dhaka\"},\"ZZU\":{\"Timezone\":\"Africa/Blantyre\"},\"ZZV\":{\"Timezone\":null}}");
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
var map = {
"./airlines/aa.js": 14,
"./airlines/aaSabre.js": 15,
"./airlines/ac.js": 21,
"./airlines/af.js": 22,
"./airlines/as.js": 23,
"./airlines/az.js": 24,
"./airlines/ba.js": 25,
"./airlines/cz.js": 26,
"./airlines/dl.js": 27,
"./airlines/ib.js": 28,
"./airlines/kl.js": 29,
"./airlines/la.js": 30,
"./airlines/lh.js": 31,
"./airlines/lx.js": 32,
"./airlines/oa.js": 33,
"./airlines/ps.js": 34,
"./airlines/qf.js": 35,
"./airlines/tk.js": 36,
"./index.js": 10,
"./meta/jetcost.js": 37,
"./meta/kayak.js": 38,
"./meta/momondo.js": 39,
"./meta/skyscanner.js": 40,
"./otas/cheapoair.js": 41,
"./otas/edreams.js": 42,
"./otas/etraveli.js": 43,
"./otas/expedia.js": 44,
"./otas/flightnetwork.js": 45,
"./otas/lucky2go.js": 46,
"./otas/ovago.js": 47,
"./otas/priceline.js": 48
};
function webpackContext(req) {
var id = webpackContextResolve(req);
return __webpack_require__(id);
}
function webpackContextResolve(req) {
if(!__webpack_require__.o(map, req)) {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
}
return map[req];
}
webpackContext.keys = function webpackContextKeys() {
return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = 13;
/***/ }),
/* 14 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const aaEditions = [
{ value: "en_AU", name: "Australia" },
{ value: "en_BE", name: "Belgium" },
{ value: "en_CN", name: "China" },
{ value: "en_DK", name: "Denmark" },
{ value: "en_FI", name: "Finland" },
{ value: "en_FR", name: "France / English" },
{ value: "fr_FR", name: "France / French" },
{ value: "en_DE", name: "Germany / English" },
{ value: "de_DE", name: "Germany / Deutsch" },
{ value: "en_GR", name: "Greece" },
{ value: "en_HK", name: "Hong Kong" },
{ value: "en_IN", name: "India" },
{ value: "en_IE", name: "Ireland" },
{ value: "en_IL", name: "Israel" },
{ value: "en_IT", name: "Italy" },
{ value: "en_JP", name: "Japan" },
{ value: "en_KR", name: "Korea" },
{ value: "en_NL", name: "Netherlands" },
{ value: "en_NZ", name: "New Zealand" },
{ value: "en_NO", name: "Norway" },
{ value: "en_PT", name: "Portugal" },
{ value: "en_RU", name: "Russia" },
{ value: "en_ES", name: "Spain / English" },
{ value: "es_ES", name: "Spain / Spanish" },
{ value: "en_SE", name: "Sweden" },
{ value: "en_CH", name: "Switzerland" }
];
function printAA() {
var createUrl = function(edition) {
var url =
"http://i11l-services.aa.com/xaa/mseGateway/entryPoint.php?PARAM=";
var search = "1,,USD0.00," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length + ",";
var legs = new Array();
var leg = "";
var segs = new Array();
var seg = "";
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
segs = new Array();
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
seg =
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
"T" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time).slice(-5) +
(typeof _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.offset == "undefined"
? "+00:00"
: _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.offset) +
",";
seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass + ",";
seg +=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
"T" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time).slice(-5) +
(typeof _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.offset == "undefined"
? "+00:00"
: _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.offset) +
",";
seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest + ",";
seg +=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
",";
seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig; // NO , here!
segs.push(seg);
j += k;
}
search += segs.length + "," + segs.join() + ",";
//build leg structure
leg =
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.day).slice(-2) +
",";
leg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest + ",,";
leg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig + ","; // USE , here!
legs.push(leg);
}
search += "DIRECT,";
search += edition[0].toUpperCase() + ","; // Language
search += "3,";
// validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 7,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAA");
return;
}
search += pax.adults + ","; // ADT
search += pax.children.length + ","; // Child
search += pax.infLap + ","; // Inf
search += "0,"; // Senior
search += edition[1].toUpperCase() + ","; // Country
// push outer search
search += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length + "," + legs.join();
url += encodeURIComponent(search);
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].aaEdition.split("_");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error:Invalid AA-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += aaEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("_")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "American",
desc: "Europe/Asia/Pacific",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printAA);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])(
"American (Europe/Asia/Pacific)",
"aaEdition",
aaEditions,
"en_DE"
);
/***/ }),
/* 15 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _json_timezones_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12);
var _json_timezones_json__WEBPACK_IMPORTED_MODULE_4___namespace = /*#__PURE__*/__webpack_require__.t(12, 1);
const aaSabreEditions = [
{ value: "BS", name: "Bahamas (USD)" },
{ value: "VG", name: "British Virgin Islands (USD)" },
{ value: "CA", name: "Canada (CAD)" },
{ value: "PR", name: "Puerto Rico (USD)" },
{ value: "GB", name: "United Kingdom (GBP)" },
{ value: "US", name: "United States (USD)" }
];
function printAaSabre() {
let datetimeToEpoch = function(y, m, d, t, ap) {
/**
* This function converts a datetime from the local timezone of the
* departing airport to its epoch value, while accounting for
* daylight savings time (DST) differences in future months.
*
* This function accepts the IATA code for a given airport and
* retrieves the timezone from a static array of known airport data
* (sourced from https://openflights.org/data.html, reduced to
* airports with IATA code, and converted to keyed json format).
* We use that timezone and Moment Timezone to account for DST if
* the future date and timezone fall in a known DST locale.
*
* Future TODO: The static airport data adds bloat and must be
* manually updated. Moment Timezone also adds bloat. Consider
* alternative implementations?
*
* @param y 4-digit year
* @param m 2-digit month
* @param d 2-digit day
* @param t 24-hour formatted time (HH:MM)
* @param y 4-digit year
* @param ap IATA airport code
* @returns Adjusted datetime string with offset in format YYYY-MM-DDTHH:MM:00+XX:00
*/
let datetimeStr =
y +
"-" +
("0" + m).slice(-2) +
"-" +
("0" + d).slice(-2) +
"T" +
t +
":00";
// use Moment Timezone to adjust for (if needed) DST of airport:
// (data is filtered to only +2 years to reduce file size)
let moment = __webpack_require__(16);
let adjustedStr = moment.tz(datetimeStr, _json_timezones_json__WEBPACK_IMPORTED_MODULE_4__[ap].Timezone).format();
return Date.parse(adjustedStr);
};
// validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
var createUrl = function(edition) {
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 6,
countInf: true,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAaSabre");
return false;
}
var url = "https://www.aa.com/goto/metasearch?ITEN=GOOGLE,0,";
url += (edition || "US") + ",";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length === 1) {
url += "oneWay";
} else {
url += "multi";
}
url +=
",4,A" +
pax.adults +
"S0C" +
pax.children.length +
"I" +
pax.infLap +
"Y0L0,0,";
url += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig + ",0," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest;
url += ",0";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length > 1) {
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
url += ",0,0";
}
} else {
url += ",0"; // for oneWay only
}
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2) {
// insert additional parameter zeros for roundtrips or 2-leg multi-city:
url += ",0,0";
} else if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
// insert the departure time before the price for oneWay only:
url +=
"," +
datetimeToEpoch(
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].dep.year,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].dep.month,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].dep.day,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].dep.time24,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].orig
);
}
url += "," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price + ",1,";
// this part for RT and multi-city only:
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length > 1) {
var addon = "";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
addon +=
"#" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest +
"|0|0|";
addon += datetimeToEpoch(
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.year,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.month,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.day,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.time24,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].orig
);
}
url += encodeURIComponent(addon) + ",";
}
var itinsegs = new Array();
// Build multi-city search based on legs:
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// outer loop traverses each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
// inner loop traverses each segment of the leg
var k = 0;
// skip this segment ONLY IF the flight number is the
// same as the next segment and it is only a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !==
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
let itinseg =
"#" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest +
"|" +
datetimeToEpoch(
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time24,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig
);
itinseg += "|" + i;
itinsegs.push(itinseg);
j += k;
}
}
url += encodeURIComponent(itinsegs.join(""));
return url;
};
var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].aaSabreEdition.toUpperCase());
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += aaSabreEditions
.map(function(edition, i) {
return (
'<a href="' +
createUrl(edition.value.toUpperCase()) +
'" target="_blank">' +
edition.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "American",
desc: "America & UK",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printAaSabre);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])(
"American (America & UK)",
"aaSabreEdition",
aaSabreEditions,
"US"
);
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
var moment = module.exports = __webpack_require__(17);
moment.tz.load(__webpack_require__(20));
/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//! moment-timezone.js
//! version : 0.5.27
//! Copyright (c) JS Foundation and other contributors
//! license : MIT
//! github.com/moment/moment-timezone
(function (root, factory) {
"use strict";
/*global define*/
if ( true && module.exports) {
module.exports = factory(__webpack_require__(9)); // Node
} else if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(9)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD
} else {}
}(this, function (moment) {
"use strict";
// Do not load moment-timezone a second time.
// if (moment.tz !== undefined) {
// logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
// return moment;
// }
var VERSION = "0.5.27",
zones = {},
links = {},
names = {},
guesses = {},
cachedGuess;
if (!moment || typeof moment.version !== 'string') {
logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
}
var momentVersion = moment.version.split('.'),
major = +momentVersion[0],
minor = +momentVersion[1];
// Moment.js version check
if (major < 2 || (major === 2 && minor < 6)) {
logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
}
/************************************
Unpacking
************************************/
function charCodeToInt(charCode) {
if (charCode > 96) {
return charCode - 87;
} else if (charCode > 64) {
return charCode - 29;
}
return charCode - 48;
}
function unpackBase60(string) {
var i = 0,
parts = string.split('.'),
whole = parts[0],
fractional = parts[1] || '',
multiplier = 1,
num,
out = 0,
sign = 1;
// handle negative numbers
if (string.charCodeAt(0) === 45) {
i = 1;
sign = -1;
}
// handle digits before the decimal
for (i; i < whole.length; i++) {
num = charCodeToInt(whole.charCodeAt(i));
out = 60 * out + num;
}
// handle digits after the decimal
for (i = 0; i < fractional.length; i++) {
multiplier = multiplier / 60;
num = charCodeToInt(fractional.charCodeAt(i));
out += num * multiplier;
}
return out * sign;
}
function arrayToInt (array) {
for (var i = 0; i < array.length; i++) {
array[i] = unpackBase60(array[i]);
}
}
function intToUntil (array, length) {
for (var i = 0; i < length; i++) {
array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
}
array[length - 1] = Infinity;
}
function mapIndices (source, indices) {
var out = [], i;
for (i = 0; i < indices.length; i++) {
out[i] = source[indices[i]];
}
return out;
}
function unpack (string) {
var data = string.split('|'),
offsets = data[2].split(' '),
indices = data[3].split(''),
untils = data[4].split(' ');
arrayToInt(offsets);
arrayToInt(indices);
arrayToInt(untils);
intToUntil(untils, indices.length);
return {
name : data[0],
abbrs : mapIndices(data[1].split(' '), indices),
offsets : mapIndices(offsets, indices),
untils : untils,
population : data[5] | 0
};
}
/************************************
Zone object
************************************/
function Zone (packedString) {
if (packedString) {
this._set(unpack(packedString));
}
}
Zone.prototype = {
_set : function (unpacked) {
this.name = unpacked.name;
this.abbrs = unpacked.abbrs;
this.untils = unpacked.untils;
this.offsets = unpacked.offsets;
this.population = unpacked.population;
},
_index : function (timestamp) {
var target = +timestamp,
untils = this.untils,
i;
for (i = 0; i < untils.length; i++) {
if (target < untils[i]) {
return i;
}
}
},
parse : function (timestamp) {
var target = +timestamp,
offsets = this.offsets,
untils = this.untils,
max = untils.length - 1,
offset, offsetNext, offsetPrev, i;
for (i = 0; i < max; i++) {
offset = offsets[i];
offsetNext = offsets[i + 1];
offsetPrev = offsets[i ? i - 1 : i];
if (offset < offsetNext && tz.moveAmbiguousForward) {
offset = offsetNext;
} else if (offset > offsetPrev && tz.moveInvalidForward) {
offset = offsetPrev;
}
if (target < untils[i] - (offset * 60000)) {
return offsets[i];
}
}
return offsets[max];
},
abbr : function (mom) {
return this.abbrs[this._index(mom)];
},
offset : function (mom) {
logError("zone.offset has been deprecated in favor of zone.utcOffset");
return this.offsets[this._index(mom)];
},
utcOffset : function (mom) {
return this.offsets[this._index(mom)];
}
};
/************************************
Current Timezone
************************************/
function OffsetAt(at) {
var timeString = at.toTimeString();
var abbr = timeString.match(/\([a-z ]+\)/i);
if (abbr && abbr[0]) {
// 17:56:31 GMT-0600 (CST)
// 17:56:31 GMT-0600 (Central Standard Time)
abbr = abbr[0].match(/[A-Z]/g);
abbr = abbr ? abbr.join('') : undefined;
} else {
// 17:56:31 CST
// 17:56:31 GMT+0800 (台北標準時間)
abbr = timeString.match(/[A-Z]{3,5}/g);
abbr = abbr ? abbr[0] : undefined;
}
if (abbr === 'GMT') {
abbr = undefined;
}
this.at = +at;
this.abbr = abbr;
this.offset = at.getTimezoneOffset();
}
function ZoneScore(zone) {
this.zone = zone;
this.offsetScore = 0;
this.abbrScore = 0;
}
ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
this.abbrScore++;
}
};
function findChange(low, high) {
var mid, diff;
while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
mid = new OffsetAt(new Date(low.at + diff));
if (mid.offset === low.offset) {
low = mid;
} else {
high = mid;
}
}
return low;
}
function userOffsets() {
var startYear = new Date().getFullYear() - 2,
last = new OffsetAt(new Date(startYear, 0, 1)),
offsets = [last],
change, next, i;
for (i = 1; i < 48; i++) {
next = new OffsetAt(new Date(startYear, i, 1));
if (next.offset !== last.offset) {
change = findChange(last, next);
offsets.push(change);
offsets.push(new OffsetAt(new Date(change.at + 6e4)));
}
last = next;
}
for (i = 0; i < 4; i++) {
offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
}
return offsets;
}
function sortZoneScores (a, b) {
if (a.offsetScore !== b.offsetScore) {
return a.offsetScore - b.offsetScore;
}
if (a.abbrScore !== b.abbrScore) {
return a.abbrScore - b.abbrScore;
}
if (a.zone.population !== b.zone.population) {
return b.zone.population - a.zone.population;
}
return b.zone.name.localeCompare(a.zone.name);
}
function addToGuesses (name, offsets) {
var i, offset;
arrayToInt(offsets);
for (i = 0; i < offsets.length; i++) {
offset = offsets[i];
guesses[offset] = guesses[offset] || {};
guesses[offset][name] = true;
}
}
function guessesForUserOffsets (offsets) {
var offsetsLength = offsets.length,
filteredGuesses = {},
out = [],
i, j, guessesOffset;
for (i = 0; i < offsetsLength; i++) {
guessesOffset = guesses[offsets[i].offset] || {};
for (j in guessesOffset) {
if (guessesOffset.hasOwnProperty(j)) {
filteredGuesses[j] = true;
}
}
}
for (i in filteredGuesses) {
if (filteredGuesses.hasOwnProperty(i)) {
out.push(names[i]);
}
}
return out;
}
function rebuildGuess () {
// use Intl API when available and returning valid time zone
try {
var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
if (intlName && intlName.length > 3) {
var name = names[normalizeName(intlName)];
if (name) {
return name;
}
logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
}
} catch (e) {
// Intl unavailable, fall back to manual guessing.
}
var offsets = userOffsets(),
offsetsLength = offsets.length,
guesses = guessesForUserOffsets(offsets),
zoneScores = [],
zoneScore, i, j;
for (i = 0; i < guesses.length; i++) {
zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
for (j = 0; j < offsetsLength; j++) {
zoneScore.scoreOffsetAt(offsets[j]);
}
zoneScores.push(zoneScore);
}
zoneScores.sort(sortZoneScores);
return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
}
function guess (ignoreCache) {
if (!cachedGuess || ignoreCache) {
cachedGuess = rebuildGuess();
}
return cachedGuess;
}
/************************************
Global Methods
************************************/
function normalizeName (name) {
return (name || '').toLowerCase().replace(/\//g, '_');
}
function addZone (packed) {
var i, name, split, normalized;
if (typeof packed === "string") {
packed = [packed];
}
for (i = 0; i < packed.length; i++) {
split = packed[i].split('|');
name = split[0];
normalized = normalizeName(name);
zones[normalized] = packed[i];
names[normalized] = name;
addToGuesses(normalized, split[2].split(' '));
}
}
function getZone (name, caller) {
name = normalizeName(name);
var zone = zones[name];
var link;
if (zone instanceof Zone) {
return zone;
}
if (typeof zone === 'string') {
zone = new Zone(zone);
zones[name] = zone;
return zone;
}
// Pass getZone to prevent recursion more than 1 level deep
if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
zone = zones[name] = new Zone();
zone._set(link);
zone.name = names[name];
return zone;
}
return null;
}
function getNames () {
var i, out = [];
for (i in names) {
if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
out.push(names[i]);
}
}
return out.sort();
}
function addLink (aliases) {
var i, alias, normal0, normal1;
if (typeof aliases === "string") {
aliases = [aliases];
}
for (i = 0; i < aliases.length; i++) {
alias = aliases[i].split('|');
normal0 = normalizeName(alias[0]);
normal1 = normalizeName(alias[1]);
links[normal0] = normal1;
names[normal0] = alias[0];
links[normal1] = normal0;
names[normal1] = alias[1];
}
}
function loadData (data) {
addZone(data.zones);
addLink(data.links);
tz.dataVersion = data.version;
}
function zoneExists (name) {
if (!zoneExists.didShowError) {
zoneExists.didShowError = true;
logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
}
return !!getZone(name);
}
function needsOffset (m) {
var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
}
function logError (message) {
if (typeof console !== 'undefined' && typeof console.error === 'function') {
console.error(message);
}
}
/************************************
moment.tz namespace
************************************/
function tz (input) {
var args = Array.prototype.slice.call(arguments, 0, -1),
name = arguments[arguments.length - 1],
zone = getZone(name),
out = moment.utc.apply(null, args);
if (zone && !moment.isMoment(input) && needsOffset(out)) {
out.add(zone.parse(out), 'minutes');
}
out.tz(name);
return out;
}
tz.version = VERSION;
tz.dataVersion = '';
tz._zones = zones;
tz._links = links;
tz._names = names;
tz.add = addZone;
tz.link = addLink;
tz.load = loadData;
tz.zone = getZone;
tz.zoneExists = zoneExists; // deprecated in 0.1.0
tz.guess = guess;
tz.names = getNames;
tz.Zone = Zone;
tz.unpack = unpack;
tz.unpackBase60 = unpackBase60;
tz.needsOffset = needsOffset;
tz.moveInvalidForward = true;
tz.moveAmbiguousForward = false;
/************************************
Interface with Moment.js
************************************/
var fn = moment.fn;
moment.tz = tz;
moment.defaultZone = null;
moment.updateOffset = function (mom, keepTime) {
var zone = moment.defaultZone,
offset;
if (mom._z === undefined) {
if (zone && needsOffset(mom) && !mom._isUTC) {
mom._d = moment.utc(mom._a)._d;
mom.utc().add(zone.parse(mom), 'minutes');
}
mom._z = zone;
}
if (mom._z) {
offset = mom._z.utcOffset(mom);
if (Math.abs(offset) < 16) {
offset = offset / 60;
}
if (mom.utcOffset !== undefined) {
var z = mom._z;
mom.utcOffset(-offset, keepTime);
mom._z = z;
} else {
mom.zone(offset, keepTime);
}
}
};
fn.tz = function (name, keepTime) {
if (name) {
if (typeof name !== 'string') {
throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
}
this._z = getZone(name);
if (this._z) {
moment.updateOffset(this, keepTime);
} else {
logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
}
return this;
}
if (this._z) { return this._z.name; }
};
function abbrWrap (old) {
return function () {
if (this._z) { return this._z.abbr(this); }
return old.call(this);
};
}
function resetZoneWrap (old) {
return function () {
this._z = null;
return old.apply(this, arguments);
};
}
function resetZoneWrap2 (old) {
return function () {
if (arguments.length > 0) this._z = null;
return old.apply(this, arguments);
};
}
fn.zoneName = abbrWrap(fn.zoneName);
fn.zoneAbbr = abbrWrap(fn.zoneAbbr);
fn.utc = resetZoneWrap(fn.utc);
fn.local = resetZoneWrap(fn.local);
fn.utcOffset = resetZoneWrap2(fn.utcOffset);
moment.tz.setDefault = function(name) {
if (major < 2 || (major === 2 && minor < 9)) {
logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
}
moment.defaultZone = name ? getZone(name) : null;
return moment;
};
// Cloning a moment should include the _z property.
var momentProperties = moment.momentProperties;
if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
// moment 2.8.1+
momentProperties.push('_z');
momentProperties.push('_a');
} else if (momentProperties) {
// moment 2.7.0
momentProperties._z = null;
}
// INJECT DATA
return moment;
}));
/***/ }),
/* 18 */
/***/ (function(module, exports) {
module.exports = function(module) {
if (!module.webpackPolyfill) {
module.deprecate = function() {};
module.paths = [];
// module.parent = undefined by default
if (!module.children) module.children = [];
Object.defineProperty(module, "loaded", {
enumerable: true,
get: function() {
return module.l;
}
});
Object.defineProperty(module, "id", {
enumerable: true,
get: function() {
return module.i;
}
});
module.webpackPolyfill = 1;
}
return module;
};
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
var map = {
"./de": 11,
"./de.js": 11
};
function webpackContext(req) {
var id = webpackContextResolve(req);
return __webpack_require__(id);
}
function webpackContextResolve(req) {
if(!__webpack_require__.o(map, req)) {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
}
return map[req];
}
webpackContext.keys = function webpackContextKeys() {
return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = 19;
/***/ }),
/* 20 */
/***/ (function(module) {
module.exports = JSON.parse("{\"version\":\"2019c\",\"zones\":[\"Africa/Abidjan|GMT|0|0||48e5\",\"Africa/Nairobi|EAT|-30|0||47e5\",\"Africa/Algiers|CET|-10|0||26e5\",\"Africa/Lagos|WAT|-10|0||17e6\",\"Africa/Khartoum|CAT|-20|0||51e5\",\"Africa/Cairo|EET|-20|0||15e6\",\"Africa/Casablanca|+01 +00|-10 0|0101010|22sq0 e00 28M0 e00 2600 gM0|32e5\",\"Europe/Paris|CET CEST|-10 -20|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|11e6\",\"Africa/Johannesburg|SAST|-20|0||84e5\",\"America/Adak|HST HDT|a0 90|0101010|22bM0 1zb0 Rd0 1zb0 Op0 1zb0|326\",\"America/Anchorage|AKST AKDT|90 80|0101010|22bL0 1zb0 Rd0 1zb0 Op0 1zb0|30e4\",\"America/Santo_Domingo|AST|40|0||29e5\",\"America/Sao_Paulo|-03|30|0||20e6\",\"America/Asuncion|-03 -04|30 40|0101010|22hf0 1ip0 19X0 1fB0 19X0 1fB0|28e5\",\"America/Panama|EST|50|0||15e5\",\"America/Mexico_City|CST CDT|60 50|0101010|22mU0 1lb0 14p0 1nX0 11B0 1nX0|20e6\",\"America/Managua|CST|60|0||22e5\",\"America/Caracas|-04|40|0||29e5\",\"America/Lima|-05|50|0||11e6\",\"America/Denver|MST MDT|70 60|0101010|22bJ0 1zb0 Rd0 1zb0 Op0 1zb0|26e5\",\"America/Chicago|CST CDT|60 50|0101010|22bI0 1zb0 Rd0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|MST MDT|70 60|0101010|22mV0 1lb0 14p0 1nX0 11B0 1nX0|81e4\",\"America/Phoenix|MST|70|0||42e5\",\"America/Los_Angeles|PST PDT|80 70|0101010|22bK0 1zb0 Rd0 1zb0 Op0 1zb0|15e6\",\"America/New_York|EST EDT|50 40|0101010|22bH0 1zb0 Rd0 1zb0 Op0 1zb0|21e6\",\"America/Halifax|AST ADT|40 30|0101010|22bG0 1zb0 Rd0 1zb0 Op0 1zb0|39e4\",\"America/Godthab|-03 -02|30 20|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|17e3\",\"America/Havana|CST CDT|50 40|0101010|22bF0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5\",\"America/Miquelon|-03 -02|30 20|0101010|22bF0 1zb0 Rd0 1zb0 Op0 1zb0|61e2\",\"America/Noronha|-02|20|0||30e2\",\"America/Santiago|-03 -04|30 40|0101010|22mP0 11B0 1nX0 11B0 1nX0 11B0|62e5\",\"Atlantic/Azores|-01 +00|10 0|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|25e4\",\"America/St_Johns|NST NDT|3u 2u|0101010|22bFu 1zb0 Rd0 1zb0 Op0 1zb0|11e4\",\"Asia/Kuala_Lumpur|+08|-80|0||71e5\",\"Asia/Bangkok|+07|-70|0||15e6\",\"Asia/Vladivostok|+10|-a0|0||60e4\",\"Asia/Sakhalin|+11|-b0|0||58e4\",\"Asia/Tashkent|+05|-50|0||23e5\",\"Pacific/Auckland|NZDT NZST|-d0 -c0|0101010|22mC0 1a00 1fA0 1a00 1fA0 1a00|14e5\",\"Europe/Istanbul|+03|-30|0||13e6\",\"Antarctica/Troll|+00 +02|0 -20|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|40\",\"Asia/Dhaka|+06|-60|0||16e6\",\"Asia/Amman|EET EEST|-20 -30|0101010|22ja0 1qM0 WM0 1qM0 11A0 1o00|25e5\",\"Asia/Kamchatka|+12|-c0|0||18e4\",\"Asia/Dubai|+04|-40|0||39e5\",\"Asia/Beirut|EET EEST|-20 -30|0101010|22jW0 1nX0 11B0 1qL0 WN0 1qL0|22e5\",\"Asia/Kolkata|IST|-5u|0||15e6\",\"Asia/Chita|+09|-90|0||33e4\",\"Asia/Shanghai|CST|-80|0||23e6\",\"Asia/Colombo|+0530|-5u|0||22e5\",\"Asia/Damascus|EET EEST|-20 -30|0101010|22ja0 1qL0 WN0 1qL0 WN0 1qL0|26e5\",\"Europe/Athens|EET EEST|-20 -30|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|35e5\",\"Asia/Gaza|EET EEST|-20 -30|0101010|22ja0 1rc0 Wo0 1rc0 Wo0 1rc0|18e5\",\"Asia/Hong_Kong|HKT|-80|0||73e5\",\"Asia/Jakarta|WIB|-70|0||31e6\",\"Asia/Jayapura|WIT|-90|0||26e4\",\"Asia/Jerusalem|IST IDT|-20 -30|0101010|22jc0 1oL0 10N0 1rz0 W10 1rz0|81e4\",\"Asia/Kabul|+0430|-4u|0||46e5\",\"Asia/Karachi|PKT|-50|0||24e6\",\"Asia/Kathmandu|+0545|-5J|0||12e5\",\"Asia/Makassar|WITA|-80|0||15e5\",\"Asia/Manila|PST|-80|0||24e6\",\"Asia/Seoul|KST|-90|0||23e6\",\"Asia/Rangoon|+0630|-6u|0||48e5\",\"Asia/Tehran|+0330 +0430|-3u -4u|0101010|22gIu 1dz0 1cN0 1dz0 1cp0 1dz0|14e6\",\"Asia/Tokyo|JST|-90|0||38e6\",\"Europe/Lisbon|WET WEST|0 -10|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|27e5\",\"Atlantic/Cape_Verde|-01|10|0||50e4\",\"Australia/Sydney|AEDT AEST|-b0 -a0|0101010|22mE0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACDT ACST|-au -9u|0101010|22mEu 1cM0 1cM0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST|-a0|0||20e5\",\"Australia/Darwin|ACST|-9u|0||12e4\",\"Australia/Eucla|+0845|-8J|0||368\",\"Australia/Lord_Howe|+11 +1030|-b0 -au|0101010|22mD0 1cMu 1cLu 1cMu 1cLu 1cMu|347\",\"Australia/Perth|AWST|-80|0||18e5\",\"Pacific/Easter|-05 -06|50 60|0101010|22mP0 11B0 1nX0 11B0 1nX0 11B0|30e2\",\"Europe/Dublin|GMT IST|0 -10|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|12e5\",\"Etc/GMT-1|+01|-10|0|\",\"Pacific/Tongatapu|+13|-d0|0||75e3\",\"Pacific/Kiritimati|+14|-e0|0||51e2\",\"Etc/GMT-2|+02|-20|0|\",\"Pacific/Tahiti|-10|a0|0||18e4\",\"Pacific/Niue|-11|b0|0||12e2\",\"Etc/GMT+12|-12|c0|0|\",\"Pacific/Galapagos|-06|60|0||25e3\",\"Etc/GMT+7|-07|70|0|\",\"Pacific/Pitcairn|-08|80|0||56\",\"Pacific/Gambier|-09|90|0||125\",\"Etc/UTC|UTC|0|0|\",\"Europe/London|GMT BST|0 -10|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|10e6\",\"Europe/Chisinau|EET EEST|-20 -30|0101010|22k00 1o00 11A0 1qM0 WM0 1qM0|67e4\",\"Europe/Moscow|MSK|-30|0||16e6\",\"Pacific/Honolulu|HST|a0|0||37e4\",\"MET|MET MEST|-10 -20|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0\",\"Pacific/Chatham|+1345 +1245|-dJ -cJ|0101010|22mC0 1a00 1fA0 1a00 1fA0 1a00|600\",\"Pacific/Apia|+14 +13|-e0 -d0|0101010|22mC0 1a00 1fA0 1a00 1fA0 1a00|37e3\",\"Pacific/Fiji|+13 +12|-d0 -c0|0101010|21N20 20o0 s00 20o0 pc0 20o0|88e4\",\"Pacific/Guam|ChST|-a0|0||17e4\",\"Pacific/Marquesas|-0930|9u|0||86e2\",\"Pacific/Pago_Pago|SST|b0|0||37e2\",\"Pacific/Norfolk|+12 +11|-c0 -b0|0101010|22mD0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4\"],\"links\":[\"Africa/Abidjan|Africa/Accra\",\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Bissau\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Monrovia\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Sao_Tome\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|America/Danmarkshavn\",\"Africa/Abidjan|Atlantic/Reykjavik\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Abidjan|Etc/GMT\",\"Africa/Abidjan|Etc/GMT+0\",\"Africa/Abidjan|Etc/GMT-0\",\"Africa/Abidjan|Etc/GMT0\",\"Africa/Abidjan|Etc/Greenwich\",\"Africa/Abidjan|GMT\",\"Africa/Abidjan|GMT+0\",\"Africa/Abidjan|GMT-0\",\"Africa/Abidjan|GMT0\",\"Africa/Abidjan|Greenwich\",\"Africa/Abidjan|Iceland\",\"Africa/Algiers|Africa/Tunis\",\"Africa/Cairo|Africa/Tripoli\",\"Africa/Cairo|Egypt\",\"Africa/Cairo|Europe/Kaliningrad\",\"Africa/Cairo|Libya\",\"Africa/Casablanca|Africa/El_Aaiun\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Khartoum|Africa/Blantyre\",\"Africa/Khartoum|Africa/Bujumbura\",\"Africa/Khartoum|Africa/Gaborone\",\"Africa/Khartoum|Africa/Harare\",\"Africa/Khartoum|Africa/Kigali\",\"Africa/Khartoum|Africa/Lubumbashi\",\"Africa/Khartoum|Africa/Lusaka\",\"Africa/Khartoum|Africa/Maputo\",\"Africa/Khartoum|Africa/Windhoek\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Ndjamena\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Juba\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|America/Juneau\",\"America/Anchorage|America/Metlakatla\",\"America/Anchorage|America/Nome\",\"America/Anchorage|America/Sitka\",\"America/Anchorage|America/Yakutat\",\"America/Anchorage|US/Alaska\",\"America/Caracas|America/Boa_Vista\",\"America/Caracas|America/Campo_Grande\",\"America/Caracas|America/Cuiaba\",\"America/Caracas|America/Guyana\",\"America/Caracas|America/La_Paz\",\"America/Caracas|America/Manaus\",\"America/Caracas|America/Porto_Velho\",\"America/Caracas|Brazil/West\",\"America/Caracas|Etc/GMT+4\",\"America/Chicago|America/Indiana/Knox\",\"America/Chicago|America/Indiana/Tell_City\",\"America/Chicago|America/Knox_IN\",\"America/Chicago|America/Matamoros\",\"America/Chicago|America/Menominee\",\"America/Chicago|America/North_Dakota/Beulah\",\"America/Chicago|America/North_Dakota/Center\",\"America/Chicago|America/North_Dakota/New_Salem\",\"America/Chicago|America/Rainy_River\",\"America/Chicago|America/Rankin_Inlet\",\"America/Chicago|America/Resolute\",\"America/Chicago|America/Winnipeg\",\"America/Chicago|CST6CDT\",\"America/Chicago|Canada/Central\",\"America/Chicago|US/Central\",\"America/Chicago|US/Indiana-Starke\",\"America/Chihuahua|America/Mazatlan\",\"America/Chihuahua|Mexico/BajaSur\",\"America/Denver|America/Boise\",\"America/Denver|America/Cambridge_Bay\",\"America/Denver|America/Edmonton\",\"America/Denver|America/Inuvik\",\"America/Denver|America/Ojinaga\",\"America/Denver|America/Shiprock\",\"America/Denver|America/Yellowknife\",\"America/Denver|Canada/Mountain\",\"America/Denver|MST7MDT\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Halifax|America/Glace_Bay\",\"America/Halifax|America/Goose_Bay\",\"America/Halifax|America/Moncton\",\"America/Halifax|America/Thule\",\"America/Halifax|Atlantic/Bermuda\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/Lima|America/Bogota\",\"America/Lima|America/Eirunepe\",\"America/Lima|America/Guayaquil\",\"America/Lima|America/Porto_Acre\",\"America/Lima|America/Rio_Branco\",\"America/Lima|Brazil/Acre\",\"America/Lima|Etc/GMT+5\",\"America/Los_Angeles|America/Dawson\",\"America/Los_Angeles|America/Ensenada\",\"America/Los_Angeles|America/Santa_Isabel\",\"America/Los_Angeles|America/Tijuana\",\"America/Los_Angeles|America/Vancouver\",\"America/Los_Angeles|America/Whitehorse\",\"America/Los_Angeles|Canada/Pacific\",\"America/Los_Angeles|Canada/Yukon\",\"America/Los_Angeles|Mexico/BajaNorte\",\"America/Los_Angeles|PST8PDT\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Managua|America/Belize\",\"America/Managua|America/Costa_Rica\",\"America/Managua|America/El_Salvador\",\"America/Managua|America/Guatemala\",\"America/Managua|America/Regina\",\"America/Managua|America/Swift_Current\",\"America/Managua|America/Tegucigalpa\",\"America/Managua|Canada/Saskatchewan\",\"America/Mexico_City|America/Bahia_Banderas\",\"America/Mexico_City|America/Merida\",\"America/Mexico_City|America/Monterrey\",\"America/Mexico_City|Mexico/General\",\"America/New_York|America/Detroit\",\"America/New_York|America/Fort_Wayne\",\"America/New_York|America/Grand_Turk\",\"America/New_York|America/Indiana/Indianapolis\",\"America/New_York|America/Indiana/Marengo\",\"America/New_York|America/Indiana/Petersburg\",\"America/New_York|America/Indiana/Vevay\",\"America/New_York|America/Indiana/Vincennes\",\"America/New_York|America/Indiana/Winamac\",\"America/New_York|America/Indianapolis\",\"America/New_York|America/Iqaluit\",\"America/New_York|America/Kentucky/Louisville\",\"America/New_York|America/Kentucky/Monticello\",\"America/New_York|America/Louisville\",\"America/New_York|America/Montreal\",\"America/New_York|America/Nassau\",\"America/New_York|America/Nipigon\",\"America/New_York|America/Pangnirtung\",\"America/New_York|America/Port-au-Prince\",\"America/New_York|America/Thunder_Bay\",\"America/New_York|America/Toronto\",\"America/New_York|Canada/Eastern\",\"America/New_York|EST5EDT\",\"America/New_York|US/East-Indiana\",\"America/New_York|US/Eastern\",\"America/New_York|US/Michigan\",\"America/Noronha|Atlantic/South_Georgia\",\"America/Noronha|Brazil/DeNoronha\",\"America/Noronha|Etc/GMT+2\",\"America/Panama|America/Atikokan\",\"America/Panama|America/Cancun\",\"America/Panama|America/Cayman\",\"America/Panama|America/Coral_Harbour\",\"America/Panama|America/Jamaica\",\"America/Panama|EST\",\"America/Panama|Jamaica\",\"America/Phoenix|America/Creston\",\"America/Phoenix|America/Dawson_Creek\",\"America/Phoenix|America/Fort_Nelson\",\"America/Phoenix|America/Hermosillo\",\"America/Phoenix|MST\",\"America/Phoenix|US/Arizona\",\"America/Santiago|Chile/Continental\",\"America/Santo_Domingo|America/Anguilla\",\"America/Santo_Domingo|America/Antigua\",\"America/Santo_Domingo|America/Aruba\",\"America/Santo_Domingo|America/Barbados\",\"America/Santo_Domingo|America/Blanc-Sablon\",\"America/Santo_Domingo|America/Curacao\",\"America/Santo_Domingo|America/Dominica\",\"America/Santo_Domingo|America/Grenada\",\"America/Santo_Domingo|America/Guadeloupe\",\"America/Santo_Domingo|America/Kralendijk\",\"America/Santo_Domingo|America/Lower_Princes\",\"America/Santo_Domingo|America/Marigot\",\"America/Santo_Domingo|America/Martinique\",\"America/Santo_Domingo|America/Montserrat\",\"America/Santo_Domingo|America/Port_of_Spain\",\"America/Santo_Domingo|America/Puerto_Rico\",\"America/Santo_Domingo|America/St_Barthelemy\",\"America/Santo_Domingo|America/St_Kitts\",\"America/Santo_Domingo|America/St_Lucia\",\"America/Santo_Domingo|America/St_Thomas\",\"America/Santo_Domingo|America/St_Vincent\",\"America/Santo_Domingo|America/Tortola\",\"America/Santo_Domingo|America/Virgin\",\"America/Sao_Paulo|America/Araguaina\",\"America/Sao_Paulo|America/Argentina/Buenos_Aires\",\"America/Sao_Paulo|America/Argentina/Catamarca\",\"America/Sao_Paulo|America/Argentina/ComodRivadavia\",\"America/Sao_Paulo|America/Argentina/Cordoba\",\"America/Sao_Paulo|America/Argentina/Jujuy\",\"America/Sao_Paulo|America/Argentina/La_Rioja\",\"America/Sao_Paulo|America/Argentina/Mendoza\",\"America/Sao_Paulo|America/Argentina/Rio_Gallegos\",\"America/Sao_Paulo|America/Argentina/Salta\",\"America/Sao_Paulo|America/Argentina/San_Juan\",\"America/Sao_Paulo|America/Argentina/San_Luis\",\"America/Sao_Paulo|America/Argentina/Tucuman\",\"America/Sao_Paulo|America/Argentina/Ushuaia\",\"America/Sao_Paulo|America/Bahia\",\"America/Sao_Paulo|America/Belem\",\"America/Sao_Paulo|America/Buenos_Aires\",\"America/Sao_Paulo|America/Catamarca\",\"America/Sao_Paulo|America/Cayenne\",\"America/Sao_Paulo|America/Cordoba\",\"America/Sao_Paulo|America/Fortaleza\",\"America/Sao_Paulo|America/Jujuy\",\"America/Sao_Paulo|America/Maceio\",\"America/Sao_Paulo|America/Mendoza\",\"America/Sao_Paulo|America/Montevideo\",\"America/Sao_Paulo|America/Paramaribo\",\"America/Sao_Paulo|America/Punta_Arenas\",\"America/Sao_Paulo|America/Recife\",\"America/Sao_Paulo|America/Rosario\",\"America/Sao_Paulo|America/Santarem\",\"America/Sao_Paulo|Antarctica/Palmer\",\"America/Sao_Paulo|Antarctica/Rothera\",\"America/Sao_Paulo|Atlantic/Stanley\",\"America/Sao_Paulo|Brazil/East\",\"America/Sao_Paulo|Etc/GMT+3\",\"America/St_Johns|Canada/Newfoundland\",\"Asia/Bangkok|Antarctica/Davis\",\"Asia/Bangkok|Asia/Barnaul\",\"Asia/Bangkok|Asia/Ho_Chi_Minh\",\"Asia/Bangkok|Asia/Hovd\",\"Asia/Bangkok|Asia/Krasnoyarsk\",\"Asia/Bangkok|Asia/Novokuznetsk\",\"Asia/Bangkok|Asia/Novosibirsk\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Saigon\",\"Asia/Bangkok|Asia/Tomsk\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Bangkok|Etc/GMT-7\",\"Asia/Bangkok|Indian/Christmas\",\"Asia/Chita|Asia/Dili\",\"Asia/Chita|Asia/Khandyga\",\"Asia/Chita|Asia/Yakutsk\",\"Asia/Chita|Etc/GMT-9\",\"Asia/Chita|Pacific/Palau\",\"Asia/Dhaka|Antarctica/Vostok\",\"Asia/Dhaka|Asia/Almaty\",\"Asia/Dhaka|Asia/Bishkek\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dhaka|Asia/Kashgar\",\"Asia/Dhaka|Asia/Omsk\",\"Asia/Dhaka|Asia/Qostanay\",\"Asia/Dhaka|Asia/Thimbu\",\"Asia/Dhaka|Asia/Thimphu\",\"Asia/Dhaka|Asia/Urumqi\",\"Asia/Dhaka|Etc/GMT-6\",\"Asia/Dhaka|Indian/Chagos\",\"Asia/Dubai|Asia/Baku\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Dubai|Asia/Tbilisi\",\"Asia/Dubai|Asia/Yerevan\",\"Asia/Dubai|Etc/GMT-4\",\"Asia/Dubai|Europe/Astrakhan\",\"Asia/Dubai|Europe/Samara\",\"Asia/Dubai|Europe/Saratov\",\"Asia/Dubai|Europe/Ulyanovsk\",\"Asia/Dubai|Europe/Volgograd\",\"Asia/Dubai|Indian/Mahe\",\"Asia/Dubai|Indian/Mauritius\",\"Asia/Dubai|Indian/Reunion\",\"Asia/Gaza|Asia/Hebron\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jakarta|Asia/Pontianak\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kamchatka|Asia/Anadyr\",\"Asia/Kamchatka|Etc/GMT-12\",\"Asia/Kamchatka|Kwajalein\",\"Asia/Kamchatka|Pacific/Funafuti\",\"Asia/Kamchatka|Pacific/Kwajalein\",\"Asia/Kamchatka|Pacific/Majuro\",\"Asia/Kamchatka|Pacific/Nauru\",\"Asia/Kamchatka|Pacific/Tarawa\",\"Asia/Kamchatka|Pacific/Wake\",\"Asia/Kamchatka|Pacific/Wallis\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Kuala_Lumpur|Antarctica/Casey\",\"Asia/Kuala_Lumpur|Asia/Brunei\",\"Asia/Kuala_Lumpur|Asia/Choibalsan\",\"Asia/Kuala_Lumpur|Asia/Irkutsk\",\"Asia/Kuala_Lumpur|Asia/Kuching\",\"Asia/Kuala_Lumpur|Asia/Singapore\",\"Asia/Kuala_Lumpur|Asia/Ulaanbaatar\",\"Asia/Kuala_Lumpur|Asia/Ulan_Bator\",\"Asia/Kuala_Lumpur|Etc/GMT-8\",\"Asia/Kuala_Lumpur|Singapore\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Rangoon|Indian/Cocos\",\"Asia/Sakhalin|Antarctica/Macquarie\",\"Asia/Sakhalin|Asia/Magadan\",\"Asia/Sakhalin|Asia/Srednekolymsk\",\"Asia/Sakhalin|Etc/GMT-11\",\"Asia/Sakhalin|Pacific/Bougainville\",\"Asia/Sakhalin|Pacific/Efate\",\"Asia/Sakhalin|Pacific/Guadalcanal\",\"Asia/Sakhalin|Pacific/Kosrae\",\"Asia/Sakhalin|Pacific/Noumea\",\"Asia/Sakhalin|Pacific/Pohnpei\",\"Asia/Sakhalin|Pacific/Ponape\",\"Asia/Seoul|Asia/Pyongyang\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|Asia/Macao\",\"Asia/Shanghai|Asia/Macau\",\"Asia/Shanghai|Asia/Taipei\",\"Asia/Shanghai|PRC\",\"Asia/Shanghai|ROC\",\"Asia/Tashkent|Antarctica/Mawson\",\"Asia/Tashkent|Asia/Aqtau\",\"Asia/Tashkent|Asia/Aqtobe\",\"Asia/Tashkent|Asia/Ashgabat\",\"Asia/Tashkent|Asia/Ashkhabad\",\"Asia/Tashkent|Asia/Atyrau\",\"Asia/Tashkent|Asia/Dushanbe\",\"Asia/Tashkent|Asia/Oral\",\"Asia/Tashkent|Asia/Qyzylorda\",\"Asia/Tashkent|Asia/Samarkand\",\"Asia/Tashkent|Asia/Yekaterinburg\",\"Asia/Tashkent|Etc/GMT-5\",\"Asia/Tashkent|Indian/Kerguelen\",\"Asia/Tashkent|Indian/Maldives\",\"Asia/Tehran|Iran\",\"Asia/Tokyo|Japan\",\"Asia/Vladivostok|Antarctica/DumontDUrville\",\"Asia/Vladivostok|Asia/Ust-Nera\",\"Asia/Vladivostok|Etc/GMT-10\",\"Asia/Vladivostok|Pacific/Chuuk\",\"Asia/Vladivostok|Pacific/Port_Moresby\",\"Asia/Vladivostok|Pacific/Truk\",\"Asia/Vladivostok|Pacific/Yap\",\"Atlantic/Azores|America/Scoresbysund\",\"Atlantic/Cape_Verde|Etc/GMT+1\",\"Australia/Adelaide|Australia/Broken_Hill\",\"Australia/Adelaide|Australia/South\",\"Australia/Adelaide|Australia/Yancowinna\",\"Australia/Brisbane|Australia/Lindeman\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Darwin|Australia/North\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/Currie\",\"Australia/Sydney|Australia/Hobart\",\"Australia/Sydney|Australia/Melbourne\",\"Australia/Sydney|Australia/NSW\",\"Australia/Sydney|Australia/Tasmania\",\"Australia/Sydney|Australia/Victoria\",\"Etc/UTC|Etc/UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UCT\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Athens|Asia/Famagusta\",\"Europe/Athens|Asia/Nicosia\",\"Europe/Athens|EET\",\"Europe/Athens|Europe/Bucharest\",\"Europe/Athens|Europe/Helsinki\",\"Europe/Athens|Europe/Kiev\",\"Europe/Athens|Europe/Mariehamn\",\"Europe/Athens|Europe/Nicosia\",\"Europe/Athens|Europe/Riga\",\"Europe/Athens|Europe/Sofia\",\"Europe/Athens|Europe/Tallinn\",\"Europe/Athens|Europe/Uzhgorod\",\"Europe/Athens|Europe/Vilnius\",\"Europe/Athens|Europe/Zaporozhye\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Istanbul|Antarctica/Syowa\",\"Europe/Istanbul|Asia/Aden\",\"Europe/Istanbul|Asia/Baghdad\",\"Europe/Istanbul|Asia/Bahrain\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Asia/Kuwait\",\"Europe/Istanbul|Asia/Qatar\",\"Europe/Istanbul|Asia/Riyadh\",\"Europe/Istanbul|Etc/GMT-3\",\"Europe/Istanbul|Europe/Kirov\",\"Europe/Istanbul|Europe/Minsk\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Atlantic/Canary\",\"Europe/Lisbon|Atlantic/Faeroe\",\"Europe/Lisbon|Atlantic/Faroe\",\"Europe/Lisbon|Atlantic/Madeira\",\"Europe/Lisbon|Portugal\",\"Europe/Lisbon|WET\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|Europe/Simferopol\",\"Europe/Moscow|W-SU\",\"Europe/Paris|Africa/Ceuta\",\"Europe/Paris|Arctic/Longyearbyen\",\"Europe/Paris|Atlantic/Jan_Mayen\",\"Europe/Paris|CET\",\"Europe/Paris|Europe/Amsterdam\",\"Europe/Paris|Europe/Andorra\",\"Europe/Paris|Europe/Belgrade\",\"Europe/Paris|Europe/Berlin\",\"Europe/Paris|Europe/Bratislava\",\"Europe/Paris|Europe/Brussels\",\"Europe/Paris|Europe/Budapest\",\"Europe/Paris|Europe/Busingen\",\"Europe/Paris|Europe/Copenhagen\",\"Europe/Paris|Europe/Gibraltar\",\"Europe/Paris|Europe/Ljubljana\",\"Europe/Paris|Europe/Luxembourg\",\"Europe/Paris|Europe/Madrid\",\"Europe/Paris|Europe/Malta\",\"Europe/Paris|Europe/Monaco\",\"Europe/Paris|Europe/Oslo\",\"Europe/Paris|Europe/Podgorica\",\"Europe/Paris|Europe/Prague\",\"Europe/Paris|Europe/Rome\",\"Europe/Paris|Europe/San_Marino\",\"Europe/Paris|Europe/Sarajevo\",\"Europe/Paris|Europe/Skopje\",\"Europe/Paris|Europe/Stockholm\",\"Europe/Paris|Europe/Tirane\",\"Europe/Paris|Europe/Vaduz\",\"Europe/Paris|Europe/Vatican\",\"Europe/Paris|Europe/Vienna\",\"Europe/Paris|Europe/Warsaw\",\"Europe/Paris|Europe/Zagreb\",\"Europe/Paris|Europe/Zurich\",\"Europe/Paris|Poland\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Galapagos|Etc/GMT+6\",\"Pacific/Gambier|Etc/GMT+9\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|HST\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kiritimati|Etc/GMT-14\",\"Pacific/Niue|Etc/GMT+11\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Pitcairn|Etc/GMT+8\",\"Pacific/Tahiti|Etc/GMT+10\",\"Pacific/Tahiti|Pacific/Rarotonga\",\"Pacific/Tongatapu|Etc/GMT-13\",\"Pacific/Tongatapu|Pacific/Enderbury\",\"Pacific/Tongatapu|Pacific/Fakaofo\"]}");
/***/ }),
/* 21 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _settings_translations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(0);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
const acEditions = [
{ name: "Algeria", value: "dz" },
{ name: "Antigua", value: "ag" },
{ name: "Argentina", value: "ar" },
{ name: "Australia", value: "au" },
{ name: "Austria", value: "at" },
{ name: "Bahamas", value: "bs" },
{ name: "Bahrain", value: "bh" },
{ name: "Barbados", value: "bb" },
{ name: "Belgium", value: "be" },
{ name: "Bermuda", value: "bm" },
{ name: "Canada", value: "ca" },
{ name: "Cayman Islands", value: "ky" },
{ name: "Chile", value: "cl" },
{ name: "China", value: "cn" },
{ name: "Colombia", value: "co" },
{ name: "Costa Rica", value: "cr" },
{ name: "Croatia", value: "hr" },
{ name: "Czech Republic", value: "cz" },
{ name: "Denmark", value: "dk" },
{ name: "Dominican Republic", value: "do" },
{ name: "Egypt", value: "eg" },
{ name: "Finland", value: "fi" },
{ name: "France", value: "fr" },
{ name: "Germany", value: "de" },
{ name: "Greece", value: "gr" },
{ name: "Haiti", value: "ht" },
{ name: "Hong Kong SAR, China", value: "hk" },
{ name: "Hungary", value: "hu" },
{ name: "India", value: "in" },
{ name: "Indonesia", value: "id" },
{ name: "Ireland", value: "ie" },
{ name: "Israel", value: "il" },
{ name: "Italy", value: "it" },
{ name: "Jamaica", value: "jm" },
{ name: "Japan", value: "jp" },
{ name: "Jordan", value: "jo" },
{ name: "Kuwait", value: "kw" },
{ name: "Malaysia", value: "my" },
{ name: "Mexico", value: "mx" },
{ name: "Morocco", value: "ma" },
{ name: "Mozambique", value: "mz" },
{ name: "Netherlands", value: "nl" },
{ name: "New Zealand", value: "nz" },
{ name: "Nigeria", value: "ng" },
{ name: "Norway", value: "no" },
{ name: "Panama", value: "pa" },
{ name: "Peru", value: "pe" },
{ name: "Poland", value: "pl" },
{ name: "Portugal", value: "pt" },
{ name: "Qatar", value: "qa" },
{ name: "Russia", value: "ru" },
{ name: "Romania", value: "ro" },
{ name: "Saudi Arabia", value: "sa" },
{ name: "Singapore", value: "sg" },
{ name: "South Africa", value: "za" },
{ name: "South Korea", value: "kr" },
{ name: "Spain", value: "es" },
{ name: "St. Lucia", value: "lc" },
{ name: "Sweden", value: "se" },
{ name: "Switzerland", value: "ch" },
{ name: "Taiwan, China", value: "tw" },
{ name: "Thailand", value: "th" },
{ name: "Trinidad & Tobago", value: "tt" },
{ name: "Turkey", value: "tr" },
{ name: "Turks and Caicos Island", value: "tc" },
{ name: "Ukraine", value: "ua" },
{ name: "United Arab Emirates", value: "ae" },
{ name: "United Kingdom", value: "gb" },
{ name: "United States", value: "us" },
{ name: "Venezuela", value: "ve" },
{ name: "Vietnam", value: "vn" }
];
function printAC() {
var createUrl = function(edition) {
var acUrl =
"https://book.aircanada.com/pl/AConline/en/RedirectionServlet?FareRequest=YES&PRICING_MODE=0&fromThirdParty=YES";
acUrl +=
"&country=" +
edition +
"&countryOfResidence=" +
edition +
(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].itaLanguage == "de" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de"
? "&language=de"
: "&language=en");
// validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_4__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 16,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAC");
return;
}
var paxConfig = { allowinf: 0, youthage: 12 }; // AC does not allow booking of infants for int. flights
var amadeusConfig = { sepcabin: 1, detailed: 1, allowpremium: 1 };
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusPax */ "a"])(pax, paxConfig);
acUrl += tmpPax.url;
acUrl += "&numberOfAdults=" + tmpPax.adults;
acUrl += "&numberOfInfants=" + tmpPax.infants;
acUrl += "&numberOfYouth=" + tmpPax.youth;
acUrl += "&numberOfChildren=" + tmpPax.children;
acUrl += "&tripType=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusTriptype */ "b"])();
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin.length; i++) {
acUrl +=
"&departure" +
(i + 1) +
"=" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.day).slice(-2) +
"/" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"/" +
_parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.year +
"&org" +
(i + 1) +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].orig +
"&dest" +
(i + 1) +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dest;
}
acUrl += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusUrl */ "c"])(amadeusConfig);
return acUrl;
};
var acUrl = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].acEdition.toUpperCase());
if (!acUrl) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += acEditions
.map(function(edition, i) {
return (
'<a href="' +
createUrl(edition.value.toUpperCase()) +
'" target="_blank">' +
edition.name +
"</a>"
);
})
.join("<br/>");
extra += '<br/><a href="javascript:addACPromo();">Add Promo Code</a>';
extra += "</span></span>";
extra += addACPromoControls(acUrl);
return {
url: acUrl,
title: "Air Canada",
extra
};
}
function addACPromoControls(url) {
var script = document.createElement("script");
script.appendChild(document.createTextNode("(" + addACPromo + ")();"));
(document.body || document.head || document.documentElement).appendChild(
script
);
var label = "Open";
if (_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language] !== undefined) {
if (_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language]["open"] !== undefined) {
label = _settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language]["open"];
}
}
var extra =
'<input type="input" id="ac-promo-input" size="8" style="display:none;margin:0 5px;"></input>';
extra +=
'<label style="font-size:' + Number(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].linkFontsize) + '%;">';
extra +=
'<a id="ac-promo-link" style="display:none" target="_blank" href="' +
url +
'">' +
label +
"</a></label>";
return extra;
}
function addACPromo() {
window.addACPromo = function() {
var input = document.getElementById("ac-promo-input");
input.style.display = "inline";
input.addEventListener("change", event => {
var replacement =
event.target.value != ""
? "&AUTHORIZATION_ID=" + event.target.value
: "";
var link = document.getElementById("ac-promo-link");
var match = link.href.match(/(&AUTHORIZATION_ID=.*)/g);
if (match == null) {
link.href += replacement;
} else {
link.href = link.href.replace(match, replacement);
}
});
var link = document.getElementById("ac-promo-link");
link.style.display = "inline";
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_4__[/* registerLink */ "c"])("airlines", printAC);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Air Canada", "acEdition", acEditions, "us");
/***/ }),
/* 22 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const afEditions = [
{ value: "DE/de", name: "Germany / Deutsch" },
{ value: "DE/en", name: "Germany / English" },
{ value: "FR/en", name: "France / English" },
{ value: "FI/en", name: "Finland / English" },
{ value: "FR/fr", name: "France / French" },
{ value: "NL/en", name: "Netherlands / English" },
{ value: "GB/en", name: "United Kingdom / English" },
{ value: "US/en", name: "US / English" }
];
function printAF() {
var createUrl = function(edition) {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
!(
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin &&
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[1].orig
)
) {
return;
}
var cabins = ["Y", "W", "C", "F"];
var mincabin = 3;
var afUrl =
"https://www.airfrance.com/" +
edition +
"/local/process/standardbooking/DisplayUpsellAction.do?calendarSearch=1&subCabin=MCHER&typeTrip=2";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
if (i == 0) {
afUrl += "&from=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig;
afUrl += "&to=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest;
afUrl +=
"&outboundDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
afUrl +=
"&firstOutboundHour=" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.time).slice(-5);
let flights = "";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
if (j > 0) flights += "|";
flights +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
}
afUrl += "&flightOutbound=" + flights;
} else if (i == 1) {
afUrl +=
"&inboundDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
afUrl +=
"&firstInboundHour=" + ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.time).slice(-5);
let flights = "";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
if (j > 0) flights += "|";
flights +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
}
afUrl += "&flightInbound=" + flights;
}
}
afUrl +=
"&cabin=" +
cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 18,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAF");
return;
}
var tmpPax = { c: 0, y: 0 };
for (i = 0; i < pax.children.length; i++) {
if (pax.children[i] > 11) {
tmpPax.y++;
} else {
tmpPax.c++;
}
}
var curPax = 0;
afUrl += "&nbAdults=" + pax.adults;
for (i = 0; i < pax.adults; i++) {
afUrl += "&paxTypoList=ADT";
curPax++;
}
afUrl += "&nbEnfants=" + tmpPax.y;
for (i = 0; i < tmpPax.y; i++) {
afUrl += "&paxTypoList=YTH_MIN";
curPax++;
}
afUrl += "&nbChildren=" + tmpPax.c;
for (i = 0; i < tmpPax.y; i++) {
afUrl += "&paxTypoList=CHD";
curPax++;
}
afUrl += "&nbBebes=" + pax.infLap;
for (i = 0; i < pax.infLap; i++) {
afUrl += "&paxTypoList=INF";
curPax++;
}
afUrl += "&nbPassenger=" + curPax + "&nbPax=" + curPax;
return afUrl;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].afEdition;
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += afEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Air France",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printAF);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Air France", "afEdition", afEditions, "US/en");
/***/ }),
/* 23 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
function printAS() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("AS", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
) {
return;
}
// validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
var createUrl = function() {
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 6,
countInf: true,
childAsAdult: 6,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAS");
return;
}
var url = "https://www.alaskaair.com/planbook/shoppingstart?";
url += "A=" + pax.adults + "&C=" + pax.children.length + "&FT=";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
url += "ow";
} else {
url += "rt";
}
var k = 0;
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var itinseg =
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest;
itinseg +=
"|" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"/" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
itinseg += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year;
itinseg += "|" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr + "|";
itinseg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin ? "f" : "c";
url += "&F" + ++k + "=" + encodeURIComponent(itinseg);
}
}
url +=
"&DEST=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg.length - 1].dest;
url += "&FARE=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price + "&frm=cart&META=GOO_CS";
return url;
};
var url = createUrl();
if (!url) {
return;
}
return {
url,
title: "Alaska"
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printAS);
/***/ }),
/* 24 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const azEditions = [
{ value: "de_de", name: "Germany / Deutsch" },
{ value: "at_de", name: "Austria / Deutsch" },
{ value: "ch_de", name: "Switzerland / Deutsch" },
{ value: "fr_fr", name: "France / French" },
{ value: "nl_nl", name: "Netherlands / Dutch" },
{ value: "it_it", name: "Italy / Italian" },
{ value: "ca_en", name: "Canada / Englisch" },
{ value: "us_en", name: "US / Englisch" },
{ value: "gb_en", name: "GB / Englisch" },
{ value: "en_en", name: "International / Englisch" }
];
function printAZ() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers.length == 1 && Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("AZ", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers))
) {
return;
}
var createUrl = function(edition) {
var azUrl =
"https://www.alitalia.com/" +
edition +
"/home-page.metasearch.json?SearchType=BrandMetasearch";
var cabins = ["Economy", "Economy", "Business", "First"];
var seg = 0;
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].From=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].To=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest;
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].DepartureDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
":" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time).slice(-5);
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].ArrivalDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.day).slice(-2) +
":" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.time).slice(-5);
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].Flight=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].code=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].farebase;
azUrl += "&MetaSearchDestinations[" + seg + "].MseType=";
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].bookingClass=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].cabinClass=" +
cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
azUrl += "&MetaSearchDestinations[" + seg + "].slices=" + i;
seg++;
}
}
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 7,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAZ");
return false;
}
azUrl +=
"&children_number=" +
pax.children.length +
"&newborn_number=" +
pax.infLap +
"&adult_number=" +
pax.adults;
return azUrl;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].azEdition;
var azUrl = createUrl(edition);
if (!azUrl) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += azEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url: azUrl,
title: "Alitalia",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printAZ);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Alitalia", "azEdition", azEditions, "us_en");
/***/ }),
/* 25 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const baEditions = [
{ value: "AF", name: "Afghanistan" },
{ value: "AL", name: "Albania" },
{ value: "DZ", name: "Algeria" },
{ value: "AS", name: "American Samoa" },
{ value: "AD", name: "Andorra" },
{ value: "AO", name: "Angola" },
{ value: "AI", name: "Anguilla" },
{ value: "AG", name: "Antigua" },
{ value: "AR", name: "Argentina" },
{ value: "AM", name: "Armenia" },
{ value: "AW", name: "Aruba" },
{ value: "AU", name: "Australia" },
{ value: "AT", name: "Austria" },
{ value: "AZ", name: "Azerbaijan" },
{ value: "BS", name: "Bahamas" },
{ value: "BH", name: "Bahrain" },
{ value: "BD", name: "Bangladesh" },
{ value: "BB", name: "Barbados" },
{ value: "BY", name: "Belarus" },
{ value: "BE", name: "Belgium" },
{ value: "BZ", name: "Belize" },
{ value: "BJ", name: "Benin Republic" },
{ value: "BM", name: "Bermuda" },
{ value: "BT", name: "Bhutan" },
{ value: "BO", name: "Bolivia" },
{ value: "BA", name: "Bosnia-Herzegovina" },
{ value: "BW", name: "Botswana" },
{ value: "BR", name: "Brazil" },
{ value: "VG", name: "British Virgin Islands" },
{ value: "BN", name: "Brunei" },
{ value: "BG", name: "Bulgaria" },
{ value: "BF", name: "Burkina Faso" },
{ value: "BI", name: "Burundi" },
{ value: "KH", name: "Cambodia" },
{ value: "CA", name: "Canada" },
{ value: "CV", name: "Cape Verde" },
{ value: "KY", name: "Cayman Islands" },
{ value: "CF", name: "Central African Rep" },
{ value: "TD", name: "Chad" },
{ value: "CL", name: "Chile" },
{ value: "CN", name: "China" },
{ value: "CX", name: "Christmas Island" },
{ value: "CC", name: "Cocos Islands" },
{ value: "CO", name: "Colombia" },
{ value: "CG", name: "Congo" },
{ value: "CK", name: "Cook Islands" },
{ value: "CR", name: "Costa Rica" },
{ value: "HR", name: "Croatia" },
{ value: "CU", name: "Cuba" },
{ value: "CY", name: "Cyprus" },
{ value: "CZ", name: "Czech Republic" },
{ value: "DK", name: "Denmark" },
{ value: "DJ", name: "Djibouti" },
{ value: "DM", name: "Dominica" },
{ value: "DO", name: "Dominican Rep" },
{ value: "EC", name: "Ecuador" },
{ value: "EG", name: "Egypt" },
{ value: "SV", name: "El Salvador" },
{ value: "GQ", name: "Equatorial Guinea" },
{ value: "ER", name: "Eritrea" },
{ value: "EE", name: "Estonia" },
{ value: "ET", name: "Ethiopia" },
{ value: "FO", name: "Faeroe Is" },
{ value: "FK", name: "Falkland Is" },
{ value: "FJ", name: "Fiji" },
{ value: "FI", name: "Finland" },
{ value: "FR", name: "France" },
{ value: "GF", name: "French Guyana" },
{ value: "PF", name: "French Polynesia" },
{ value: "GA", name: "Gabon" },
{ value: "GM", name: "Gambia" },
{ value: "GE", name: "Georgia" },
{ value: "DE", name: "Germany" },
{ value: "GH", name: "Ghana" },
{ value: "GI", name: "Gibraltar (UK)" },
{ value: "GR", name: "Greece" },
{ value: "GL", name: "Greenland" },
{ value: "GD", name: "Grenada" },
{ value: "GP", name: "Guadeloupe" },
{ value: "GU", name: "Guam" },
{ value: "GT", name: "Guatemala" },
{ value: "GN", name: "Guinea" },
{ value: "GW", name: "Guinea Bissau" },
{ value: "GY", name: "Guyana" },
{ value: "HT", name: "Haiti" },
{ value: "HN", name: "Honduras" },
{ value: "HK", name: "Hong Kong" },
{ value: "HU", name: "Hungary" },
{ value: "IS", name: "Iceland" },
{ value: "IN", name: "India" },
{ value: "ID", name: "Indonesia" },
{ value: "IR", name: "Iran" },
{ value: "IQ", name: "Iraq" },
{ value: "IE", name: "Ireland" },
{ value: "IL", name: "Israel" },
{ value: "IT", name: "Italy" },
{ value: "CI", name: "Ivory Coast" },
{ value: "JM", name: "Jamaica" },
{ value: "JP", name: "Japan" },
{ value: "JO", name: "Jordan" },
{ value: "KZ", name: "Kazakhstan" },
{ value: "KE", name: "Kenya" },
{ value: "KI", name: "Kiribati" },
{ value: "XK", name: "Kosovo" },
{ value: "KW", name: "Kuwait" },
{ value: "KG", name: "Kyrgyzstan" },
{ value: "LA", name: "Laos" },
{ value: "LV", name: "Latvia" },
{ value: "LB", name: "Lebanon" },
{ value: "LS", name: "Lesotho" },
{ value: "LR", name: "Liberia" },
{ value: "LY", name: "Libya" },
{ value: "LI", name: "Liechtenstein" },
{ value: "LT", name: "Lithuania" },
{ value: "LU", name: "Luxembourg" },
{ value: "MO", name: "Macau" },
{ value: "MK", name: "Macedonia" },
{ value: "MG", name: "Madagascar" },
{ value: "MW", name: "Malawi" },
{ value: "MY", name: "Malaysia" },
{ value: "MV", name: "Maldives" },
{ value: "ML", name: "Mali" },
{ value: "MT", name: "Malta" },
{ value: "MP", name: "Mariana Islands" },
{ value: "MH", name: "Marshall Islands" },
{ value: "MQ", name: "Martinique" },
{ value: "MR", name: "Mauritania" },
{ value: "MU", name: "Mauritius" },
{ value: "MX", name: "Mexico" },
{ value: "FM", name: "Micronesia" },
{ value: "UM", name: "Minor Island" },
{ value: "MD", name: "Moldova" },
{ value: "MC", name: "Monaco" },
{ value: "ME", name: "Montenegro" },
{ value: "MS", name: "Montserrat" },
{ value: "MA", name: "Morocco" },
{ value: "MZ", name: "Mozambique" },
{ value: "MM", name: "Myanmar" },
{ value: "NA", name: "Namibia" },
{ value: "NR", name: "Nauru" },
{ value: "NP", name: "Nepal" },
{ value: "AN", name: "Netherland Antilles" },
{ value: "NL", name: "Netherlands" },
{ value: "NC", name: "New Caledonia" },
{ value: "NZ", name: "New Zealand" },
{ value: "NI", name: "Nicaragua" },
{ value: "NE", name: "Niger" },
{ value: "NG", name: "Nigeria" },
{ value: "NU", name: "Niue" },
{ value: "NF", name: "Norfolk Island" },
{ value: "NO", name: "Norway" },
{ value: "OM", name: "Oman" },
{ value: "PK", name: "Pakistan" },
{ value: "PA", name: "Panama" },
{ value: "PG", name: "Papua New Guinea" },
{ value: "PY", name: "Paraguay" },
{ value: "KP", name: "Peoples Rep Korea" },
{ value: "PE", name: "Peru" },
{ value: "PH", name: "Philippines" },
{ value: "PL", name: "Poland" },
{ value: "PT", name: "Portugal" },
{ value: "PR", name: "Puerto Rico" },
{ value: "QA", name: "Qatar" },
{ value: "CM", name: "Republic Cameroon" },
{ value: "RE", name: "Reunion" },
{ value: "RO", name: "Romania" },
{ value: "RU", name: "Russia" },
{ value: "RW", name: "Rwanda" },
{ value: "SM", name: "San Marino" },
{ value: "SA", name: "Saudi Arabia" },
{ value: "SN", name: "Senegal" },
{ value: "RS", name: "Serbia" },
{ value: "SC", name: "Seychelles" },
{ value: "SL", name: "Sierra Leone" },
{ value: "SG", name: "Singapore" },
{ value: "SK", name: "Slovakia" },
{ value: "SI", name: "Slovenia" },
{ value: "SB", name: "Solomon Island" },
{ value: "SO", name: "Somalia" },
{ value: "ZA", name: "South Africa" },
{ value: "KR", name: "South Korea" },
{ value: "ES", name: "Spain" },
{ value: "LK", name: "Sri Lanka" },
{ value: "KN", name: "St Kitts and Nevis" },
{ value: "LC", name: "St Lucia" },
{ value: "VC", name: "St Vincent" },
{ value: "SD", name: "Sudan" },
{ value: "SR", name: "Suriname" },
{ value: "SZ", name: "Swaziland" },
{ value: "SE", name: "Sweden" },
{ value: "CH", name: "Switzerland" },
{ value: "SY", name: "Syria" },
{ value: "TW", name: "Taiwan" },
{ value: "TJ", name: "Tajikistan" },
{ value: "TZ", name: "Tanzania" },
{ value: "TH", name: "Thailand" },
{ value: "TL", name: "Timor - Leste" },
{ value: "TG", name: "Togo" },
{ value: "TO", name: "Tonga" },
{ value: "TT", name: "Trinidad and Tobago" },
{ value: "TN", name: "Tunisia" },
{ value: "TR", name: "Turkey" },
{ value: "TM", name: "Turkmenistan" },
{ value: "TC", name: "Turks Caicos" },
{ value: "TV", name: "Tuvalu" },
{ value: "VI", name: "US Virgin Islands" },
{ value: "US", name: "USA" },
{ value: "UG", name: "Uganda" },
{ value: "UA", name: "Ukraine" },
{ value: "AE", name: "United Arab Emirates" },
{ value: "GB", name: "United Kingdom" },
{ value: "UY", name: "Uruguay" },
{ value: "UZ", name: "Uzbekistan" },
{ value: "VU", name: "Vanuatu" },
{ value: "VE", name: "Venezuela" },
{ value: "VN", name: "Vietnam" },
{ value: "WS", name: "Western Samoa" },
{ value: "YE", name: "Yemen Republic" },
{ value: "ZM", name: "Zambia" },
{ value: "ZW", name: "Zimbabwe" }
];
function printBA() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
!(
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("IB", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers) || Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("BA", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers)
)
) {
return;
}
var createUrl = function(edition, language) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["M", "W", "C", "F"];
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 16,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printBA");
return false;
}
var tmpPax = { c: 0, y: 0 };
for (i = 0; i < pax.children.length; i++) {
if (pax.children[i] > 11) {
tmpPax.y++;
} else {
tmpPax.c++;
}
}
var url =
"https://www.britishairways.com/travel/fx/public/" +
language +
"_" +
edition +
"?eId=111054&data=F" +
pax.adults +
tmpPax.y +
tmpPax.c +
pax.infLap +
"LF";
var mincabin = 3;
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - fnr has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url +=
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")).slice(
-4
);
url +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
url += cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin];
url +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length == 2 && i == 1) {
url += "F";
} else {
url += "T";
}
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
j += k;
}
}
url +=
"&p=EUR6666.66&e=SL&c=" +
cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()] +
"&source=FareQuoteEmail&isEmailHBOFareQuote=false";
return url;
};
// get edition
var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baEdition, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baLanguage);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += baEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baLanguage) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "British Airways",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printBA);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("British Airways", "baEdition", baEditions, "US");
/***/ }),
/* 26 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
const czEditions = [
{ value: "AR-GB", name: "Argentina / English" },
{ value: "AU-GB", name: "Australia / English" },
{ value: "AZ-GB", name: "Azerbaijan / English" },
{ value: "BD-GB", name: "Bangladesh / English" },
{ value: "BE-GB", name: "Belgium / English" },
{ value: "BR-GB", name: "Brazil / English" },
{ value: "KH-GB", name: "Cambodia / English" },
{ value: "CA-GB", name: "Canada / English" },
{ value: "CA-FR", name: "Canada / French" },
{ value: "CN-GB", name: "China / English" },
{ value: "DK-GB", name: "Denmark / English" },
{ value: "FI-GB", name: "Finland / English" },
{ value: "FR-GB", name: "France / English" },
{ value: "FR-FR", name: "France / French" },
{ value: "GE-GB", name: "Georgia / English" },
{ value: "DE-GB", name: "Germany / English" },
{ value: "DE-DE", name: "Germany / German" },
{ value: "GR-GB", name: "Greece / English" },
{ value: "HK-GB", name: "Hong Kong / English" },
{ value: "IN-GB", name: "India / English" },
{ value: "ID-GB", name: "Indonesia / English" },
{ value: "IR-GB", name: "Iran / English" },
{ value: "IE-GB", name: "Ireland / English" },
{ value: "IT-GB", name: "Italy / English" },
{ value: "JP-GB", name: "Japan / English" },
{ value: "JO-GB", name: "Jordan / English" },
{ value: "KZ-GB", name: "Kazakhstan / English" },
{ value: "KE-GB", name: "Kenya / English" },
{ value: "KG-GB", name: "Kyrgyzstan / English" },
{ value: "MY-GB", name: "Malaysia / English" },
{ value: "MV-GB", name: "Maldives / English" },
{ value: "MO-GB", name: "Macau / English" },
{ value: "MM-GB", name: "Myanmar / English" },
{ value: "NP-GB", name: "Nepal / English" },
{ value: "NL-GB", name: "Netherlands / English" },
{ value: "NZ-GB", name: "New Zealand / English" },
{ value: "NO-GB", name: "Norway / English" },
{ value: "PK-GB", name: "Pakistan / English" },
{ value: "PA-GB", name: "Panama / English" },
{ value: "PE-GB", name: "Peru / English" },
{ value: "PH-GB", name: "Philippines / English" },
{ value: "PT-GB", name: "Portugal / English" },
{ value: "RU-GB", name: "Russia / English" },
{ value: "SA-GB", name: "Saudi Arabia / English" },
{ value: "SG-GB", name: "Singapore / English" },
{ value: "ZA-GB", name: "South Africa / English" },
{ value: "KR-GB", name: "South Korea / English" },
{ value: "ES-GB", name: "Spain / English" },
{ value: "SE-GB", name: "Sweden / English" },
{ value: "CH-GB", name: "Switzerland / English" },
{ value: "TW-GB", name: "Taiwan / English" },
{ value: "TJ-GB", name: "Tajikistan / English" },
{ value: "TZ-GB", name: "Tanzania / English" },
{ value: "TH-GB", name: "Thailand / English" },
{ value: "TR-GB", name: "Turkey / English" },
{ value: "TM-GB", name: "Turkmenistan / English" },
{ value: "UA-GB", name: "Ukraine / English" },
{ value: "GB-GB", name: "United Kingdom / English" },
{ value: "AE-GB", name: "United Arab Emirates / English" },
{ value: "UG-GB", name: "Uganda / English" },
{ value: "US-GB", name: "United States / English" },
{ value: "UZ-GB", name: "Uzbekistan / English" },
{ value: "VE-GB", name: "Venezuela / English" },
{ value: "VN-GB", name: "Vietnam / English" }
];
function printCZ() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length >= 3 && Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("CZ", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers))
) {
return;
}
var createUrl = function(edition) {
var paxConfig = { allowinf: 1, youthage: 0 };
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printCZ");
return;
}
var amadeusConfig = {
sepcabin: 0,
detailed: 0,
allowpremium: 0,
inctimes: 0
};
var url =
"http://global.csair.com/CZPortal/dyn/portal/doEnc?SITE=J00YJ00Y&BOOKING_FLOW=REVENUE&IS_FLEXIBLE=FALSE&LANGUAGE=" +
edition[1] +
"&PRICING_TYPE=O&COUNTRY_SITE=" +
edition[0] +
"&DISPLAY_TYPE=1";
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusPax */ "a"])(pax, paxConfig);
url += tmpPax.url;
url += "&NB_ADT=" + tmpPax.adults;
url += "&NB_INF=" + tmpPax.infants;
url += "&NB_CHD=" + tmpPax.children;
url += "&TRIP_TYPE=M";
url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusUrl */ "c"])(amadeusConfig);
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].czEdition.split("-");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error:Invalid CZ-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += czEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("-")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "China Southern",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printCZ);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("China Southern", "czEdition", czEditions, "US-GB");
/***/ }),
/* 27 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const dlEditions = [
{ value: "de_de", name: "Germany" },
{ value: "www_us", name: "US" }
];
function printDL() {
/* Steppo: What about farebasis?
* What about segmentskipping? */
var createUrl = function(edition) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
// Defaults for cabin identifiers for DL pricing engine; exceptions handled later
var cabins = ["MAIN", "DPPS", "BU", "FIRST"];
var mincabin = 3;
var farebases = new Array();
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printDL");
return;
}
var deltaURL =
"http://" +
edition[0] +
".delta.com/air-shopping/priceTripAction.action?ftw_reroute=true&tripType=multiCity";
deltaURL += "¤cyCd=" + (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].cur == "EUR" ? "EUR" : "USD");
deltaURL += "&exitCountry=" + edition[1];
var segcounter = 0;
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
deltaURL +=
"&itinSegment[" +
segcounter.toString() +
"]=" +
i.toString() +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
deltaURL +=
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr;
deltaURL +=
":" +
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* monthnumberToName */ "g"])(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.month) +
":" +
(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day < 10 ? "0" : "") +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
":0";
farebases.push(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].farebase);
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
// Exceptions to cabin identifiers for pricing
switch (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass) {
// Basic Economy fares
case "E":
cabins[0] = "BASIC-ECONOMY";
break;
// Comfort+ fares
case "W":
cabins[1] = "DCP";
break;
default:
}
segcounter++;
}
}
deltaURL +=
"&cabin=" +
cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
deltaURL += "&fareBasis=" + farebases.join(":");
//deltaURL += "&price=0";
deltaURL +=
"&numOfSegments=" +
segcounter.toString() +
"&paxCount=" +
(pax.adults + pax.children.length + pax.infLap);
deltaURL += "&vendorRedirectFlag=true&vendorID=Google";
return deltaURL;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].dlEdition.split("_");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error:Invalid Delta-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += dlEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("_")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Delta",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printDL);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Delta", "dlEdition", dlEditions, "www_us");
/***/ }),
/* 28 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const ibEditions = [
{ value: "es-AO", name: "Angola - Español" },
{ value: "pt-AO", name: "Angola - Português" },
{ value: "es-DZ", name: "Argelia - Español" },
{ value: "fr-DZ", name: "Algérie - Français" },
{ value: "en-AR", name: "Argentina - English" },
{ value: "es-AR", name: "Argentina - Español" },
{ value: "en-BE", name: "Belgium - English" },
{ value: "es-BE", name: "Bélgica - Español" },
{ value: "fr-BE", name: "Belgique - Français" },
{ value: "es-BR", name: "Brasil - Español" },
{ value: "pt-BR", name: "Brasil - Português" },
{ value: "en-CL", name: "Chile - English" },
{ value: "es-CL", name: "Chile - Español" },
{ value: "en-CO", name: "Colombia - English" },
{ value: "es-CO", name: "Colombia - Español" },
{ value: "en-CR", name: "Costa Rica - English" },
{ value: "es-CR", name: "Costa Rica - Español" },
{ value: "en-HR", name: "Croatia - English" },
{ value: "es-HR", name: "Croacia - Español" },
{ value: "it-HR", name: "Croazia - Italiano" },
{ value: "en-CU", name: "Cuba - English" },
{ value: "es-CU", name: "Cuba - Español" },
{ value: "en-CZ", name: "Czech Republic - English" },
{ value: "es-CZ", name: "República Checa - Español" },
{ value: "en-DK", name: "Denmark - English" },
{ value: "es-DK", name: "Dinamarca - Español" },
{ value: "de-DE", name: "Deutschland - Deutsch" },
{ value: "es-DE", name: "Alemania - Español" },
{ value: "en-DO", name: "Dominican Republic - English" },
{ value: "es-DO", name: "República Dominicana - Español" },
{ value: "en-EC", name: "Ecuador - English" },
{ value: "es-EC", name: "Ecuador - Español" },
{ value: "en-SV", name: "El Salvador - English" },
{ value: "es-SV", name: "El Salvador - Español" },
{ value: "en-GQ", name: "Equatorial Guinea - English" },
{ value: "es-GQ", name: "Guinea Ecuatorial - Español" },
{ value: "ca-ES", name: "Espanya - Català" },
{ value: "en-ES", name: "Spain - English" },
{ value: "es-ES", name: "España - Español" },
{ value: "es-FR", name: "Francia - Español" },
{ value: "fr-FR", name: "France - Français" },
{ value: "en-GH", name: "Ghana - English" },
{ value: "es-GH", name: "Ghana - Español" },
{ value: "en-GR", name: "Greece - English" },
{ value: "es-GR", name: "Grecia - Español" },
{ value: "en-GT", name: "Guatemala - English" },
{ value: "es-GT", name: "Guatemala - Español" },
{ value: "en-HN", name: "Honduras - English" },
{ value: "es-HN", name: "Honduras - Español" },
{ value: "en-IE", name: "Ireland - English" },
{ value: "es-IE", name: "Irlanda - Español" },
{ value: "en-IL", name: "Israel - English" },
{ value: "es-IL", name: "Israel - Español" },
{ value: "en-IT", name: "Italy - English" },
{ value: "es-IT", name: "Italia - Español" },
{ value: "it-IT", name: "Italia - Italiano" },
{ value: "en-JP", name: "Japan - English" },
{ value: "es-JP", name: "Japón - Español" },
{ value: "ja-JP", name: "日本 - 日本語" },
{ value: "en-MT", name: "Malta - English" },
{ value: "es-MT", name: "Malta - Español" },
{ value: "it-MT", name: "Malta - Italiano" },
{ value: "es-MA", name: "Marruecos - Español" },
{ value: "fr-MA", name: "Maroc - Français" },
{ value: "es-MR", name: "Mauritania - Español" },
{ value: "fr-MR", name: "Mauritanie - Français" },
{ value: "en-MX", name: "Mexico - English" },
{ value: "es-MX", name: "México - Español" },
{ value: "en-NL", name: "Netherlands - English" },
{ value: "es-NL", name: "Holanda - Español" },
{ value: "nl-NL", name: "Nederland - Nederlands" },
{ value: "en-NI", name: "Nicaragua - English" },
{ value: "es-NI", name: "Nicaragua - Español" },
{ value: "en-NG", name: "Nigeria - English" },
{ value: "es-NG", name: "Nigeria - Español" },
{ value: "en-PA", name: "Panama - English" },
{ value: "es-PA", name: "Panamá - Español" },
{ value: "en-PE", name: "Peru - English" },
{ value: "es-PE", name: "Perú - Español" },
{ value: "es-PT", name: "Portugal - Español" },
{ value: "pt-PT", name: "Portugal - Português" },
{ value: "en-PR", name: "Puerto Rico - English" },
{ value: "es-PR", name: "Puerto Rico - Español" },
{ value: "en-RU", name: "Russian Federation - English" },
{ value: "es-RU", name: "Rusia - Español" },
{ value: "ru-RU", name: "Rossiya - Русский" },
{ value: "de-CH", name: "Schweiz - Deutsch" },
{ value: "es-CH", name: "Suiza - Español" },
{ value: "fr-CH", name: "Suisse - Français" },
{ value: "es-SN", name: "Senegal - Español" },
{ value: "fr-SN", name: "Sénégal - Français" },
{ value: "en-ZA", name: "South Africa - English" },
{ value: "es-ZA", name: "Sudáfrica - Español" },
{ value: "en-SE", name: "Sweden - English" },
{ value: "es-SE", name: "Suecia - Español" },
{ value: "en-TR", name: "Turkey - English" },
{ value: "es-TR", name: "Turquía - Español" },
{ value: "en-US", name: "USA - English" },
{ value: "es-US", name: "USA - Español" },
{ value: "en-GB", name: "United Kingdom - English" },
{ value: "es-GB", name: "Reino Unido - Español" },
{ value: "en-UY", name: "Uruguay - English" },
{ value: "es-UY", name: "Uruguay - Español" },
{ value: "en-VE", name: "Venezuela - English" },
{ value: "es-VE", name: "Venezuela - Español" }
];
function printIB() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!(
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("IB", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers) || Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("BA", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
)
) {
return;
}
var createUrl = function(edition, currency) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["Economy", "Economy", "Business", "First"];
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printIB");
return;
}
var url =
"http://www.iberia.com/web/partnerLink.do?Adult=" +
pax.adults +
"&Child=" +
pax.children.length +
"&Infant=0&InfantLap=" +
pax.infLap +
"&PointOfSaleCountry=" +
edition[1] +
"&UserCurrency=" +
currency +
"&UserLanguage=" +
edition[0] +
"&TripType=";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
url += "OneWay";
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
) {
url += "RoundTrip";
} else {
url += "MultiCity";
}
var seg = 0;
var slice = 1;
var slicestr = "";
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
seg++;
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url += "&Origin" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
url += "&Destination" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url += "&Carrier" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
url +=
"&DepartureDate" +
seg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
url += "&FlightNumber" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&BookingCode" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
url += "&Cabin" + seg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
slicestr += (slicestr === "" ? "" : "%2C") + seg;
j += k;
}
url += "&Slice" + slice + "=" + slicestr;
slice++;
slicestr = "";
}
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].ibEdition.split("-");
var url = createUrl(edition, "USD");
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += ibEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("-"), "USD") +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Iberia",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printIB);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Iberia", "ibEdition", ibEditions, "en-US");
/***/ }),
/* 29 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const klEditions = [
{ value: "de_de", name: "Germany / Deutsch" },
{ value: "de_en", name: "Germany / English" },
{ value: "fr_en", name: "France / English" },
{ value: "fr_fr", name: "France / French" },
{ value: "nl_en", name: "Netherlands / English" },
{ value: "gb_en", name: "United Kingdom / English" },
{ value: "us_en", name: "US / English" }
];
const cabins = ["M", "W", "C", "F"];
function printKL() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
!Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("KL", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers)
) {
return;
}
var createUrl = function(edition) {
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printKL");
return;
}
const segs = Object(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* getCurrentSegs */ "b"])();
let url =
"https://www.klm.com/ams/search-web/api/metasearch?application=EBT7";
url +=
"&trip=" +
segs
.map(
seg =>
`${seg.orig}:${seg.dep.year}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "i"])(seg.dep.month)}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "i"])(
seg.dep.day
)}@${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to4digitTime */ "j"])(seg.dep.time)}:${seg.carrier}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to4digits */ "k"])(
seg.fnr
)}:${seg.bookingclass}>${seg.dest}`
)
.join("-");
url += "&ref=MS,fb=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].farebases.join(".");
url += "&numberOfAdults=" + pax.adults;
url += "&numberOfChildren=" + pax.children.length;
url += "&numberOfInfants=" + pax.infLap;
url +=
"&cabinClass=" +
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getCabin */ "b"])(Math.min(...segs.map(seg => seg.cabin)))];
url += "&country=" + edition[0];
url += "&language=" + edition[1];
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].klEdition.split("_");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error:Invalid KLM-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += klEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("_")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "KLM",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printKL);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("KLM", "klEdition", klEditions, "us_en");
/***/ }),
/* 30 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const laEditions = [
{ value: "es/ar", name: "Argentina / Spanish" },
{ value: "pt/br", name: "Brasil / Portuguese" },
{ value: "es/cl", name: "Chile / Spanish" },
{ value: "es/co", name: "Colombia / Spanish" },
{ value: "es/ec", name: "Ecuador / Spanish" },
{ value: "es/pe", name: "Peru / Spanish" },
{ value: "es/uy", name: "Uruguay / Spanish" },
{ value: "en/us", name: "US / English" },
{ value: "es/mx", name: "Mexico / Spanish" },
{ value: "en/ca", name: "Canada / English" },
{ value: "de/de", name: "Germany / German" },
{ value: "es/es", name: "Spain / Spanish" },
{ value: "fr/fr", name: "France / French" },
{ value: "en/it", name: "Italy / English" },
{ value: "en/uk", name: "UK / English" },
{ value: "en/ue", name: "Rest of Europe / English" },
{ value: "en/au", name: "Australia / English" },
{ value: "en/nz", name: "New Zealand / English" },
{ value: "es/un", name: "Other Countries / Spanish" },
{ value: "en/un", name: "Other Countries / English" }
];
function printLA() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("LA", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
) {
return;
}
// NOTE: currency will be determined by the locale; the deeplink does not support manually specifying the currency
var createUrl = function(edition) {
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printLA");
return;
}
var laUrl = '"trip":{"flights":[';
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// amount and currency required for each segment:
laUrl +=
'{"amount":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price +
'","currency":"' +
"USD" +
'","segments":[';
var mincabin = 3;
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
laUrl +=
'{"departure_airport":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
'","flight_number":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
'","departure_date":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month.toString()).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day.toString()).slice(-2) +
'","arrival_airport":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest +
'","farebasis":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].farebase +
'","marketing_airline":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
'","class":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass +
'","arrival_date":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.year.toString() +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.month.toString()).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.day.toString()).slice(-2) +
'"},';
// check the minimum cabin:
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
j += k;
}
laUrl = laUrl.substring(0, laUrl.length - 1) + "]},";
}
// Build passengers info:
var laPassengers =
'"passengers":{"numberAdults":"' +
pax.adults +
'","numberInfants":"' +
pax.infLap +
'","numberChildren":"' +
pax.children.length +
'"},';
// Compile the final URL (and encode it):
laUrl =
"https://ssl.lan.com/cgi-bin/compra/paso4.cgi?forced_home=" +
edition +
"&sessionParameters=%7B" +
encodeURIComponent(laPassengers) +
encodeURIComponent(laUrl.substring(0, laUrl.length - 1)) +
"]}}&utm_medium=metasearch&utm_source=gfs&utm_campaign=US_deeplink_s4&gclsrc=gf";
return laUrl;
};
var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].laEdition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += laEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "LATAM",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printLA);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("LATAM", "laEdition", laEditions, "en/us");
/***/ }),
/* 31 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
const lhEditions = [
{ value: "AL-gb", name: "Albania / English" },
{ value: "DZ-fr", name: "Algeria / Français" },
{ value: "AO-gb", name: "Angola / English" },
{ value: "AR-es", name: "Argentina / Español" },
{ value: "AM-gb", name: "Armenia / English" },
{ value: "AU-gb", name: "Australia / English" },
{ value: "AT-de", name: "Austria / Deutsch" },
{ value: "AT-gb", name: "Austria / English" },
{ value: "AZ-gb", name: "Azerbaijan / English" },
{ value: "BH-gb", name: "Bahrain / English" },
{ value: "BY-gb", name: "Belarus / English" },
{ value: "BE-gb", name: "Belgium / English" },
{ value: "BA-gb", name: "Bosnia/Hercegovina / English" },
{ value: "BR-pt", name: "Brazil / Português" },
{ value: "BG-gb", name: "Bulgaria / English" },
{ value: "CA-gb", name: "Canada / English" },
{ value: "CA-fr", name: "Canada / Français" },
{ value: "CL-es", name: "Chile / Español" },
{ value: "CN-gb", name: "China / English" },
{ value: "CO-es", name: "Colombia / Español" },
{ value: "HR-gb", name: "Croatia / English" },
{ value: "CY-gb", name: "Cyprus / English" },
{ value: "CZ-gb", name: "Czech Republic / English" },
{ value: "DK-gb", name: "Denmark / English" },
{ value: "EG-gb", name: "Egypt / English" },
{ value: "GQ-gb", name: "Equatorial Guinea / English" },
{ value: "ER-gb", name: "Eritrea / English" },
{ value: "EE-gb", name: "Estonia / English" },
{ value: "ET-gb", name: "Ethiopia / English" },
{ value: "FI-gb", name: "Finland / English" },
{ value: "FR-gb", name: "France / English" },
{ value: "FR-fr", name: "France / Français" },
{ value: "GA-gb", name: "Gabon / English" },
{ value: "GE-gb", name: "Georgia / English" },
{ value: "DE-de", name: "Germany / Deutsch" },
{ value: "DE-gb", name: "Germany / English" },
{ value: "GH-gb", name: "Ghana / English" },
{ value: "GR-gb", name: "Greece / English" },
{ value: "HK-gb", name: "Hong Kong / English" },
{ value: "HU-gb", name: "Hungary / English" },
{ value: "IS-gb", name: "Iceland / English" },
{ value: "IN-gb", name: "India / English" },
{ value: "ID-gb", name: "Indonesia / English" },
{ value: "IR-gb", name: "Iran / English" },
{ value: "IQ-gb", name: "Iraq / English" },
{ value: "IE-gb", name: "Ireland / English" },
{ value: "IL-gb", name: "Israel / English" },
{ value: "IT-it", name: "Italy / Italiano" },
{ value: "IT-gb", name: "Italy / English" },
{ value: "JP-gb", name: "Japan / English" },
{ value: "JO-gb", name: "Jordan / English" },
{ value: "KZ-gb", name: "Kazakhstan / English" },
{ value: "KE-gb", name: "Kenya / English" },
{ value: "KR-gb", name: "Republic of Korea / English" },
{ value: "KW-gb", name: "Kuwait / English" },
{ value: "LV-gb", name: "Latvia / English" },
{ value: "LB-gb", name: "Lebanon / English" },
{ value: "LY-gb", name: "Libya / English" },
{ value: "LT-gb", name: "Lithuania / English" },
{ value: "LU-gb", name: "Luxembourg / English" },
{ value: "MY-gb", name: "Malaysia / English" },
{ value: "MV-gb", name: "Maldives / English" },
{ value: "MT-gb", name: "Malta / English" },
{ value: "MU-gb", name: "Mauritius / English" },
{ value: "MX-es", name: "Mexico / Español" },
{ value: "MD-gb", name: "Moldova / English" },
{ value: "MA-fr", name: "Morocco / Français" },
{ value: "NL-gb", name: "Netherlands / English" },
{ value: "NZ-gb", name: "New Zealand / English" },
{ value: "NG-gb", name: "Nigeria / English" },
{ value: "NO-gb", name: "Norway / English" },
{ value: "OM-gb", name: "Oman / English" },
{ value: "PK-gb", name: "Pakistan / English" },
{ value: "PA-es", name: "Panama / Español" },
{ value: "PH-gb", name: "Philippines / English" },
{ value: "PL-gb", name: "Poland / English" },
{ value: "PL-pl", name: "Poland / Polski" },
{ value: "PT-gb", name: "Portugal / English" },
{ value: "PT-pt", name: "Portugal / Português" },
{ value: "QA-gb", name: "Qatar / English" },
{ value: "CD-gb", name: "Republic of the Congo / English" },
{ value: "RO-gb", name: "Romania / English" },
{ value: "RU-gb", name: "Russia / English" },
{ value: "RU-ru", name: "Russia / Русский" },
{ value: "SA-gb", name: "Saudi Arabia / English" },
{ value: "RS-gb", name: "Serbia / English" },
{ value: "SG-gb", name: "Singapore / English" },
{ value: "SK-gb", name: "Slovakia / English" },
{ value: "SI-gb", name: "Slovenia / English" },
{ value: "ZA-gb", name: "South Africa / English" },
{ value: "ES-gb", name: "Spain / English" },
{ value: "ES-es", name: "Spain / Español" },
{ value: "SD-gb", name: "Sudan / English" },
{ value: "SE-gb", name: "Sweden / English" },
{ value: "CH-de", name: "Switzerland / Deutsch" },
{ value: "CH-gb", name: "Switzerland / English" },
{ value: "CH-fr", name: "Switzerland / Français" },
{ value: "TW-gb", name: "Taiwan / English " },
{ value: "TH-gb", name: "Thailand / English" },
{ value: "TN-fr", name: "Tunisia / Français" },
{ value: "TR-gb", name: "Turkey / English" },
{ value: "TM-gb", name: "Turkmenistan / English" },
{ value: "UA-gb", name: "Ukraine / English" },
{ value: "AE-gb", name: "United Arab Emirates / English" },
{ value: "UK-gb", name: "United Kingdom / English" },
{ value: "US-gb", name: "United States / English" },
{ value: "VE-es", name: "Venezuela / Español" },
{ value: "VN-gb", name: "Vietnam / English" },
{ value: "XX-gb", name: "Other countries / English" }
];
function printLH() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!(
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("LH", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers) || Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("OS", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
)
) {
return;
}
var createUrl = function(edition) {
var style = 0; // 0 is direct booking - 1 is pre selected
var paxConfig = { allowinf: 1, youthage: 0 };
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printLH");
return false;
}
var amadeusConfig = {
sepcabin: 0,
detailed: 0,
allowpremium: 1,
inctimes: 0
};
if (style == 0) {
var url =
"https://book.lufthansa.com/lh/dyn/air-lh/revenue/availThenFare?";
url += "WDS_MSE_PRICE_CURRENCY=EUR&WDS_MSE_TOTAL_PRICE=1.00&";
} else {
var url = "https://book.lufthansa.com/lh/dyn/air-lh/revenue/viewFlights?";
}
url +=
"PORTAL=LH&COUNTRY_SITE=" +
edition[0].toUpperCase() +
"&POS=" +
edition[0].toUpperCase() +
"&LANGUAGE=" +
edition[1].toUpperCase() +
"&SECURE=TRUE&SITE=LUFTLUFT&SO_SITE_LH_FRONTEND_URL=www.lufthansa.com&WDS_WR_CHANNEL=LHCOM";
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusPax */ "a"])(pax, paxConfig);
url += tmpPax.url;
url += "&NB_ADT=" + tmpPax.adults;
url += "&NB_INF=" + tmpPax.infants;
url += "&NB_CHD=" + tmpPax.children;
url += "&TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusTriptype */ "b"])();
url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusUrl */ "c"])(amadeusConfig);
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].lhEdition.split("-");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error:Invalid Lufthansa-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += lhEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("-")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Lufthansa",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printLH);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Lufthansa", "lhEdition", lhEditions, "US-gb");
/***/ }),
/* 32 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const lxEditions = [
{ value: "de_de", name: "Germany" },
{ value: "us_en", name: "US" }
];
function printLX() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
!(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length <= 2 && Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("LX", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers))
) {
return;
}
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["", "", "/class-business", "/class-first"];
var mincabin = 3;
var createUrl = function(edition) {
var url =
"https://www.swiss.com/" +
edition[0] +
"/" +
edition[1] +
"/Book/Combined";
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printLX");
return;
}
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
url +=
"/" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig + "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest + "/";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr +
"-";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
j += k;
}
url = url.substring(0, url.length - 1);
url +=
"/" +
(i > 0 ? "to" : "from") +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
}
url +=
"/adults-" +
pax.adults +
"/children-" +
pax.children.length +
"/infants-" +
pax.infLap;
url += cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].lxEdition.split("_");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error:Invalid Swiss-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += lxEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("_")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Swiss",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printLX);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Swiss", "lxEdition", lxEditions, "us_en");
/***/ }),
/* 33 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
function printOA() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!(
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("OA", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers) || Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("A3", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
)
) {
return;
}
var url =
"https://e-ticket.olympicair.com/A3Responsive/dyn/air/booking/?BOOKING_FLOW=REVENUE&FLEXIBILITY=3&DISPLAY_TYPE=2&FORCE_OVERRIDE=TRUE&PRICING_TYPE=O";
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printOA");
return;
}
var paxConfig = { allowinf: 1, youthage: 0 };
var amadeusConfig = {
sepcabin: 0,
detailed: 0,
allowpremium: 1,
inctimes: 1
};
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusPax */ "a"])(pax, paxConfig);
url += "&TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusTriptype */ "b"])();
url += tmpPax.url;
url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusUrl */ "c"])(amadeusConfig);
url +=
"&SITE=E00KE00K&SKIN=skin_oa&SO_GL=%3CSO_GL%3E%09%3CGLOBAL_LIST%3E%09%09%3CNAME%3ESL_TRAVELLER_TYPE_LIST%3C%2FNAME%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EADT%3C%2FCODE%3E%3CLIST_VALUE%3EAdult%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EADT%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EB15%3C%2FCODE%3E%3CLIST_VALUE%3EYoung+adult%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EB15%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EC07%3C%2FCODE%3E%3CLIST_VALUE%3EYouth%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EC07%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EC03%3C%2FCODE%3E%3CLIST_VALUE%3EChild%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EC03%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EINF%3C%2FCODE%3E%3CLIST_VALUE%3EInfant%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EINF%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E++++++++%3CLIST_ELEMENT%3E%3CCODE%3EUNN%3C%2FCODE%3E%3CLIST_VALUE%3EUMNR%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EUNN%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%3C%2FGLOBAL_LIST%3E%3C%2FSO_GL%3E&SO_SITE_ETKT_Q_OFFICE_ID=ATHA308OA&SO_SITE_OFFICE_ID=ATHA308OA&SO_SITE_POINT_OF_SALE=ATH&SO_SITE_POINT_OF_TICKETING=ATH&SO_SITE_PREBOOK_DURATION=I180&SO_SITE_QUEUE_OFFICE_ID=ATHA308OA&SO_SITE_SP_QUEUE_OFFICE_ID=ATHA308OA";
url +=
"&LANGUAGE=" +
(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "oa" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "de"
? _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language.toUpperCase()
: "GB");
url +=
"&WDS_ADD_BOOK_NOW_BUTTON_EMAF=TRUE&WDS_ADVERTISING_PANEL_CONF_ACTIVATED=true&WDS_AFFILIATE_STATUS=C&WDS_AMOP_DISPLAY_PRIORITY=PAYPAL:SOFORT:KLARNA:EPS:IDEAL:BANCONTACT:ENTERCASH:ALIPAY:CUP&WDS_AMOP_FEE=PAYPAL:0;KLARNA:0;SOFORT:0;ENTERCASH:0;EPS:0;IDEAL:0;BANCONTACT:0;ALIPAY:0;CUP:0;&WDS_AMOP_FEE_APPLY=PER_TRANSACTION&WDS_AMOP_FEE_CALCULATION=PER&WDS_AMOP_LIST_ACTIVATED=PAYPAL;KLARNA;SOFORT;ENTERCASH;EPS;IDEAL;BANCONTACT;ALIPAY;CUP&WDS_AMOP_LIST_DEACTIVATED=&WDS_AMOP_TIME_LIMIT=PAYPAL:48;KLARNA:0;SOFORT:0;ENTERCASH:0;EPS:0;IDEAL:0;BANCONTACT:0;ALIPAY:24;CUP:24;&WDS_ANCILLARY_IN_MILES_ENABLED=TRUE&WDS_ASSISTANCE_REQUEST_ACTIVATED=TRUE&WDS_ATCOM_TIMEOUT=2000&WDS_AVAIL_PRICE_DISPLAY_TYPE=PER_ADT_WITH_TAX_NO_FEE&WDS_BAG_PLACEHOLDER_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_BAG_POLICY_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_BOOKING_LISTENER_URL=https://en.aegeanair.com/BookingListener.axd&WDS_BOUND_INDEX_EXPANDED=1&WDS_BUSINESS_MEAL_FARE_FAMILIES=BUSINESS:BUSINESTES:BUSINESSI&WDS_BUSINESS_MEAL_FREQUENT_FLYER_LEVELS=GOLD:SILVER&WDS_BUSINESS_MEAL_SUPPORTED=true&WDS_BUSINESS_ON_BOARD_DISPLAY_IN_LOGIN_PANEL=TRUE&WDS_BUSINESS_ON_BOARD_ENABLED=TRUE&WDS_BUSINESS_ON_BOARD_PAX_TYPE=ADT&WDS_CABIN_CLASS_DISPLAY=TRUE&WDS_CALENDAR_TO_UPSELL_FLEXIBLE_ACTIVATED=3&[email protected]&WDS_CAR_ENABLED=FALSE&WDS_CAR_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_CC_FEE_CARD_TYPE=VI:0;CA:0;MA:0;AX:0;DC:0;TP:;&WDS_CC_FEE_NO_CARD=0&WDS_CC_FEE_ZERO_DISPLAYED=FALSE&WDS_CC_LIST=VI:CA:MA:AX:DC:TP&WDS_CFF_TOUSE=CFF01FEB14&WDS_CHANNEL=B2C&WDS_CLEAR_CONTENT_URL=https://en.aegeanair.com/PlainContent.axd&WDS_DEVICE_NAME=DESKTOP_UNKNOWN&WDS_DEVICE_OS=Windows_10&WDS_DEVICE_VIEWPORT=L&WDS_DISPLAY_EMAIL_IN_BROWSER_URL=https://en.aegeanair.com/ConfirmationEmail.axd&WDS_DISPLAY_FBA_AND_REFUNDABILITY_PER_BOUND_IN_SB=TRUE&WDS_DISPLAY_GREEK_RURAL_ID=FALSE&WDS_DISPLAY_RECEIPT=SHOW&WDS_DISPLAY_REGULATION_CONDITIONS_COUNTRY=FR&WDS_DISPLAY_REGULATION_CONDITIONS_LANG=FR&WDS_DONATION_PANEL_ACTIVATED=FALSE&WDS_DONATION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_EMAF_BOOK_NOW_URL=https://en.aegeanair.com/PostHandler.axd&WDS_ENABLE_PARKING=FALSE&WDS_ENABLE_TOKEN=true&WDS_ENABLE_TOKEN_FOR_CAR=false&WDS_ENABLE_TOKEN_FOR_HOTEL=false&WDS_EPTS=unknown_call&WDS_EXTERNAL_CSS_URL=https://en.aegeanair.com/css/1A/responsive.css?v=10&WDS_EXTRAS_DEFAULT_PANEL_ORDER=BAGGAGE;MEALS;SPEQ;PETS;FASTTRACK;INSURANCE;PARKING;DONATION&WDS_FARE_COMPARISON_URL=https://en.aegeanair.com/FareFamilyComparison.axd&WDS_FARE_CONDITIONS_URL=https://en.aegeanair.com/ffc.axd&WDS_FASTTRACK_ELIGIBLE_AIRPORTS=LCA;ATH&WDS_FASTTRACK_ENABLED=TRUE&WDS_FASTTRACK_HANDLER_URL=https://en.aegeanair.com/FastTrackHandler.axd&WDS_FREQUENT_FLYER_PROGRAMS_OA_FLIGHTS=A3;AC;UA;MS;TK;NH;LH;SQ&WDS_GDPR_DISPLAY_PROMOS_CONFIRMATION_NO_CONSENT=FALSE&WDS_GDPR_HANDLER_URL=https://en.aegeanair.com/api/v1/members/checkgdpremailstatus&WDS_GO_TO_FINALIZE_URL=https://en.aegeanair.com/FinalizeRedirect.axd&WDS_GO_TO_MY_BOOKING_URL=https://en.aegeanair.com/MyBooking.axd&WDS_GO_TO_SEAT_SELECTION_URL=https://en.aegeanair.com/SeatRedirect.axd&WDS_HANDLE_SOS_AS_RM_FEE=TRUE&WDS_HOTEL_ENABLED=FALSE&WDS_HOTEL_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_HOTEL_POPUP_CONF_ACTIVATED=TRUE&WDS_HOTEL_POPUP_CONF_DELAY=10000&WDS_HOTEL_RECOMMENDATION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_INSURANCE_ACTIVATED=TRUE&WDS_INSURANCE_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_INSURANCE_PRESELECT=NONE&WDS_LATE_LOGIN_ENABLED=TRUE&WDS_LATE_LOGIN_URL=https://en.aegeanair.com/api/v1/members/loyaltyauth&WDS_MEAL_FORBIDDEN_PAX_TYPE=INF&WDS_MEAL_HANDLER_URL=https://en.aegeanair.com/MealHandler.axd&WDS_MEAL_LIST_PROPOSED=BBML:BLML:CHML:DBML:FPML:GFML:KSML:LCML:LFML:NLML:LSML:MOML:HNML:SFML:VOML:VLML:AVML:VJML:VGML:RVML&WDS_MILES_EARNED_HANDLER_URL=https://en.aegeanair.com/AwardedMiles.axd&WDS_NEW_PROMOTION_TYPE=NONE&WDS_NEW_PROMOTION_WEBSERVICES_ENVIRONMENT=PRODUCTION&WDS_OBFEE_FROM_NEWPOLICY_ACTIVATED=TRUE&WDS_OLYMPIC_TRACKING=true&WDS_ONLY_DIRECT_REQUESTED=FALSE&WDS_PARKING_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_PETS_ENABLED=TRUE&WDS_PHONE_PRESELECT_COUNTRY_CODE=US&WDS_PLUSGRADE_ENABLED=false&WDS_PLUSGRADE_HANDLER_URL=https://en.aegeanair.com/PlusgradeHandler.axd&WDS_PROMO_SLOT_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_PROMOCODE_ROUTE_AUTHORIZED=FALSE&WDS_PROMOTION_RBD_LIST=P&WDS_REBOOKING_HIGHSEASON_DATE=&WDS_RESKIN=TRUE&WDS_SB_HOTEL_TIMEOUT=15000&WDS_SEAT_BANNER_URL=https://en.aegeanair.com/SeatBanner.axd&WDS_SEATMAP_ENABLED=TRUE&WDS_SMS_OPTION=SHOW&[email protected]&[email protected]&WDS_SPECIAL_MEAL_LIST=BBML:BLML:CHML:DBML:FPML:GFML:KSML:LCML:LFML:NLML:LSML:MOML:HNML:SFML:VOML:VLML:AVML:VJML:VGML:RVML&WDS_SPECIAL_MEAL_SUPPORTED=TRUE&WDS_SPEQ_ENABLED=TRUE&WDS_TAX_BREAKDOWN_REGULATION_ALLOW_LANG=FR&WDS_TEALEAF_ENABLED=TRUE&WDS_TTT_ENABLED=TRUE&WDS_TTT_PROMO_FARES_REG_EXP=^PR([0-9])+$&WDS_TTT_SELECTION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_UMNR_ENTRY_OVERRIDE=WDS_HOTEL_ENABLED:FALSE;WDS_CAR_ENABLED:FALSE;WDS_TTT_ENABLED:false;WDS_FASTTRACK_ENABLED:false;WDS_ANCILLARY_IN_MILES:false;WDS_ENABLE_PARKING:false;WDS_ASSISTANCE_REQUEST_ACTIVATED:false;WDS_LATE_LOGIN_ENABLED:false;WDS_BUSINESS_ON_BOARD_ENABLED:false&WDS_URL_FACADE_ERROR=https://www.olympicair.com/en/Travel/Reservations/Tickets&WDS_URL_FACADE_NEWSEARCH=https://www.olympicair.com/en/Travel/Reservations/Tickets&WDS_URL_WAITING_CONTENT=https://en.aegeanair.com/WaitingPage.axd&WDS_USE_A3_SOS_INSURANCE_PANEL=TRUE&WDS_USEFUL_LINKS_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_VOUCHER_BANNER_ACTIVATED=TRUE&WDS_VOUCHER_BANNER_URL=https://en.aegeanair.com/PromoSlots.axd";
return {
url,
title: "Olympic Air"
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printOA);
/***/ }),
/* 34 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
function printPS() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("PS", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
) {
return;
}
var createUrl = function(edition, currency) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["Economy", "Economy", "Business", "First"];
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printPS");
return false;
}
var url =
"https://bookapi.flyuia.com/flights/metaSearchQuery?Adult=" +
pax.adults +
"&Child=" +
pax.children.length +
"&Infant=" +
pax.infLap +
"&PointOfSaleCountry=" +
edition[1] +
"&UserCurrency=" +
currency +
"&UserLanguage=" +
edition[0] +
"&TripType=";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
url += "OneWay";
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
) {
url += "RoundTrip";
} else {
url += "MultiCity";
}
var seg = 0;
var slice = 1;
var slicestr = "";
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
seg++;
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url += "&Origin" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
url += "&Destination" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url += "&Carrier" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
url +=
"&DepartureDate" +
seg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
url += "&FlightNumber" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&BookingCode" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
url += "&Cabin" + seg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
slicestr += (slicestr === "" ? "" : "%2C") + seg;
j += k;
}
url += "&Slice" + slice + "=" + slicestr;
slice++;
slicestr = "";
}
return url;
};
var url = createUrl(["EN", "US"], "USD");
if (!url) {
return;
}
return {
url,
title: "UIA"
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printPS);
/***/ }),
/* 35 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const qfEditions = [
{ value: "EN_AU", name: "Australia" },
{ value: "EN_NZ", name: "New Zealand" },
{ value: "EN_US", name: "United States" }
];
const qfCurrencies = [
{ value: "AUD", name: "AUD" },
{ value: "NZD", name: "NZD" },
{ value: "USD", name: "USD" }
];
function printQF() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
!(
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("QF", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers) ||
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("JQ", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers) ||
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("NZ", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers)
)
) {
return;
}
/* Qantas partner deep-link */
var createUrl = function(edition, currency) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var travelClass = ["ECO", "PRM", "BUS", "FIR"];
// Start the minimum cabin at highest possible (it will drop as we check each leg):
var mincabin = 3;
// Validate the passenger totals first:
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 16,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printQF");
return false;
}
var nbrChildren = pax.children.length;
if (!nbrChildren || typeof nbrChildren === "undefined") {
// default to 0 children if undefined:
nbrChildren = 0;
}
// Build search based on legs:
console.log("printQF: begin leg traversal...");
var url = "";
var prefixFltNbr = "sdcFlightNumber";
var prefixSegRbd = "sdcSegmentRbd";
var depAirports = "&depAirports=";
var destAirports = "&destAirports=";
var segDepAirports = "&depAirports=";
var segDestAirports = "&destAirports=";
var tmpTravelDates = "";
var finalDest = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].seg[0].dest;
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
// walks each parent "leg" of the itinerary (a leg can have multiple flight segments)
// Record the travel date for each leg:
if (tmpTravelDates === "" || !tmpTravelDates) {
tmpTravelDates +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2).toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2).toString() +
"0000";
} else {
tmpTravelDates +=
"%2C" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2).toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2).toString() +
"0000";
}
// Grab the origin airport of each leg:
if (segDepAirports.length > 13) segDepAirports += "%2C";
segDepAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig.toString();
// Grab the destination airport of each leg:
if (segDestAirports.length > 14) segDestAirports += "%2C";
segDestAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest.toString();
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
// walks each flight segment of the parent leg
var k = 0;
// Do we need to skip segments? fnr has to be the same and it must be just a layover:
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
) {
break;
}
k++;
}
// Construct URL for this leg:
url +=
"&" +
prefixFltNbr +
(i + 1) +
(j + 1) +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&" +
prefixSegRbd +
(i + 1) +
(j + 1) +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
// record the departing and destination airports for this leg:
// all departing airports:
if (depAirports.length > 13) depAirports += "%2C";
depAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig.toString();
// all destination airports:
if (destAirports.length > 14) destAirports += "%2C";
destAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest.toString();
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
j += k;
}
}
// Add airports:
// url += depAirports + destAirports;
url += segDepAirports + segDestAirports;
// Add travel dates:
url += "&travelDates=" + tmpTravelDates;
// Add price info:
url += "&sdcTripPriceAmount=0.00";
// Add device type:
url += "&QFdeviceType=desktop";
// Begin final deeplink URL construction:
var urlBase =
"https://book.qantas.com/qf-booking/dyn/air/tripflow.redirect?APPLICATION_NAME=SDC";
// Add edition / locale:
urlBase += "&USER_LANG=EN&USER_LOCALE=" + edition;
// Add class(es) of service:
urlBase +=
"&travelClass=" +
travelClass[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
// Add passenger info:
urlBase +=
"&numberOfAdults=" +
pax.adults +
"&numberOfChildren=" +
nbrChildren.toString() +
"&numberOfInfants=" +
pax.infLap;
// Add currency:
urlBase += "&sdcPriceCurrency=" + currency;
return urlBase + url;
};
// get edition
var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfEdition, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfCurrency);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += qfEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfCurrency) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Qantas",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printQF);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Qantas", "qfEdition", qfEditions, "EN_US");
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Qantas", "qfCurrency", qfCurrencies, "USD");
/***/ }),
/* 36 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
function printTK() {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
!Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("TK", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
) {
return;
}
var url =
"https://book.eu2.amadeus.com/plnext/turkishairlines/Override.action?";
var paxConfig = { allowinf: 1, youthage: 0 };
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printTK");
return;
}
var amadeusConfig = {
sepcabin: 0,
detailed: 0,
allowpremium: 1,
inctimes: 1
};
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusPax */ "a"])(pax, paxConfig);
url += "TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusTriptype */ "b"])();
url += tmpPax.url;
url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusUrl */ "c"])(amadeusConfig);
url +=
"&PORT_TSC=FALSE&SO_SITE_ALLOW_SERVICE_FEE=0&SO_SITE_SERVICE_FEE_MODE=AIR&SITE=BBAHBBAH";
url +=
"&LANGUAGE=" +
(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "tk" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "de"
? _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language.toUpperCase()
: "GB");
url += "&EMBEDDED_TRANSACTION=AirComplexAvailability&TRIPFLOW=YES";
url +=
"SO_LANG_TRIPFLOW_ENTRY_ADDRE=online.turkishairlines.com%2Finternet-booking%2Famadeus.tk&ARRANGE_BY=N&DIRECT_NON_STOP=false&REFRESH=0&SO_SITE_TAX_BREAKDOWN_DISP=TRUE&SO_LANG_DISABLE_X_XSS_PROTEC=TRUE&SO_SITE_REDIRECT_MODE=AUTOMATIC&SO_LANG_URL_AIR_NFS_SRCH=http%3A%2F%2Fonline.turkishairlines.com%2Finternet-booking%2Fstart.tk";
return {
url,
title: "Turkish"
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printTK);
/***/ }),
/* 37 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
const editions = [
{ name: "Argentina", host: "https://ar.jetcost.com/vuelos/busqueda" },
{ name: "Australia", host: "https://www.jetcost.com.au/flights/search" },
{ name: "Bolivia", host: "https://www.jetcost.com.bo/vuelos/busqueda" },
{ name: "Brasil", host: "https://www.jetcost.com.br/voos/pesquisa" },
{ name: "Canada (en)", host: "https://ca.jetcost.com/en/flights/search" },
{ name: "Canada (fr)", host: "https://ca.jetcost.com/fr/vols/recherche" },
{ name: "Chile", host: "https://www.jetcost.cl/vuelos/busqueda" },
{ name: "Colombia", host: "https://www.jetcost.com.co/vuelos/busqueda" },
{ name: "Danmark", host: "https://www.jetcost.dk/flyrejser/sogning" },
{ name: "Deutschland", host: "https://www.jetcost.de/fluge/suche" },
{ name: "España", host: "https://www.jetcost.es/vuelos/busqueda" },
{
name: "Estados Unidos (es)",
host: "https://us.jetcost.com/es/vuelos/busqueda"
},
{ name: "France", host: "https://www.jetcost.com/vols/recherche" },
{ name: "Hong Kong", host: "https://www.jetcost.hk/en/flights/search" },
{ name: "India", host: "https://www.jetcost.co.in/en/flights/search" },
{ name: "Indonesia", host: "https://www.jetcost.co.id/en/flights/search" },
{ name: "Ireland", host: "https://www.jetcost.ie/flights/search" },
{ name: "Italia", host: "https://www.jetcost.it/voli/ricerca" },
{ name: "Magyarország", host: "https://www.jetcost.hu/jaratok/kereses" },
{ name: "Malaysia", host: "https://www.jetcost.com.my/en/flights/search" },
{ name: "México", host: "https://www.jetcost.com.mx/vuelos/busqueda" },
{ name: "Nederland", host: "https://www.jetcost.nl/vluchten/zoeken" },
{ name: "New Zealand", host: "https://www.jetcost.co.nz/flights/search" },
{ name: "Norge", host: "https://www.jetcost.no/flyvninger/sok" },
{ name: "Österreich", host: "https://www.jetcost.at/fluge/suche" },
{ name: "Perú", host: "https://www.jetcost.com.pe/vuelos/busqueda" },
{ name: "Philippines", host: "https://www.jetcost.com.ph/en/flights/search" },
{ name: "Polska", host: "https://www.jetcost.pl/loty/wyszukiwanie" },
{ name: "Portugal", host: "https://www.jetcost.pt/voos/pesquisar" },
{ name: "România", host: "https://www.jetcost.ro/zboruri/cautare" },
{ name: "Россия", host: "https://www.jetcost.ru/reysy/poisk" },
{ name: "Singapore", host: "https://www.jetcost.com.sg/en/flights/search" },
{ name: "South Africa", host: "https://www.jetcost.co.za/en/flights/search" },
{ name: "Suomi", host: "https://www.jetcost.fi/lennot/hae" },
{ name: "Sverige", host: "https://www.jetcost.se/flighter/sokning" },
{ name: "Thailand", host: "https://www.jetcost.co.th/en/flights/search" },
{ name: "United Kingdom", host: "https://www.jetcost.co.uk/flights/search" },
{
name: "United States (en)",
host: "https://us.jetcost.com/en/flights/search"
},
{ name: "Uruguay", host: "https://www.jetcost.com.uy/vuelos/busqueda" },
{ name: "Venezuela", host: "https://www.jetcost.co.ve/vuelos/busqueda" },
{ name: "한국", host: "https://www.jetcost.co.kr/flights/search" }
];
const cabins = [0, 0, 1, 2];
function print() {
if (_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length > 2) return; // no multi segments
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length == 2 &&
!(
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].orig
)
)
return; // no open jaws
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_0__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printOvago");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
var createUrl = function(host) {
return `${host}?adults=${pax.adults}&children=${
pax.children.length
}&infants=${pax.infLap}&cabin_class=${cabin}&${_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin
.map(
(seg, i) =>
`trips[${i}][date]=${formatDate(seg.dep)}&trips[${i}][from_iata]=${
seg.orig
}&trips[${i}][to_iata]=${seg.dest}`
)
.join("&")}`;
};
var url = createUrl("https://us.jetcost.com/en/flights/search");
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Jetcost",
extra
};
}
function formatDate(date) {
return `${date.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "i"])(date.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "i"])(date.day)}`;
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_0__[/* registerLink */ "c"])("meta", print);
/***/ }),
/* 38 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const KayakEditions = [
{ name: "Kayak.com", host: "Kayak.com" },
{ name: "Kayak.de", host: "Kayak.de" },
{ name: "Kayak.it", host: "Kayak.it" },
{ name: "Kayak.es", host: "Kayak.es" },
{ name: "Kayak.co.uk", host: "Kayak.co.uk" },
{ name: "Kayak.dk", host: "Kayak.dk" },
{ name: "Kayak.mx", host: "Kayak.mx" },
{ name: "Kayak.fi", host: "Kayak.fi" },
{ name: "Kayak.fr", host: "Kayak.fr" },
{ name: "Kayak.no", host: "Kayak.no" },
{ name: "Kayak.nl", host: "Kayak.nl" },
{ name: "Kayak.pt", host: "Kayak.pt" },
{ name: "Kayak.se", host: "Kayak.se" },
{ name: "Kayak.ru", host: "Kayak.ru" }
];
function printKayak(method) {
//example https://www.Kayak.ru/flights/MOW-CPH...OW/2016-05-20/
// pax: #adults
// method: 0 = based on leg; 1 = based on segment
let desc;
var KayakCreateUrl = function(host) {
var KayakUrl = "https://www." + host + "/flights";
var segsize = 0;
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
if (method != 1) {
KayakUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig;
KayakUrl += "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest;
KayakUrl +=
"/" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
segsize++;
}
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
if (method == 1) {
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
KayakUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
KayakUrl += "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
KayakUrl +=
"/" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
j += k;
segsize++;
}
}
}
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].numPax > 1) {
KayakUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].numPax + "adults";
}
KayakUrl += getKayakCabin();
if (method == 1) {
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de") {
desc = "Benutze " + segsize + " Segment(e)";
} else {
desc = "Based on " + segsize + " segment(s)";
}
} else {
if (segsize == 1) {
return false;
}
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de") {
desc = "Benutze " + segsize + " Abschnitt(e)";
} else {
desc = "Based on " + segsize + " segment(s)";
}
}
return KayakUrl;
};
var KayakUrl = KayakCreateUrl("Kayak.com");
if (!KayakUrl) {
return;
}
var KayakExtra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
KayakExtra += KayakEditions.map(function(obj, i) {
return (
'<a href="' +
KayakCreateUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
}).join("<br/>");
KayakExtra += "</span></span>";
return {
url: KayakUrl,
title: "Kayak",
desc,
extra: KayakExtra
};
}
function getKayakCabin() {
switch (_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin) {
case "Y+":
return "/premium";
case "C":
return "/business";
case "F":
return "/first";
default:
return "/economy";
}
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("meta", () => printKayak(0));
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("meta", () => printKayak(1));
/***/ }),
/* 39 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
const MomondoEditions = [
{ name: "Momondo.com", host: "Momondo.com" },
{ name: "Momondo.de", host: "Momondo.de" },
{ name: "Momondo.it", host: "Momondo.it" },
{ name: "Momondo.es", host: "Momondo.es" },
{ name: "Momondo.co.uk", host: "Momondo.co.uk" },
{ name: "Momondo.dk", host: "Momondo.dk" },
{ name: "Momondo.mx", host: "Momondo.mx" },
{ name: "Momondo.fi", host: "Momondo.fi" },
{ name: "Momondo.fr", host: "Momondo.fr" },
{ name: "Momondo.no", host: "Momondo.no" },
{ name: "Momondo.nl", host: "Momondo.nl" },
{ name: "Momondo.pt", host: "Momondo.pt" },
{ name: "Momondo.se", host: "Momondo.se" },
{ name: "Momondo.ru", host: "Momondo.ru" }
];
function printMomondo() {
//example https://www.Momondo.ru/flightsearch/?...false&NA=false
//pax # &AD=2&CA=0,8 – not working with children (total amount of adults + kids goes to adult)
var momondoTravelClass = ["economy", "premium", "business", "first"];
var mincabin = 3;
var MomondoCreateUrl = function(host) {
var MomondoUrl = "https://www." + host + "/flight-search/";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length; i++) {
MomondoUrl +=
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].orig +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].dest +
"/" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].dep.day).slice(-2) +
"/";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg.length; j++) {
// check the min cabin:
if (_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
}
}
// Add travel class to URL:
MomondoUrl +=
momondoTravelClass[
_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
] + "/";
// Add passenger info to URL:
MomondoUrl += _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].numPax + "adults";
return MomondoUrl;
};
var MomondoUrl = MomondoCreateUrl("Momondo.com");
var MomondoExtra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
MomondoExtra += MomondoEditions.map(function(obj, i) {
return (
'<a href="' +
MomondoCreateUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
}).join("<br/>");
MomondoExtra += "</span></span>";
return {
url: MomondoUrl,
title: "Momondo",
extra: MomondoExtra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("meta", printMomondo);
/***/ }),
/* 40 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
const SkyscannerEditions = [
{ name: "Skyscanner.com", market: "US" },
{ name: "Skyscanner.de", market: "DE" },
{ name: "Skyscanner.it", market: "IT" },
{ name: "Skyscanner.es", market: "ES" },
{ name: "Skyscanner.co.uk", market: "UK" },
{ name: "Skyscanner.dk", market: "DK" },
{ name: "Skyscanner.mx", market: "MX" },
{ name: "Skyscanner.fi", market: "FI" },
{ name: "Skyscanner.fr", market: "FR" },
{ name: "Skyscanner.no", market: "NO" },
{ name: "Skyscanner.nl", market: "NL" },
{ name: "Skyscanner.pt", market: "PT" },
{ name: "Skyscanner.se", market: "SE" },
{ name: "Skyscanner.ru", market: "RU" }
];
function printSkyscanner() {
//example https://www.skyscanner.ru/transport/d/stoc/2017-09-02/akl/akl/2017-09-16/stoc/akl/2017-09-29/syd?adults=1&children=0&adultsv2=1&childrenv2=&infants=0&cabinclass=economy&ref=day-view#results
var skyscannerTravelClass = ["", "premiumeconomy", "business", "first"];
var SkyscannerCreateUrl = function(market) {
var skyscannerUrl = "http://www.skyscanner.com/transport/d";
var seg = 0;
var mincabin = 3;
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length; i++) {
skyscannerUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].orig;
// Add the segments:
skyscannerUrl +=
"/" +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
skyscannerUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dest;
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length; j++) {
// check the min cabin:
if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
}
seg++;
}
// Add passenger info:
skyscannerUrl +=
"?adults=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].numPax + "adultsv2=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].numPax;
// Add cabin / class of service:
skyscannerUrl +=
"&cabinclass=" +
skyscannerTravelClass[
_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
];
// Add locale ("market"):
skyscannerUrl += "&ref=day-view&market=" + market;
return skyscannerUrl;
};
var skyscannerUrl = SkyscannerCreateUrl("Skyscanner.com");
var SkyscannerExtra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
SkyscannerExtra += SkyscannerEditions.map(function(obj, i) {
return (
'<a href="' +
SkyscannerCreateUrl(obj.market) +
'" target="_blank">' +
obj.name +
"</a>"
);
}).join("<br/>");
SkyscannerExtra += "</span></span>";
return {
url: skyscannerUrl,
title: "Skyscanner",
extra: SkyscannerExtra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("meta", printSkyscanner);
/***/ }),
/* 41 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
function printCheapOair() {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["Economy", "PremiumEconomy", "Business", "First"];
var coaUrl = "http://www.cheapoair.com/default.aspx?tabid=1832&ulang=en";
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 12,
sepInfSeat: true,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printCheapOair");
return;
}
coaUrl +=
"&ad=" +
pax.adults +
"&ch=" +
pax.children.length +
"&sr=0&is=" +
pax.infSeat +
"&il=" +
pax.infLap;
coaUrl += "&pos=US";
coaUrl += "&dispr=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price;
var seg = 0;
var slices = {};
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
slices[i] = "";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
seg++;
if (slices[i]) slices[i] += ",";
slices[i] += seg;
coaUrl +=
"&cbn" +
seg +
"=" +
cabins[
_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto"
? _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin
: Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
];
coaUrl += "&carr" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
coaUrl +=
"&dd" +
seg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
coaUrl += "&og" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
coaUrl += "&dt" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest;
coaUrl += "&fbc" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
coaUrl += "&fnum" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
}
coaUrl += "&Slice" + (i + 1) + "=" + slices[i];
}
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
coaUrl += "&tt=OneWay";
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
) {
coaUrl += "&tt=RoundTrip";
} else {
coaUrl += "&tt=MultiCity";
}
return {
url: coaUrl,
title: "CheapOair"
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", printCheapOair);
/***/ }),
/* 42 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
const eDreams = [
{ name: "eDreams.com", domain: "www.edreams.com" },
{ name: "eDreams.au", domain: "www.edreams.com.au" },
{ name: "eDreams.br", domain: "www.edreams.com.br" },
{ name: "eDreams.ca", domain: "ca.edreams.com" },
{ name: "eDreams.ch", domain: "www.edreams.ch" },
{ name: "eDreams.cl", domain: "cl.edreams.com" },
{ name: "eDreams.cn", domain: "cn.edreams.com" },
{ name: "eDreams.co", domain: "co.edreams.com" },
{ name: "eDreams.co.uk", domain: "www.edreams.co.uk" },
{ name: "eDreams.com.ar", domain: "www.edreams.com.ar" },
{ name: "eDreams.com.mx", domain: "www.edreams.com.mx" },
{ name: "eDreams.com.ru", domain: "www.edreams.com.ru" },
{ name: "eDreams.com.tr", domain: "www.edreams.com.tr" },
{ name: "eDreams.de", domain: "www.edreams.de" },
{ name: "eDreams.es", domain: "www.edreams.es" },
{ name: "eDreams.fr", domain: "www.edreams.fr" },
{ name: "eDreams.gr", domain: "www.edreams.gr" },
{ name: "eDreams.hk", domain: "www.edreams.hk" },
{ name: "eDreams.id", domain: "id.edreams.com" },
{ name: "eDreams.in", domain: "www.edreams.in" },
{ name: "eDreams.it", domain: "www.edreams.it" },
{ name: "eDreams.jp", domain: "www.edreams.jp" },
{ name: "eDreams.ma", domain: "www.edreams.ma" },
{ name: "eDreams.net", domain: "www.edreams.net" },
{ name: "eDreams.nl", domain: "nl.edreams.com" },
{ name: "eDreams.nz", domain: "nz.edreams.com" },
{ name: "eDreams.pe", domain: "www.edreams.pe" },
{ name: "eDreams.ph", domain: "www.edreams.ph" },
{ name: "eDreams.pt", domain: "www.edreams.pt" },
{ name: "eDreams.sg", domain: "sg.edreams.com" },
{ name: "eDreams.th", domain: "th.edreams.com" },
{ name: "eDreams.za", domain: "za.edreams.com" }
];
const opodo = [
{ name: "Opodo.com", domain: "www.opodo.com" },
{ name: "Opodo.at", domain: "www.opodo.at" },
{ name: "Opodo.be", domain: "www.opodo.be" },
{ name: "Opodo.ch", domain: "www.opodo.ch" },
{ name: "Opodo.co.uk", domain: "www.opodo.co.uk" },
{ name: "Opodo.com.au", domain: "www.opodo.com.au" },
{ name: "Opodo.de", domain: "www.opodo.de" },
{ name: "Opodo.dk", domain: "www.opodo.dk" },
{ name: "Opodo.es", domain: "www.opodo.es" },
{ name: "Opodo.fi", domain: "www.opodo.fi" },
{ name: "Opodo.fr", domain: "www.opodo.fr" },
{ name: "Opodo.it", domain: "www.opodo.it" },
{ name: "Opodo.nl", domain: "www.opodo.nl" },
{ name: "Opodo.no", domain: "www.opodo.no" },
{ name: "Opodo.pl", domain: "www.opodo.pl" },
{ name: "Opodo.pt", domain: "www.opodo.pt" },
{ name: "Opodo.se", domain: "www.opodo.se" }
];
const travellink = [
{ name: "Travellink.com", domain: "www.travellink.com" },
{ name: "Travellink.de", domain: "www.travellink.de" },
{ name: "Travellink.dk", domain: "www.travellink.dk" },
{ name: "Travellink.fi", domain: "www.travellink.fi" },
{ name: "Travellink.is", domain: "www.travellink.is" },
{ name: "Travellink.no", domain: "www.travellink.no" },
{ name: "Travellink.se", domain: "www.travellink.se" }
];
const cabins = ["TOURIST", "PREMIUM_ECONOMY", "BUSINESS", "FIRST"];
function printEdreams(title, editions) {
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printEdreams");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
var createUrl = function(domain) {
const deeplink = `/results/type=M;${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map(
(itin, i) =>
`dep${i}=${itin.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "i"])(itin.dep.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "i"])(
itin.dep.day
)};from${i}=${itin.orig};to${i}=${itin.dest}`
)
.join(";")};class=${cabin};adults=${pax.adults};children=${
pax.children.length
};infants=${
pax.infLap
};collectionmethod=false;airlinescodes=false;internalSearch=true`;
const segKeys = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map(
(itin, i) =>
`segmentKey${i}=0,${itin.seg
.map(seg => seg.carrier + seg.fnr)
.join(",")}`
)
.join("&");
return `https://${domain}/travel/?landingPageType=TEST_AB&searchId=${new Date().getTime()}&deeplink=${deeplink}&fareItineraryKey=0,1A&${segKeys}&searchMainProductTypeName=FLIGHT`;
};
var url = createUrl(editions[0].domain);
if (!url) return;
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.domain) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title,
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printEdreams("eDreams", eDreams));
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printEdreams("Opodo", opodo));
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printEdreams("Travellink", travellink));
/***/ }),
/* 43 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
const editions = [
{ name: "Seat24.se", host: "www.seat24.se" },
{ name: "Seat24.de", host: "www.seat24.de" },
{ name: "Seat24.dk", host: "www.seat24.dk" },
{ name: "Seat24.fi", host: "www.seat24.fi" },
{ name: "Seat24.no", host: "www.seat24.no" },
{ name: "Flygvaruhuset.se", host: "www.flygvaruhuset.se" },
{ name: "Travelpartner.se", host: "www.travelpartner.se" },
{ name: "Travelpartner.fi", host: "www.travelpartner.fi" },
{ name: "Travelpartner.no", host: "www.travelpartner.no" },
{ name: "Budjet.se", host: "www.budjet.se" },
{ name: "Budjet.fi", host: "www.budjet.fi" },
{ name: "Budjet.no", host: "www.budjet.no" },
{ name: "Budjet.dk", host: "www.budjet.dk" },
{ name: "Goleif.dk", host: "www.goleif.dk" },
{ name: "Travelfinder.se", host: "www.travelfinder.se" },
{ name: "Gotogate.no", host: "www.gotogate.no" },
{ name: "Gotogate.at", host: "www.gotogate.at" },
{ name: "Gotogate.be", host: "be.gotogate.com" },
{ name: "Gotogate.bg", host: "bg.gotogate.com" },
{ name: "Gotogate.ch", host: "www.gotogate.ch" },
{ name: "Gotogate.cz", host: "cz.gotogate.com" },
{ name: "Gotogate.es", host: "www.gotogate.es" },
{ name: "Gotogate.fr", host: "www.gotogate.fr" },
{ name: "Gotogate.gr", host: "www.gotogate.gr" },
{ name: "Gotogate.hu", host: "hu.gotogate.com" },
{ name: "Gotogate.ie", host: "ie.gotogate.com" },
{ name: "Gotogate.it", host: "www.gotogate.it" },
{ name: "Gotogate.pl", host: "www.gotogate.pl" },
{ name: "Gotogate.pt", host: "www.gotogate.pt" },
{ name: "Gotogate.ro", host: "ro.gotogate.com" },
{ name: "Gotogate.sk", host: "www.gotogate.sk" },
{ name: "Gotogate.tr", host: "tr.gotogate.com" },
{ name: "Gotogate.com.ua", host: "www.gotogate.com.ua" },
{ name: "Gotogate.co.uk", host: "www.gotogate.co.uk" },
{ name: "Flybillet.dk", host: "www.flybillet.dk" },
{ name: "Travelstart.se", host: "www.travelstart.se" },
{ name: "Travelstart.de", host: "www.travelstart.de" },
{ name: "Travelstart.dk", host: "www.travelstart.dk" },
{ name: "Travelstart.fi", host: "www.travelstart.fi" },
{ name: "Travelstart.no", host: "www.travelstart.no" },
{ name: "Supersaver.se", host: "www.supersavertravel.se" },
{ name: "Supersaver.dk", host: "www.supersaver.dk" },
{ name: "Supersaver.fi", host: "www.supersaver.fi" },
{ name: "Supersaver.nl", host: "www.supersaver.nl" },
{ name: "Supersaver.no", host: "www.supersaver.no" },
{ name: "Supersaver.ru", host: "www.supersaver.ru" }
];
function printEtraveli() {
if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 2) return; // no multi segments
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length == 2 &&
!(
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].orig
)
)
return; // no open jaws
var convertDate = function(date, withYear) {
return (
("0" + date.day).slice(-2) +
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* monthnumberToName */ "g"])(date.month) +
(withYear ? date.year.toString().slice(-2) : "")
);
};
var createUrl = function(host) {
var ggUrl = "http://" + host + "/air/";
ggUrl +=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].orig +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dest +
convertDate(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dep, false);
if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 1)
ggUrl += convertDate(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].dep, false);
ggUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].numPax;
ggUrl +=
"?selectionKey=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map(function(itin) {
return itin.seg
.map(function(seg) {
return (
seg.carrier +
seg.fnr +
"-" +
convertDate(seg.dep, true) +
"-" +
seg.bookingclass
);
})
.join("_");
})
.join("_");
return ggUrl;
};
// picked seat24 as main one, but could be any of them
var ggUrl = createUrl("www.seat24.de");
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url: ggUrl,
title: "Seat24.de",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", printEtraveli);
/***/ }),
/* 44 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const editions = [
{ name: "expedia.com", host: "expedia.com" },
{ name: "orbitz.com", host: "orbitz.com" },
{ name: "expedia.ca", host: "expedia.ca" },
{ name: "expedia.de", host: "expedia.de" },
{ name: "expedia.it", host: "expedia.it" },
{ name: "expedia.es", host: "expedia.es" },
{ name: "expedia.co.uk", host: "expedia.co.uk" },
{ name: "expedia.dk", host: "expedia.dk" },
{ name: "expedia.mx", host: "expedia.mx" },
{ name: "expedia.fi", host: "expedia.fi" },
{ name: "expedia.fr", host: "expedia.fr" },
{ name: "expedia.no", host: "expedia.no" },
{ name: "expedia.nl", host: "expedia.nl" },
{ name: "expedia.ch", host: "expedia.ch" },
{ name: "expedia.se", host: "expedia.se" },
{ name: "expedia.at", host: "expedia.at" },
{ name: "expedia.co.jp", host: "expedia.co.jp" }
];
function printExpedia() {
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 18,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printExpedia");
return;
}
let expediaClasses = ["coach", "premium", "business", "first"];
let minCabin = 3;
let ExpediaCreateUrl = function(expediaBase) {
let segUrl = "";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
segUrl +=
"&legs%5B" + i + "%5D.departureAirport=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig;
segUrl +=
"&legs%5B" + i + "%5D.arrivalAirport=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest;
segUrl +=
"&legs%5B" +
i +
"%5D.departureDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].arr.year.toString() +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
segUrl += (
"&legs%5B" +
i +
"%5D.segments%5B" +
j +
"%5D=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
"-" +
expediaClasses[
_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? minCabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
] +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr
).toLowerCase();
// check the min cabin:
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin < minCabin) {
minCabin = _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
}
}
// Build the URL:
let baseUrl =
"https://www." +
expediaBase +
"/Flight-Search-Details?action=dl&trip=MultipleDestination";
// Add travel class to URL:
baseUrl +=
"&cabinClass=" +
expediaClasses[
_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? minCabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
];
// Add passenger info to URL:
baseUrl += "&adults=" + pax.adults;
return baseUrl + segUrl;
};
var ExpediaUrl = ExpediaCreateUrl("expedia.com");
var container =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
container += editions
.map(function(obj, i) {
return (
'<a href="' +
ExpediaCreateUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
container += "</span></span>";
return {
url: ExpediaUrl,
title: "Expedia",
extra: container
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("otas", printExpedia);
/***/ }),
/* 45 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
const editions = [
{ name: "English", url: "" },
{ name: "Español", url: "es" },
{ name: "Português", url: "pt" },
{ name: "Deutsch", url: "de" },
{ name: "Italiano", url: "it" },
{ name: "Dansk", url: "da" },
{ name: "Svenska", url: "sv" },
{ name: "Norsk", url: "no" },
{ name: "Nederlands", url: "nl" },
{ name: "Finnish", url: "fi" },
{ name: "Polish", url: "pl" },
{ name: "Turkish", url: "tk" }
];
function printFN() {
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printFN");
return;
}
const createUrl = function(edition) {
let search = `cref=&tty=1&curr=${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].cur ||
"USD"}&nativecurr=&cls=0&adt=${pax.adults}&chd=${
pax.children.length
}&inf=${pax.infLap}&tot=0.00&tax=0.00&`;
search += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map((leg, i) => {
const key = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length === 2 && i === 1 ? "ib" : "ob";
return leg.seg
.map(
(seg, j) =>
`${key}${i + 1}${j ? j : ""}=${seg.carrier}${seg.fnr}${
seg.bookingclass
}!${formatDate(seg.dep)}!${seg.orig}${seg.dest}!${formatDate(
seg.arr
)}`
)
.join("&");
})
.join("&");
return `https://www.flightnetwork.com/${edition.url}${
edition.url ? "/" : ""
}flights/showflight?enc=${btoa(search)}`;
};
var url = createUrl(editions[0]);
if (!url) return;
let extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' + createUrl(obj) + '" target="_blank">' + obj.name + "</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "FlightNetwork",
extra
};
}
function formatDate(date) {
return (
"" +
date.year +
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "i"])(date.month) +
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "i"])(date.day) +
date.time24.replace(":", "")
);
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", printFN);
/***/ }),
/* 46 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const editions = [
{ lang: "pl", country: "PL" },
{ lang: "bg", country: "BG" },
{ lang: "ro", country: "RO" },
{ lang: "cs", country: "CZ" },
{ lang: "hu", country: "HU" },
{ lang: "sk", country: "SK" },
{ lang: "pt", country: "PT" },
{ lang: "es", country: "ES" },
{ lang: "en", country: "GB" },
{ lang: "en", country: "IE" },
{ lang: "en", country: "US" },
{ lang: "it", country: "IT" },
{ lang: "de", country: "DE" },
{ lang: "fr", country: "FR" },
{ lang: "el", country: "GR" }
];
function printLucky2go() {
var createUrl = function(edition) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["Economy", "Economy", "Business", "First"];
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])(
"Error: Failed to validate Passengers in printLucky2go"
);
return;
}
var url =
"https://secure.lucky2go.com/flights/options/?Adult=" +
pax.adults +
"&Child=" +
pax.children.length +
"&Infant=0&InfantLap=" +
pax.infLap +
"&PointOfSaleCountry=" +
edition.country +
"&UserCurrency=" +
(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].cur || "USD") +
"&DisplayedPrice=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price +
"&DisplayedPriceCurrency=" +
(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].cur || "USD") +
"&UserLanguage=" +
edition.lang +
"&TripType=";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
url += "OneWay";
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
) {
url += "RoundTrip";
} else {
url += "MultiCity";
}
var seg = 0;
var slice = 1;
var slicestr = "";
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
seg++;
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url += "&Origin" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
url += "&Destination" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url += "&Carrier" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
url +=
"&DepartureDate" +
seg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
url += "&FlightNumber" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&BookingCode" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
url += "&Cabin" + seg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
slicestr += (slicestr === "" ? "" : "%2C") + seg;
j += k;
}
url += "&Slice" + slice + "=" + slicestr;
slice++;
slicestr = "";
}
return url;
};
// get edition
var url = createUrl({ lang: "en", country: "US" });
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(
edition =>
`<a href="${createUrl(edition)}" target="_blank">${
edition.lang
}‑${edition.country}</a>`
)
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "lucky2go",
extra
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("otas", printLucky2go);
/***/ }),
/* 47 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
const cabins = ["Y", "S", "C", "F"];
function printOvago(title, host, cid) {
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printOvago");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
const segs = Object(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* getCurrentSegs */ "b"])();
const search = `${cid}*${cabin}${pax.adults}${pax.children.length}${
pax.infSeat
}0/${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map(
itin =>
itin.orig +
itin.dest +
`${itin.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "i"])(itin.dep.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "i"])(
itin.dep.day
)}`
)
.join("/")}*${segs[segs.length - 1].carrier}~#${segs
.map(seg => seg.carrier + seg.fnr)
.join("#")}`;
let url = `https://${host}/ms?cid=${cid}&key=1_${btoa(search)}`;
return {
url,
title
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printOvago("Ovago", "ovago.com", "OSKDCR"));
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printOvago("Hop2", "hop2.com", "OSKDCR"));
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printOvago("Wowfare", "wowfare.com", "OSKDCR"));
/***/ }),
/* 48 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
function printPriceline() {
var pricelineurl = "https://www.priceline.com/m/fly/search";
var searchparam = "~";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
searchparam = searchparam.substring(0, searchparam.length - 1) + "-";
pricelineurl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].orig;
pricelineurl += "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dest;
pricelineurl +=
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].arr.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
searchparam += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].orig;
searchparam +=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")).slice(-4);
searchparam += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
searchparam +=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time.replace(":", "")).slice(
-4
);
searchparam +=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].bookingclass +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].carrier +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].fnr;
searchparam += "~";
j += k;
}
}
searchparam = searchparam.substring(1, searchparam.length - 1);
var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* validatePaxcount */ "d"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 18,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printPriceline");
return;
}
pricelineurl +=
"/desktop/details/R_" +
searchparam +
"_" +
(pax.adults + pax.children.length + pax.infLap) +
"_USD0.00_1-1-1?num-adults=" +
pax.adults +
"&num-children=" +
pax.children.length +
"&num-infants=" +
pax.infLap +
"&num-youths=0";
return {
url: pricelineurl,
title: "Priceline"
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", printPriceline);
/***/ }),
/* 49 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// EXTERNAL MODULE: ./src/settings/appSettings.js
var appSettings = __webpack_require__(4);
// EXTERNAL MODULE: ./src/settings/userSettings.js
var userSettings = __webpack_require__(2);
// EXTERNAL MODULE: ./src/settings/itaSettings.js
var itaSettings = __webpack_require__(5);
// EXTERNAL MODULE: ./src/utils.js
var utils = __webpack_require__(1);
// EXTERNAL MODULE: ./src/parse/itin.js
var parse_itin = __webpack_require__(0);
// EXTERNAL MODULE: ./src/settings/translations.js
var translations = __webpack_require__(8);
// EXTERNAL MODULE: ./src/print/links.js
var links = __webpack_require__(3);
// CONCATENATED MODULE: ./src/print/index.js
function render() {
// Editor mode?
if (
userSettings["a" /* default */].enableEditormode == 1 &&
Object(utils["d" /* findtargets */])("editoritem").length === 0
) {
Object(utils["l" /* toggleVis */])(document.getElementById("mptStartparse"), "inline-block");
addEditor();
return;
} else if (Object(utils["d" /* findtargets */])("editoritem").length > 0) {
Object(utils["l" /* toggleVis */])(document.getElementById("mptStartparse"));
removeEditor();
Object(parse_itin["c" /* readItinerary */])();
}
bindPageLayout();
if (userSettings["a" /* default */].enableFarerules == 1) bindRulelinks();
if (userSettings["a" /* default */].timeformat == "24h") bind24HourTime();
if (
userSettings["a" /* default */].language !== "en" &&
translations["a" /* default */][userSettings["a" /* default */].language].resultpage !== undefined
)
bindTranslations(
"resultpage",
userSettings["a" /* default */].language,
Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1).nextElementSibling
);
if (userSettings["a" /* default */].enablePricebreakdown == 1) bindPriceBreakdown();
if (userSettings["a" /* default */].enableInlineMode == 1) printCPM();
Object(links["b" /* printLinksContainer */])();
if (userSettings["a" /* default */].enableSeatguru == 1) bindSeatguru();
if (userSettings["a" /* default */].enablePlanefinder == 1) bindPlanefinder();
if (userSettings["a" /* default */].enableWheretocredit == 1) bindWheretocredit();
}
function cleanUp() {
// empty outputcontainer
if (document.getElementById("powertoolslinkcontainer") != undefined) {
var div = document.getElementById("powertoolslinkcontainer");
div.innerHTML = "";
}
// S&D powertool items
var elems = Object(utils["d" /* findtargets */])("powertoolsitem");
for (var i = elems.length - 1; i >= 0; i--) {
elems[i].parentElement.removeChild(elems[i]);
}
// S&D price breakdown
var pbd = Object(utils["c" /* findtarget */])("pricebreakdown", 1);
if (pbd != undefined) pbd.parentElement.removeChild(pbd);
}
function addEditor() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
var target = findItinTarget(i + 1, j + 1, "cabin").firstElementChild;
var tmp = target.innerHTML;
var bc = tmp.substr(tmp.length - 2, 1);
var cabin = tmp.substr(0, tmp.length - 4);
var cabins = [
["Economy", "Y"],
["Premium Economy", "Y+"],
["Business", "C"],
["First", "F"]
];
var str = '<select style="width:40px" class="editoritem">';
for (var k = 0; k < cabins.length; k++) {
str +=
'<option value="' +
cabins[k][0] +
'"' +
(cabins[k][0] === cabin ? ' selected="selected"' : "") +
">" +
cabins[k][1] +
"</option>";
}
str += "</select>";
str +=
' (<input type="text" class="editoritem" value="' +
bc +
'" style="width:20px;text-align:center">)';
target.innerHTML = str;
}
}
}
function removeEditor() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
var target = findItinTarget(i + 1, j + 1, "cabin").firstElementChild;
var cabin =
target.firstElementChild.options[target.firstElementChild.selectedIndex]
.value;
var bc = target.firstElementChild.nextElementSibling.value;
var str = cabin + " (" + bc + ")";
target.innerHTML = str;
}
}
}
function bindPageLayout() {
if (userSettings["a" /* default */].enableInlineMode == 1) {
Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.milagecontainer, 1).setAttribute(
"rowspan",
"10"
);
} else if (
userSettings["a" /* default */].enableInlineMode == 0 &&
userSettings["a" /* default */].enablePricebreakdown == 1
) {
Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.milagecontainer, 1).setAttribute(
"rowspan",
"3"
);
} else {
Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.milagecontainer, 1).setAttribute(
"rowspan",
"2"
);
}
}
function bind24HourTime() {
// lets do the time-replacement
const segs = Object(parse_itin["b" /* getCurrentSegs */])();
if (segs.length > 0) {
const target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1)
.nextElementSibling;
for (let i = 0; i < segs.length; i++) {
target.innerHTML = target.innerHTML.replace(
new RegExp(segs[i].dep.timeDisplay, "g"),
segs[i].dep.time24
);
target.innerHTML = target.innerHTML.replace(
new RegExp(segs[i].arr.timeDisplay, "g"),
segs[i].arr.time24
);
}
}
}
function bindRulelinks() {
var i = 0;
var j = 0;
var t = 1;
let target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.rulescontainer, t);
if (target != undefined) {
do {
var current = Number(
target.firstElementChild.innerHTML.replace(/[^\d]/gi, "")
);
if (i > current) {
j++;
i = 0;
}
target = target.nextElementSibling.nextElementSibling.nextElementSibling;
var targeturl =
window.location.href.replace(/view-details/, "view-rules") +
";fare-key=" +
j +
"/" +
i;
var newlink = document.createElement("a");
newlink.setAttribute("class", "gwt-Anchor");
newlink.setAttribute("href", targeturl);
newlink.setAttribute("target", "_blank");
var linkText = document.createTextNode("rules");
newlink.appendChild(linkText);
target.parentElement.replaceChild(newlink, target);
i++;
t++;
target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.rulescontainer, t);
} while (target != undefined);
}
}
function bindPriceBreakdown() {
var basefares = 0;
var taxes = 0;
var surcharges = 0;
var basefound = 0;
var cur = "";
// define searchpattern to detect carrier imposed surcharges
var searchpatt = new RegExp("((YQ|YR))");
var t = 1;
var target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbLeft, t);
if (userSettings["a" /* default */].enableInlineMode == 0) {
var output = "";
var count = 0;
}
if (target != undefined) {
do {
var type = target.firstChild.firstChild.nodeType;
if (type == 1) {
basefound = 1;
//it's a basefare
var price = Number(
target.nextElementSibling.firstElementChild.innerHTML.replace(
/[^\d]/gi,
""
)
);
if (cur == "")
cur = target.nextElementSibling.firstElementChild.innerHTML.replace(
/[\d,.]/g,
""
);
basefares += price;
} else if (basefound == 1 && type == 3) {
//its a pricenode
var name = target.firstElementChild.innerHTML;
var price = Number(
target.nextElementSibling.firstElementChild.innerHTML.replace(
/[^\d]/gi,
""
)
);
if (
Object(utils["e" /* hasClass */])(
target.nextElementSibling,
itaSettings["a" /* default */].resultpage.htbGreyBorder
)
) {
//we are done for this container
var sum = basefares + taxes + surcharges;
if (userSettings["a" /* default */].enableInlineMode == 1) {
var newtr = document.createElement("tr");
newtr.innerHTML =
'<td class="' +
itaSettings["a" /* default */].resultpage.htbLeft +
'"><div class="gwt-Label">Basefare per passenger (' +
((basefares / sum) * 100).toFixed(2).toString() +
'%)</div></td><td class="' +
itaSettings["a" /* default */].resultpage.htbGreyBorder +
'"><div class="gwt-Label">' +
cur +
(basefares / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</div></td>";
target.parentElement.parentElement.insertBefore(
newtr,
target.parentElement
);
var newtr = document.createElement("tr");
newtr.innerHTML =
'<td class="' +
itaSettings["a" /* default */].resultpage.htbLeft +
'"><div class="gwt-Label">Taxes per passenger (' +
((taxes / sum) * 100).toFixed(2).toString() +
'%)</div></td><td class="' +
itaSettings["a" /* default */].resultpage.htbRight +
'"><div class="gwt-Label">' +
cur +
(taxes / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</div></td>";
target.parentElement.parentElement.insertBefore(
newtr,
target.parentElement
);
var newtr = document.createElement("tr");
newtr.innerHTML =
'<td class="' +
itaSettings["a" /* default */].resultpage.htbLeft +
'"><div class="gwt-Label">Surcharges per passenger (' +
((surcharges / sum) * 100).toFixed(2).toString() +
'%)</div></td><td class="' +
itaSettings["a" /* default */].resultpage.htbRight +
'"><div class="gwt-Label">' +
cur +
(surcharges / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</div></td>";
target.parentElement.parentElement.insertBefore(
newtr,
target.parentElement
);
var newtr = document.createElement("tr");
newtr.innerHTML =
'<td class="' +
itaSettings["a" /* default */].resultpage.htbLeft +
'"><div class="gwt-Label">Basefare + Taxes per passenger (' +
(((basefares + taxes) / sum) * 100).toFixed(2).toString() +
'%)</div></td><td class="' +
itaSettings["a" /* default */].resultpage.htbGreyBorder +
'"><div class="gwt-Label">' +
cur +
((basefares + taxes) / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</div></td>";
target.parentElement.parentElement.insertBefore(
newtr,
target.parentElement
);
} else {
count++;
output += '<table style="float:left; margin-right:15px;"><tbody>';
output +=
'<tr><td colspan=3 style="text-align:center;">Price breakdown ' +
count +
": </td></tr>";
output +=
"<tr><td>" +
cur +
' per mile</td><td colspan=2 style="text-align:center;">' +
(sum / parse_itin["a" /* currentItin */].dist / 100).toFixed(4).toString() +
"</td></tr>";
output +=
'<tr><td>Basefare</td><td style="padding:0px 3px;text-align:right;">' +
((basefares / sum) * 100).toFixed(1).toString() +
'%</td><td style="text-align:right;">' +
cur +
(basefares / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</td></tr>";
output +=
'<tr><td>Tax</td><td style="padding:0px 3px;text-align:right;">' +
((taxes / sum) * 100).toFixed(1).toString() +
'%</td><td style="text-align:right;">' +
cur +
(taxes / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</td></tr>";
output +=
'<tr><td>Surcharges</td><td style="padding:0px 3px;text-align:right;">' +
((surcharges / sum) * 100).toFixed(1).toString() +
'%</td><td style="text-align:right;">' +
cur +
(surcharges / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</td></tr>";
output +=
'<tr><td style="border-top: 1px solid #878787;padding:2px 0">Bf+Tax</td><td style="border-top: 1px solid #878787;padding:2px 3px;text-align:right;">' +
(((basefares + taxes) / sum) * 100).toFixed(1).toString() +
'%</td><td style="border-top: 1px solid #878787;padding:2px 0; text-align:right;">' +
cur +
((basefares + taxes) / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</td></tr>";
output += "</tbody></table>";
}
parse_itin["a" /* currentItin */].basefares = +(basefares / 100).toFixed(2);
parse_itin["a" /* currentItin */].taxes = +(taxes / 100).toFixed(2);
parse_itin["a" /* currentItin */].surcharges = +(surcharges / 100).toFixed(2);
// reset var
basefound = 0;
basefares = 0;
taxes = 0;
surcharges = 0;
} else {
//Carrier surcharge?
if (searchpatt.test(name) === true) {
surcharges += price;
} else {
taxes += price;
}
}
}
t++;
target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbLeft, t);
} while (target != undefined);
}
if (userSettings["a" /* default */].enableInlineMode == 0) {
var printtarget = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbContainer, 1)
.parentElement.parentElement.parentElement;
var newtr = document.createElement("tr");
newtr.setAttribute("class", "pricebreakdown");
newtr.innerHTML = "<td><div>" + output + "</div></td>";
printtarget.parentElement.insertBefore(newtr, printtarget);
}
}
function bindTranslations(page, lang, target) {
if (translations["a" /* default */][lang] === undefined) {
Object(utils["h" /* printNotification */])("Error: Translation " + lang + " not found");
return false;
}
if (translations["a" /* default */][lang][page] === undefined) {
Object(utils["h" /* printNotification */])(
"Error: Translation " + lang + " not found for page " + page
);
return false;
}
for (let i in translations["a" /* default */][lang][page]) {
const re = new RegExp(i, "g");
target.innerHTML = target.innerHTML.replace(
re,
translations["a" /* default */][lang][page][i]
);
}
}
function printCPM() {
Object(links["a" /* printItemInline */])(
(Number(parse_itin["a" /* currentItin */].price) / Number(parse_itin["a" /* currentItin */].dist)).toFixed(4) + " cpm",
"",
1
);
}
function bindSeatguru() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
// walks each leg
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < parse_itin["a" /* currentItin */].itin[i].seg.length - 1) {
if (
parse_itin["a" /* currentItin */].itin[i].seg[j + k].fnr !=
parse_itin["a" /* currentItin */].itin[i].seg[j + k + 1].fnr ||
parse_itin["a" /* currentItin */].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
// build the search to identify flight:
var target = findItinTarget(i + 1, j + 1, "plane");
if (!target) {
Object(utils["h" /* printNotification */])("Error: Could not find target in bindSeatguru");
return false;
} else {
var url =
"http://www.seatguru.com/findseatmap/findseatmap.php?carrier=" +
parse_itin["a" /* currentItin */].itin[i].seg[j].carrier +
"&flightno=" +
parse_itin["a" /* currentItin */].itin[i].seg[j].fnr +
"&date=" +
("0" + parse_itin["a" /* currentItin */].itin[i].seg[j].dep.month).slice(-2) +
"%2F" +
("0" + parse_itin["a" /* currentItin */].itin[i].seg[j].dep.day).slice(-2) +
"%2F" +
parse_itin["a" /* currentItin */].itin[i].seg[j].dep.year +
"&to=&from=" +
parse_itin["a" /* currentItin */].itin[i].seg[j].orig;
target.children[0].innerHTML =
'<a href="' +
url +
'" target="_blank" style="text-decoration:none;color:black">' +
target.children[0].innerHTML +
"</a>";
}
j += k;
}
}
}
function bindPlanefinder() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
// walks each leg
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < parse_itin["a" /* currentItin */].itin[i].seg.length - 1) {
if (
parse_itin["a" /* currentItin */].itin[i].seg[j + k].fnr !=
parse_itin["a" /* currentItin */].itin[i].seg[j + k + 1].fnr ||
parse_itin["a" /* currentItin */].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
// build the search to identify flight:
var target = findItinTarget(i + 1, j + 1, "flight");
if (!target) {
Object(utils["h" /* printNotification */])("Error: Could not find target in bindPlanefinder");
return false;
} else {
var url =
"http://www.planefinder.net/data/flight/" +
parse_itin["a" /* currentItin */].itin[i].seg[j].carrier +
parse_itin["a" /* currentItin */].itin[i].seg[j].fnr;
target.children[0].innerHTML =
'<a href="' +
url +
'" target="_blank" style="text-decoration:none;color:black">' +
target.children[0].innerHTML +
"</a>";
}
j += k;
}
}
}
function bindWheretocredit() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
// walks each leg
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
//walks each segment of leg
var target = findItinTarget(i + 1, j + 1, "cabin");
if (!target) {
Object(utils["h" /* printNotification */])("Error: Could not find target in bindWheretocredit");
return false;
} else {
var url =
"http://www.wheretocredit.com/" +
parse_itin["a" /* currentItin */].itin[i].seg[j].carrier.toLowerCase() +
"/" +
parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass.toLowerCase();
target.children[0].innerHTML = target.children[0].innerHTML
.replace(
/<a.*?\/a>/,
"(" + parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass + ")"
)
.replace(
"(" + parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass + ")",
'<a href="' +
url +
'" target="_blank" style="text-decoration:none;color:black">(' +
parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass +
")</a>"
);
}
}
}
}
function findItinTarget(leg, seg, tcell) {
var target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1);
if (!target) {
Object(utils["h" /* printNotification */])("Error: Itin not found in findItinTarget-function");
return;
}
// go to leg
var targetLeg = target.nextElementSibling.children[leg - 1];
if (targetLeg === undefined) {
Object(utils["h" /* printNotification */])("Error: Leg not found in findItinTarget-function");
return;
}
// go to segments of leg
var targetSeg = targetLeg.children[1].children;
if (targetSeg.length >= 2) {
// go to desired segment
var index = 0;
var j = 0;
let i = 0;
for (i = 0; i < targetSeg.length; i++) {
if (Object(utils["e" /* hasClass */])(targetSeg[i], itaSettings["a" /* default */].resultpage.itinRow)) {
j++;
if (j >= seg) {
index = i;
//special handling for one-seg-legs here
if (targetSeg.length === 2 || targetSeg.length === 3) {
// 1. Headline 2. Flight-details 3. arrival next day..
index--;
}
break;
}
}
} // end-for
if (i == targetSeg.length) {
//target not found
Object(utils["h" /* printNotification */])(
"Error: Call to unreachable Segment in Leg " +
leg +
" in findItinTarget-function"
);
return;
}
var rowoffset = 0;
var columnoffset = 0;
switch (tcell) {
case "headline":
// special case here allways first row... even in one-seg-legs
rowoffset = index * -1;
columnoffset = 1;
break;
case "logo":
rowoffset = 0;
columnoffset = 0;
break;
case "airportsdate":
rowoffset = 0;
columnoffset = 1;
break;
case "flight":
rowoffset = 1;
columnoffset = 0;
break;
case "deptime":
rowoffset = 1;
columnoffset = 1;
break;
case "arrtime":
rowoffset = 1;
columnoffset = 2;
break;
case "duration":
rowoffset = 1;
columnoffset = 2;
break;
case "plane":
rowoffset = 1;
columnoffset = 4;
break;
case "cabin":
rowoffset = 1;
columnoffset = 5;
break;
default:
Object(utils["h" /* printNotification */])("Error: Unknown Target in findItinTarget-function");
return;
}
return targetSeg[index + rowoffset].children[columnoffset];
} else {
Object(utils["h" /* printNotification */])("Error: Unknown error in findItinTarget-function");
return;
}
}
// EXTERNAL MODULE: ./src/settings/paxSettings.js
var paxSettings = __webpack_require__(6);
// CONCATENATED MODULE: ./src/print/settings.js
/**************************************** Settings Stuff *****************************************/
function createUsersettings() {
var str = "";
var settingscontainer = document.createElement("div");
settingscontainer.setAttribute("id", "mptSettingsContainer");
settingscontainer.setAttribute("style", "border-bottom: 1px dashed grey;");
settingscontainer.innerHTML =
'<div style="display:inline-block;float:left;cursor:pointer;" id="passengerVisToggler">Passengers (<label id="mtpPaxCount">1a</label>)</div><div id="mptStartparse" class="invis" style="margin-left:20px;display:none;cursor:pointer">Editor-Mode:Parse!</div><div id="mtpNotification" style="margin-left:50px;display:inline-block;"></div><div style="display:inline-block;float:right;"><div id="settingsVisToggler" style="display:inline-block;cursor:pointer;">Settings</div> (v' +
appSettings["a" /* default */].version +
') <div id="mptCabintoggler" style="display:inline-block;">(Cabin: <label id="mptCabinMode" style="width:30px;text-align:center;cursor:pointer;display:inline-block">Auto</label>)</div></div><div id="mptSettings" class="invis" style="display:none;border-top: 1px dotted grey;"></div><div id="mptPassengers" class="invis" style="display:none;border-top: 1px dotted grey;"></div>';
var target = document.getElementById("contentwrapper");
target.parentElement.insertBefore(settingscontainer, target);
document.getElementById("settingsVisToggler").onclick = function() {
Object(utils["l" /* toggleVis */])(document.getElementById("mptSettings"));
};
document.getElementById("passengerVisToggler").onclick = function() {
Object(utils["l" /* toggleVis */])(document.getElementById("mptPassengers"));
};
// Build settings
target = document.getElementById("mptSettings");
str =
'<div id="mptrestoredefault" style="text-align:right;font-weight:bold;text-decoration:underline;">Restore Defaults</div>';
str +=
'<div style="text-align:center;font-weight:bold">**** Display Settings: ****</div>';
str += '<div style="margin:5px 0;"><div style="float:left;width:33%">';
str +=
'<div id="mpttimeformat">Time Format: <label style="cursor:pointer;">' +
printSettingsvalue("timeformat") +
"</label></div>";
str +=
'<div id="mptlanguage">Language: <label style="cursor:pointer;">' +
printSettingsvalue("language") +
"</label></div>";
str +=
'<div id="mptenableFarerules">Open rules in new window: <label style="cursor:pointer;">' +
printSettingsvalue("enableFarerules") +
"</label></div>";
str += '</div><div style="float:left;width:33%">';
str +=
'<div id="mptenableInlineMode">Inline Mode: <label style="cursor:pointer;">' +
printSettingsvalue("enableInlineMode") +
"</label></div>";
str +=
'<div id="mptenableIMGautoload">Images autoload: <label style="cursor:pointer;">' +
printSettingsvalue("enableIMGautoload") +
"</label></div>";
str +=
'<div id="mptenablePricebreakdown">Price breakdown: <label style="cursor:pointer;">' +
printSettingsvalue("enablePricebreakdown") +
"</label></div>";
str += '</div><div style="float:left;width:33%">';
str +=
'<div id="mptenableDeviders">Enable link dividers: <label style="cursor:pointer;">' +
printSettingsvalue("enableDeviders") +
"</label></div>";
str +=
'<div id="mptlinkFontsize">Link font size: <label style="cursor:pointer;">' +
printSettingsvalue("linkFontsize") +
"</label>%</div>";
str +=
'<div id="mptshowAllAirlines">Show all airline links: <label style="cursor:pointer;">' +
printSettingsvalue("showAllAirlines") +
"</label></div>";
str += '</div><div style="clear:both"></div></div>';
str +=
'<div style="text-align:center;font-weight:bold">**** Feature Settings: ****</div>';
str += '<div style="margin:5px 0"><div style="float:left;width:33%">';
str +=
'<div id="mptenableEditormode">Editor mode: <label style="cursor:pointer;">' +
printSettingsvalue("enableEditormode") +
"</label></div>";
str += '</div><div style="float:left;width:33%">';
str +=
'<div id="mptenableAffiliates" title="Enables affiliate links to support the development of ITA Matrix Powertools">Support this tool: <label style="cursor:pointer;">' +
printSettingsvalue("enableAffiliates") +
"</label></div>";
str += '</div><div style="float:left;width:33%">';
str +=
'<div id="mptenableWheretocredit">Enable WhereToCredit: <label style="cursor:pointer;">' +
printSettingsvalue("enableWheretocredit") +
"</label></div>";
str +=
'<div id="mptenablePlanefinder">Enable Planefinder: <label style="cursor:pointer;">' +
printSettingsvalue("enablePlanefinder") +
"</label></div>";
str +=
'<div id="mptenableSeatguru">Enable Seatguru: <label style="cursor:pointer;">' +
printSettingsvalue("enableSeatguru") +
"</label></div>";
str += '</div><div style="clear:both"></div></div>';
str +=
'<div style="text-align:center;font-weight:bold">**** Link Settings: ****</div>';
str += '<div style="margin:5px 0">';
Object.keys(userSettings["d" /* registeredSettings */]).forEach(setting => {
str += `<div id="mpt${setting}" style="width:33%;float:left;">${
userSettings["d" /* registeredSettings */][setting].name
}: <label style="cursor:pointer;">${printSettingsvalue(
setting
)}</label></div>`;
});
str += '<div style="clear:both"></div></div>';
str +=
'<div style="text-align:center;font-weight:bold"><label id="configcloser" style="cursor:pointer;text-decoration:underline;">Close</label><div>';
target.innerHTML = str;
// these onClick event handlers need only be added once:
document.getElementById("mptrestoredefault").onclick = function() {
restoreDefaultSettings();
};
document.getElementById("mpttimeformat").onclick = function() {
toggleSettings("timeformat");
};
document.getElementById("mptlanguage").onclick = function() {
toggleSettings("language");
};
document.getElementById("mptenableDeviders").onclick = function() {
toggleSettings("enableDeviders");
};
document.getElementById("mptenableInlineMode").onclick = function() {
toggleSettings("enableInlineMode");
};
document.getElementById("mptenableEditormode").onclick = function() {
toggleSettings("enableEditormode");
};
document.getElementById("mptenableIMGautoload").onclick = function() {
toggleSettings("enableIMGautoload");
};
document.getElementById("mptenableFarerules").onclick = function() {
toggleSettings("enableFarerules");
};
document.getElementById("mptenablePricebreakdown").onclick = function() {
toggleSettings("enablePricebreakdown");
};
document.getElementById("mptlinkFontsize").onclick = function() {
toggleSettings("linkFontsize");
};
document.getElementById("mptshowAllAirlines").onclick = function() {
toggleSettings("showAllAirlines");
};
document.getElementById("mptenablePlanefinder").onclick = function() {
toggleSettings("enablePlanefinder");
};
document.getElementById("mptenableSeatguru").onclick = function() {
toggleSettings("enableSeatguru");
};
document.getElementById("mptenableWheretocredit").onclick = function() {
toggleSettings("enableWheretocredit");
};
document.getElementById("mptenableAffiliates").onclick = function() {
toggleSettings("enableAffiliates");
};
document.getElementById("mptCabintoggler").onclick = function() {
toggleSettings("cabin");
};
document.getElementById("configcloser").onclick = function() {
Object(utils["l" /* toggleVis */])(document.getElementById("mptSettings"));
};
document.getElementById("mptStartparse").onclick = function() {
setTimeout(function() {
render();
}, 50);
};
Object.keys(userSettings["d" /* registeredSettings */]).forEach(setting => {
document.getElementById("mpt" + setting).onclick = function() {
toggleSettings(setting);
};
});
// Build passengers
target = document.getElementById("mptPassengers");
str = '<div style="float:left;width:25%">';
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Adults: </label> <select name="numAdults" id="numAdults" style="width:50px">';
for (var i = 1; i <= 9; i++) {
str += "<option>" + i + "</option>";
}
str += "</select></div>";
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Infants (Lap): </label> <select name="numInfantsLap" id="numInfantsLap" style="width:50px">';
for (var i = 0; i <= 9; i++) {
str += "<option>" + i + "</option>";
}
str += "</select></div>";
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Infants (Seat): </label> <select name="numInfantsSeat" id="numInfantsSeat" style="width:50px">';
for (var i = 0; i <= 9; i++) {
str += "<option>" + i + "</option>";
}
str += "</select></div>";
str += '</div><div style="float:left;width:25%">';
for (var k = 1; k <= 3; k++) {
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
k +
' - Age: </label> <select name="child' +
k +
'age" id="child' +
k +
'age" style="width:50px">';
str += '<option value="-1">-</option>';
for (var i = 2; i <= 17; i++) {
str += '<option value="' + i + '">' + i + "</option>";
}
str += "</select></div>";
}
str += '</div><div style="float:left;width:25%">';
for (var k = 4; k <= 6; k++) {
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
k +
' - Age: </label> <select name="child' +
k +
'age" id="child' +
k +
'age" style="width:50px">';
str += '<option value="-1">-</option>';
for (var i = 2; i <= 17; i++) {
str += '<option value="' + i + '">' + i + "</option>";
}
str += "</select></div>";
}
str += '</div><div style="float:left;width:25%">';
for (var k = 7; k <= 8; k++) {
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
k +
' - Age: </label> <select name="child' +
k +
'age" id="child' +
k +
'age" style="width:50px">';
str += '<option value="-1">-</option>';
for (var i = 2; i <= 17; i++) {
str += '<option value="' + i + '">' + i + "</option>";
}
str += "</select></div>";
}
str +=
'<div style="width:150px;margin:2px 0"><div id="mtpConfirmPax" style="float:left;width:50%;text-align:center;cursor:pointer;font-weight:bold">Confirm</div><div id="mtpCancelPax" style="float:left;width:50%;text-align:center;cursor:pointer;font-weight:bold">Cancel</div></div>';
str += '</div><div style="clear:both;"></div>';
target.innerHTML = str;
document.getElementById("mtpCancelPax").onclick = function() {
Object(utils["l" /* toggleVis */])(document.getElementById("mptPassengers"));
};
document.getElementById("mtpConfirmPax").onclick = function() {
processPassengers();
};
}
function restoreDefaultSettings() {
// this function will remove any saved settings and restore default values
if (
window.confirm(
"Are you sure you want to reset any saved settings to the default values? The page will automatically reload to complete the reset."
)
) {
(async () => {
if (typeof GM === "undefined" || typeof GM.info != "undefined") {
await Object(userSettings["e" /* saveUserSettings */])(null);
}
// Reload the current page:
window.location.reload();
})(); // end async for GM4
}
}
function toggleSettings(target) {
console.log("toggleSettings called. target=" + target);
if (userSettings["d" /* registeredSettings */][target] && userSettings["d" /* registeredSettings */][target].values) {
const pos = findPositionForValue(
userSettings["a" /* default */][target],
userSettings["d" /* registeredSettings */][target].values
);
if (pos >= userSettings["d" /* registeredSettings */][target].values.length - 1 || pos === -1) {
userSettings["a" /* default */][target] = userSettings["d" /* registeredSettings */][target].values[0].value;
} else {
userSettings["a" /* default */][target] =
userSettings["d" /* registeredSettings */][target].values[pos + 1].value;
}
} else {
switch (target) {
case "timeformat":
if (userSettings["a" /* default */].timeformat == "12h") {
userSettings["a" /* default */].timeformat = "24h";
} else {
userSettings["a" /* default */].timeformat = "12h";
}
break;
case "language":
if (userSettings["a" /* default */].language == "de") {
userSettings["a" /* default */].language = "en";
} else {
userSettings["a" /* default */].language = "de";
}
break;
case "linkFontsize":
if (
userSettings["a" /* default */].linkFontsize <= 190 &&
userSettings["a" /* default */].linkFontsize >= 50
) {
userSettings["a" /* default */].linkFontsize += 10;
} else {
userSettings["a" /* default */].linkFontsize = 50;
}
break;
case "cabin":
if (appSettings["a" /* default */].cabin === "Auto") {
appSettings["a" /* default */].cabin = "Y";
} else if (appSettings["a" /* default */].cabin === "Y") {
appSettings["a" /* default */].cabin = "Y+";
} else if (appSettings["a" /* default */].cabin === "Y+") {
appSettings["a" /* default */].cabin = "C";
} else if (appSettings["a" /* default */].cabin === "C") {
appSettings["a" /* default */].cabin = "F";
} else if (appSettings["a" /* default */].cabin === "F") {
appSettings["a" /* default */].cabin = "Auto";
}
document.getElementById("mptCabinMode").innerHTML = appSettings["a" /* default */].cabin;
// refresh links
Object(links["b" /* printLinksContainer */])();
break;
default:
if (userSettings["a" /* default */][target] == 1) {
userSettings["a" /* default */][target] = 0;
} else {
userSettings["a" /* default */][target] = 1;
}
}
}
document.getElementById(
"mpt" + target
).firstElementChild.innerHTML = printSettingsvalue(target);
Object(userSettings["e" /* saveUserSettings */])();
}
function processPassengers() {
var paxText = "";
var e = document.getElementById("numAdults");
paxSettings["a" /* default */].adults = Number(e.options[e.selectedIndex].value);
e = document.getElementById("numInfantsLap");
paxSettings["a" /* default */].infantsLap = Number(e.options[e.selectedIndex].value);
e = document.getElementById("numInfantsSeat");
paxSettings["a" /* default */].infantsSeat = Number(e.options[e.selectedIndex].value);
paxSettings["a" /* default */].cAges = new Array();
for (var i = 1; i <= 8; i++) {
processChild("child" + i + "age");
}
paxText =
paxSettings["a" /* default */].adults +
"a" +
(paxSettings["a" /* default */].cAges.length > 0
? " " + paxSettings["a" /* default */].cAges.length + "c"
: "") +
(paxSettings["a" /* default */].infantsLap + paxSettings["a" /* default */].infantsSeat > 0
? " " +
(paxSettings["a" /* default */].infantsLap + paxSettings["a" /* default */].infantsSeat) +
"i"
: "");
document.getElementById("mtpPaxCount").innerHTML = paxText;
Object(utils["l" /* toggleVis */])(document.getElementById("mptPassengers"));
// reload links
Object(links["b" /* printLinksContainer */])();
}
function processChild(target) {
var e = document.getElementById(target);
var tmp = 0;
tmp = Number(e.options[e.selectedIndex].value);
if (tmp >= 2) {
paxSettings["a" /* default */].cAges.push(tmp);
}
}
function printSettingsvalue(target) {
if (userSettings["d" /* registeredSettings */][target]) {
return findNameForValue(
userSettings["a" /* default */][target],
userSettings["d" /* registeredSettings */][target].values
);
}
switch (target) {
case "timeformat":
return userSettings["a" /* default */].timeformat;
case "language":
return userSettings["a" /* default */].language;
case "linkFontsize":
return userSettings["a" /* default */].linkFontsize.toString();
default:
return boolToEnabled(userSettings["a" /* default */][target]);
}
}
function findNameForValue(needle, haystack) {
var ret = "Unknown";
for (var i in haystack) {
if (haystack[i].value == needle) {
return haystack[i].name;
}
}
return ret;
}
function findPositionForValue(needle, haystack) {
return haystack.findIndex(o => o.value == needle);
}
function boolToEnabled(value) {
if (value == 1) {
return "enabled";
} else {
return "disabled";
}
}
// CONCATENATED MODULE: ./src/index.js
/**************************************** Start Script *****************************************/
// *** DO NOT CHANGE BELOW THIS LINE***/
(async () => {
await Object(userSettings["b" /* loadUserSettings */])();
createUsersettings();
injectCss();
if (window.top === window.self) {
if (appSettings["a" /* default */].scriptEngine === 0) {
startScript();
} else {
// execute language detection and afterwards functions for current page
if (typeof window.addEventListener !== "undefined") {
window.addEventListener("load", () => startScript(), false);
} else {
window.onload = () => startScript();
}
}
}
})(); // end async for GM4
function startScript() {
if (window.location.href !== appSettings["a" /* default */].laststatus) {
setTimeout(function() {
Object(appSettings["d" /* reset */])();
cleanUp();
getPageLang();
}, 100);
appSettings["a" /* default */].laststatus = window.location.href;
}
if (appSettings["a" /* default */].scriptrunning === 1) {
setTimeout(function() {
startScript();
}, 500);
}
}
/**************************************** Get Language *****************************************/
function getPageLang() {
if (window.location.href.indexOf("view-details") != -1) {
setTimeout(function() {
fePS();
}, 200);
} else if (
window.location.href.indexOf("#search:") != -1 ||
window.location.href == "https://matrix.itasoftware.com/" ||
window.location.href == "https://matrix.itasoftware.com/"
) {
setTimeout(function() {
startPage();
}, 200);
}
}
/********************************************* Start page *********************************************/
function startPage() {
// try to get content
if (!Object(itaSettings["b" /* findTargetSetVersion */])(settings => settings.startpage.maindiv, 1)) {
Object(utils["h" /* printNotification */])("Error: Unable to find content on start page.");
return false;
} else {
// apply style-fix
const target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].startpage.maindiv, 1);
target.children[0].children[0].children[0].children[0].setAttribute(
"valign",
"top"
);
}
}
/********************************************* Result page *********************************************/
//Primary function for extracting flight data from ITA/Matrix
function fePS() {
// try to get content
const itin = Object(itaSettings["b" /* findTargetSetVersion */])(settings => settings.resultpage.itin, 1);
if (!itin) {
Object(utils["h" /* printNotification */])("Error: Unable to find Content on result page.");
return false;
}
// retry if itin not loaded
if (itin.parentElement.previousElementSibling.style.display != "none") {
appSettings["a" /* default */].retrycount++;
if (appSettings["a" /* default */].retrycount > 50) {
Object(utils["h" /* printNotification */])(
"Error: Timeout on result page. Content not found after 10s."
);
return false;
}
setTimeout(function() {
fePS();
}, 200);
return false;
}
// do some self-testing to prevent crashing on class-changes
for (let i in itaSettings["a" /* default */].resultpage) {
if (Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage[i], 1) === undefined) {
Object(utils["h" /* printNotification */])(
"Error: Unable to find class " +
itaSettings["a" /* default */].resultpage[i] +
" for " +
i +
"."
);
return false;
}
}
Object(parse_itin["c" /* readItinerary */])();
render();
}
function injectCss() {
var css = "",
head = document.head || document.getElementsByTagName("head")[0],
style = document.createElement("style");
style.type = "text/css";
css +=
".pt-hover-menu { position:absolute; padding: 8px; background-color: #FFF; border: 1px solid #808080; display:none; }";
css += ".pt-hover-container:hover .pt-hover-menu { display:inline; }";
style.appendChild(document.createTextNode(css));
head.appendChild(style);
}
/***/ })
/******/ ]);