Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//<nowiki> /** vCard-Assistant  * Source code: https://gitlab.com/muekoeff/vcard-assistant  * Please report issues and requests preferably at https://gitlab.com/muekoeff/vcard-assistant/-/issues  */ "use strict";  mw.VcardAssistantConfig = {};  mw.VcardAssistantConfig.config = {     config: {         disableeditlinksifpresent: [ "#Orte", "#Weitere_Ziele", "#Städte", "#Regionen", "#Inseln", "#print-districts" ],         editlinkcontainer: "span.listing-metadata-items",         helpurl: "https://de.wikivoyage.org/wiki/Benutzer:Nw520/vCardAssistant.js",         outdatedwarning: true,         submitLegal: 'Mit dem Speichern von Änderungen erklärst du dich mit den <a class="external" target="_blank" rel="noopener" href="//wikimediafoundation.org/wiki/Terms_of_Use/de">Nutzungsbedingungen</a> einverstanden und lizenzierst deine Bearbeitung unwiderruflich unter der Lizenz <a class="external" target="_blank" rel="noopener" href="https://creativecommons.org/licenses/by-sa/3.0/deed.de"><i>Creative-Commons</i> „Namensnennung – Weitergabe unter gleichen Bedingungen 3.0“</a> und der <a class="external" target="_blank" rel="noopener" href="https://de.wikipedia.org/wiki/Wikipedia:GNU_Free_Documentation_License">GFDL</a>. Du stimmst einer Autorennennung mindestens durch URL oder Verweis auf den Artikel zu. Wenn du nicht möchtest, dass dein Text weiterbearbeitet und weiterverbreitet wird, dann veröffentliche die Änderungen nicht.',         templateToType: {             vCard: ""         },         title: "vCard-Assistant",         togglevalue_off: "n",         togglevalue_on: "y"     },     special_parameters: {         lastupdate: "lastedit",         name: "name",         wikidata: "wikidata"     },     parameters: {         order: [ "name", "name-extra", "name-local", "name-latin", "alt", "wikidata", "auto", "type", "subtype", "comment", "address", "address-local", "directions", "directions-local", "lat", "long", "zoom", "url", "email", "phone", "fax", "tollfree", "mobile", "image", "commonscat", "facebook", "instagram", "twitter", "youtube", "flickr", "skype", "hours", "checkin", "checkout", "payment", "price", "before", "description", "lastedit", "show", "group", "map-group" ],         categories: [ {             category: {                 id: "basic",                 label: "Grundlegende Informationen"             },             params: {                 name: {                     label: "Name",                     description: "Genaue und vorzugsweise offizielle Bezeichnung der Einrichtung.",                     type: "string",                     required: true,                     neverOmit: true                 },                 "name-extra": {                     label: "Namensergänzung",                     description: "Namensergänzung, die nicht Namensbestandteil ist. Dies können z.B. auch Symbolbilder sein.",                     type: "string",                     hidden: true                 },                 "name-local": {                     label: "Name in Landessprache",                     description: "Genaue Bezeichnung der Einrichtung in der Landessprache. Zusätzlich zum Namen.",                     type: "string",                     hidden: true,                     wikidata: "P1705"                 },                 "name-latin": {                     label: "Name in Umschrift",                     description: "Genaue Bezeichnung der Einrichtung in der Umschrift der Landessprache.",                     type: "string",                     hidden: true                 },                 alt: {                     label: "Alternativname",                     description: "Alternative Bezeichnung der Einrichtung.",                     type: "string"                 },                 comment: {                     label: "Anmerkung",                     description: "Anmerkung zum Namen oder zur Einrichtung, die nicht Namensbestandteil ist.",                     type: "string",                     hidden: true                 },                 wikidata: {                     label: "Wikidata-Datenobjekt",                     description: "Kennung des entsprechenden Wikidata-Datenobjekts.",                     type: "wikidata-item-id",                     example: "Q82425",                     neverOmit: true                 },                 auto: {                     label: "Automatischer Datenbezug von Wikidata",                     description: 'Aktiviert den automatischen Datenbezug aus Wikidata, soweit kein Wert für einen Parameter angegeben wird. Unterstützte Parameter sind im vCard-Assistenten mit einem entsprechenden Symbol gekennzeichnet. Durch Eingabe von "n" bei diesen Parametern kann ein automatischer Datenbezug von Wikidata für dieses Feld unterbunden werden.',                     type: "toggle",                     format: [ {                         regexp: "^(j|ja|y|yes|n|no|nein)$",                         message: 'Bitte gib entweder "y" für ja, oder "n" für nein ein.'                     } ],                     triggers: [ {                         conditions: [ {                             sender: "wikidata",                             value: "^$"                         } ],                         action: {                             value: 0                         }                     }, {                         conditions: [ {                             sender: "wikidata",                             value: "^$"                         } ],                         action: {                             visible: false                         }                     }, {                         conditions: [ {                             sender: "wikidata",                             value: ".+"                         } ],                         action: {                             visible: true                         }                     }, {                         conditions: [ {                             sender: "wikidata",                             value: "^$"                         } ],                         action: {                             excluded: true                         }                     }, {                         conditions: [ {                             sender: "$this",                             value: "^n$"                         } ],                         action: {                             excluded: true                         }                     }, {                         conditions: [ {                             sender: "wikidata",                             value: ".+"                         }, {                             sender: "$this",                             value: "^y$"                         } ],                         action: {                             excluded: false                         }                     } ]                 },                 type: {                     label: "Typen",                     description: "Die Typen sind von links nach rechts hierarchisch absteigend geordnet. Der erste Typ ist die Hauptkategorie.",                     type: "enum",                     enum: "type",                     required: true,                     multiple: true,                     neverOmit: true                 },                 subtype: {                     label: "Features/Untertypen",                     description: "Weitere Spezifikation der Einrichtung. Die Reihenfolge der Features ist irrelevant.",                     type: "enum",                     enum: "subtype",                     multiple: true                 },                 description: {                     label: "Beschreibung",                     type: "string",                     multiline: 5                 },                 before: {                     label: "Vorsatz",                     description: "Beschreibung der Einrichtung, welche vor dem Namen angezeigt werden soll.",                     type: "string",                     hidden: true                 }             }         }, {             category: {                 id: "location",                 label: "Ort und Lage"             },             params: {                 address: {                     label: "Anschrift",                     type: "string",                     wikidata: "P6375"                 },                 "address-local": {                     label: "Anschrift in Landessprache",                     description: "Anschrift der Einrichtung in der Landessprache. Zusätzlich zur Anschrift.",                     type: "string",                     hidden: true                 },                 directions: {                     label: "Lage/Beschreibung zur Anfahrt und zum Auffinden",                     type: "string"                 },                 "directions-local": {                     label: "Lage in Landessprache",                     description: "Angaben zur Lage der Einrichtung in der Landessprache. Zusätzlich zur Lage.",                     type: "string",                     hidden: true                 },                 lat: {                     label: "Geografische Breite",                     description: "Geografische Breite der Position der Einrichtung.",                     type: "string",                     example: "52.516272",                     format: [ {                         regexp: "^-?[0-9]+(.[0-9]+)?$"                     } ],                     wikidata: {                         property: "P625",                         value: "latitude"                     },                     neverOmit: true                 },                 long: {                     label: "Geografische Länge",                     description: "Geografische Länge der Position der Einrichtung.",                     type: "string",                     example: "13.377722",                     format: [ {                         regexp: "^-?[0-9]+(.[0-9]+)?$"                     } ],                     preview: {                         type: "coordinates",                         lat: "lat",                         long: "$this"                     },                     wikidata: {                         property: "P625",                         value: "longitude"                     },                     neverOmit: true                 },                 zoom: {                     label: "Zoom-Level",                     default: 17,                     description: "Zoom-Level der darzustellen Karte zwischen 0 und 19. Standard ist 17. Eine Angabe ist normalerweise nicht notwendig.",                     type: "number",                     hidden: true,                     max: 20,                     min: 0                 }             }         }, {             category: {                 id: "contact",                 label: "Kontaktinformationen"             },             params: {                 url: {                     label: "URL",                     type: "url",                     example: "https://example.com/",                     wikidata: "P856"                 },                 email: {                     label: "E-Mail",                     type: "string",                     example: "[email protected]",                     wikidata: {                         property: "P968",                         filter: {                             regexp: "mailto:(.+)",                             group: 1                         }                     }                 },                 phone: {                     label: "Telefon",                     type: "phone",                     example: "+55 555 555-5555",                     wikidata: "P1329"                 },                 fax: {                     label: "Fax",                     type: "phone",                     example: "+55 555 555-5555",                     hidden: true,                     wikidata: "P2900"                 },                 tollfree: {                     label: "Gebührenfreie Telefonnummern",                     type: "string",                     example: "+49 800 100-1000",                     hidden: true                 },                 mobile: {                     label: "Mobil-Telefonnummer",                     type: "string",                     example: "+55 123 555-5555",                     hidden: true                 }             }         }, {             category: {                 id: "networks",                 label: "Netzwerke"             },             params: {                 commonscat: {                     label: "Commons-Kategorie",                     description: "Die Commons-Kategorie mit Medien zur Einrichtung sollte nur angegeben werden, wenn es keinen Wikidata-Eintrag gibt.",                     type: "commons-category",                     hidden: true,                     wikidata: "P373"                 },                 facebook: {                     label: "Facebook",                     type: "string",                     wikidata: "P2013",                     preview: {                         type: "url",                         url: [ {                             conditions: [ {                                 sender: "$this",                                 value: "^http(s)?:"                             } ],                             url: "{parameter}"                         }, {                             url: "https://facebook.com/{parameter}"                         } ]                     }                 },                 flickr: {                     label: "Flickr",                     type: "string",                     hidden: true,                     wikidata: "P3267",                     preview: {                         type: "url",                         url: [ {                             conditions: [ {                                 sender: "$this",                                 value: "^http(s)?:"                             } ],                             url: "{parameter}"                         }, {                             url: "https://flickr.com/photos/{parameter}"                         } ]                     }                 },                 instagram: {                     label: "Instagram",                     type: "string",                     wikidata: "P2003",                     preview: {                         type: "url",                         url: [ {                             conditions: [ {                                 sender: "$this",                                 value: "^http(s)?:"                             } ],                             url: "{parameter}"                         }, {                             url: "https://instagram.com/{parameter}"                         } ]                     }                 },                 twitter: {                     label: "Twitter",                     type: "string",                     wikidata: "P2002",                     preview: {                         type: "url",                         url: [ {                             conditions: [ {                                 sender: "$this",                                 value: "^http(s)?:"                             } ],                             url: "{parameter}"                         }, {                             url: "https://twitter.com/{parameter}"                         } ]                     }                 },                 youtube: {                     label: "YouTube",                     type: "string",                     hidden: true,                     wikidata: "P2397",                     preview: {                         type: "url",                         url: [ {                             conditions: [ {                                 sender: "$this",                                 value: "^http(s)?:"                             } ],                             url: "{parameter}"                         }, {                             url: "https://youtube.com/channel/{parameter}"                         } ]                     }                 },                 skype: {                     label: "Skype",                     type: "string",                     hidden: true,                     wikidata: "P2893"                 }             }         }, {             category: {                 id: "details",                 label: "Details"             },             params: {                 hours: {                     label: "Öffnungszeiten",                     type: "string",                     example: "Mo-Fr 9-18 Uhr"                 },                 price: {                     label: "Preise",                     description: "Eintritts- oder Übernachtungspreise der Einrichtung.",                     type: "string"                 },                 payment: {                     label: "Zahlungsarten",                     description: "Von der Einrichtung akzeptierte Zahlungsarten.",                     type: "string",                     example: "Mastercard, Visa, Amex"                 },                 checkin: {                     label: "Check-in",                     description: "Frühester Check-in der Einrichtung.",                     type: "string",                     hidden: true                 },                 checkout: {                     label: "Check-out",                     description: "Spätester Check-out der Einrichtung.",                     type: "string",                     hidden: true                 },                 image: {                     label: "Bild zum POI",                     type: "commons-file",                     wikidata: "P18"                 }             }         }, {             category: {                 id: "advanced",                 label: "Erweitert"             },             params: {                 lastedit: {                     label: "Letzte Aktualisierung",                     description: "Datum der letzten Aktualisierung in der Form jjjj-mm-tt.",                     type: "lastedit"                 },                 show: {                     label: "Anzeigemodus",                     description: "Legt fest, ob POIs und Koordinaten angezeigt werden sollen.",                     type: "enum",                     enum: [ {                         data: "all",                         label: "POI und Koordinaten"                     }, {                         data: "poi",                         label: "POI (Standard)"                     }, {                         data: "coordinates",                         label: "Koordinaten"                     }, {                         data: "none",                         label: "keine Koordinate"                     }, {                         data: "subtype",                         label: "Merkmale anzeigen"                     }, {                         data: "nosubtye",                         label: "Merkmale nicht anzeigen"                     }, {                         data: "inline",                         label: "hängender Einzug"                     }, {                         data: "indent",                         label: "innerhalb der Zeile"                     } ],                     hidden: true,                     multiple: true                 },                 group: {                     label: "POI-Gruppe",                     description: "Wert überschreibt die automatische ermittelte Gruppenzugehörigkeit z. B. mit buy, do, drink, eat, go, see oder sleep",                     type: "enum",                     enum: "group",                     hidden: true                 },                 "map-group": {                     label: "Kartengruppe",                     description: "Die Angabe wird nur gebraucht, wenn Marker auf unterschiedliche Karten verteilt werden sollen.",                     type: "string",                     hidden: true                 }             }         } ]     } };  "use strict";  function _typeof(obj) {     "@babel/helpers - typeof";     return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {         return typeof obj;     } : function(obj) {         return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;     }, _typeof(obj); }  function _wrapRegExp() {     _wrapRegExp = function _wrapRegExp(re, groups) {         return new BabelRegExp(re, void 0, groups);     };     var _super = RegExp.prototype, _groups = new WeakMap();     function BabelRegExp(re, flags, groups) {         var _this = new RegExp(re, flags);         return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);     }     function buildGroups(result, re) {         var g = _groups.get(re);         return Object.keys(g).reduce(function(groups, name) {             return groups[name] = result[g[name]], groups;         }, Object.create(null));     }     return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function(str) {         var result = _super.exec.call(this, str);         return result && (result.groups = buildGroups(result, this)), result;     }, BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {         if ("string" == typeof substitution) {             var groups = _groups.get(this);             return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function(_, name) {                 return "$" + groups[name];             }));         }         if ("function" == typeof substitution) {             var _this = this;             return _super[Symbol.replace].call(this, str, function() {                 var args = arguments;                 return "object" != _typeof(args[args.length - 1]) && (args = [].slice.call(args)).push(buildGroups(args, _this)),                  substitution.apply(this, args);             });         }         return _super[Symbol.replace].call(this, str, substitution);     }, _wrapRegExp.apply(this, arguments); }  function _inherits(subClass, superClass) {     if (typeof superClass !== "function" && superClass !== null) {         throw new TypeError("Super expression must either be null or a function");     }     subClass.prototype = Object.create(superClass && superClass.prototype, {         constructor: {             value: subClass,             writable: true,             configurable: true         }     });     Object.defineProperty(subClass, "prototype", {         writable: false     });     if (superClass) _setPrototypeOf(subClass, superClass); }  function _setPrototypeOf(o, p) {     _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {         o.__proto__ = p;         return o;     };     return _setPrototypeOf(o, p); }  function _regeneratorRuntime() {     "use strict";     _regeneratorRuntime = function _regeneratorRuntime() {         return exports;     };     var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";     function define(obj, key, value) {         return Object.defineProperty(obj, key, {             value: value,             enumerable: !0,             configurable: !0,             writable: !0         }), obj[key];     }     try {         define({}, "");     } catch (err) {         define = function define(obj, key, value) {             return obj[key] = value;         };     }     function wrap(innerFn, outerFn, self, tryLocsList) {         var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []);         return generator._invoke = function(innerFn, self, context) {             var state = "suspendedStart";             return function(method, arg) {                 if ("executing" === state) throw new Error("Generator is already running");                 if ("completed" === state) {                     if ("throw" === method) throw arg;                     return doneResult();                 }                 for (context.method = method, context.arg = arg; ;) {                     var delegate = context.delegate;                     if (delegate) {                         var delegateResult = maybeInvokeDelegate(delegate, context);                         if (delegateResult) {                             if (delegateResult === ContinueSentinel) continue;                             return delegateResult;                         }                     }                     if ("next" === context.method) context.sent = context._sent = context.arg; else if ("throw" === context.method) {                         if ("suspendedStart" === state) throw state = "completed",                          context.arg;                         context.dispatchException(context.arg);                     } else "return" === context.method && context.abrupt("return", context.arg);                     state = "executing";                     var record = tryCatch(innerFn, self, context);                     if ("normal" === record.type) {                         if (state = context.done ? "completed" : "suspendedYield",                          record.arg === ContinueSentinel) continue;                         return {                             value: record.arg,                             done: context.done                         };                     }                     "throw" === record.type && (state = "completed", context.method = "throw",                      context.arg = record.arg);                 }             };         }(innerFn, self, context), generator;     }     function tryCatch(fn, obj, arg) {         try {             return {                 type: "normal",                 arg: fn.call(obj, arg)             };         } catch (err) {             return {                 type: "throw",                 arg: err             };         }     }     exports.wrap = wrap;     var ContinueSentinel = {};     function Generator() {}     function GeneratorFunction() {}     function GeneratorFunctionPrototype() {}     var IteratorPrototype = {};     define(IteratorPrototype, iteratorSymbol, function() {         return this;     });     var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([])));     NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);     var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);     function defineIteratorMethods(prototype) {         [ "next", "throw", "return" ].forEach(function(method) {             define(prototype, method, function(arg) {                 return this._invoke(method, arg);             });         });     }     function AsyncIterator(generator, PromiseImpl) {         function invoke(method, arg, resolve, reject) {             var record = tryCatch(generator[method], generator, arg);             if ("throw" !== record.type) {                 var result = record.arg, value = result.value;                 return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function(value) {                     invoke("next", value, resolve, reject);                 }, function(err) {                     invoke("throw", err, resolve, reject);                 }) : PromiseImpl.resolve(value).then(function(unwrapped) {                     result.value = unwrapped, resolve(result);                 }, function(error) {                     return invoke("throw", error, resolve, reject);                 });             }             reject(record.arg);         }         var previousPromise;         this._invoke = function(method, arg) {             function callInvokeWithMethodAndArg() {                 return new PromiseImpl(function(resolve, reject) {                     invoke(method, arg, resolve, reject);                 });             }             return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();         };     }     function maybeInvokeDelegate(delegate, context) {         var method = delegate.iterator[context.method];         if (undefined === method) {             if (context.delegate = null, "throw" === context.method) {                 if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined,                  maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel;                 context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method");             }             return ContinueSentinel;         }         var record = tryCatch(method, delegate.iterator, context.arg);         if ("throw" === record.type) return context.method = "throw", context.arg = record.arg,          context.delegate = null, ContinueSentinel;         var info = record.arg;         return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc,          "return" !== context.method && (context.method = "next", context.arg = undefined),          context.delegate = null, ContinueSentinel) : info : (context.method = "throw",          context.arg = new TypeError("iterator result is not an object"), context.delegate = null,          ContinueSentinel);     }     function pushTryEntry(locs) {         var entry = {             tryLoc: locs[0]         };         1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2],          entry.afterLoc = locs[3]), this.tryEntries.push(entry);     }     function resetTryEntry(entry) {         var record = entry.completion || {};         record.type = "normal", delete record.arg, entry.completion = record;     }     function Context(tryLocsList) {         this.tryEntries = [ {             tryLoc: "root"         } ], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);     }     function values(iterable) {         if (iterable) {             var iteratorMethod = iterable[iteratorSymbol];             if (iteratorMethod) return iteratorMethod.call(iterable);             if ("function" == typeof iterable.next) return iterable;             if (!isNaN(iterable.length)) {                 var i = -1, next = function next() {                     for (;++i < iterable.length; ) {                         if (hasOwn.call(iterable, i)) return next.value = iterable[i],                          next.done = !1, next;                     }                     return next.value = undefined, next.done = !0, next;                 };                 return next.next = next;             }         }         return {             next: doneResult         };     }     function doneResult() {         return {             value: undefined,             done: !0         };     }     return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype),      define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"),      exports.isGeneratorFunction = function(genFun) {         var ctor = "function" == typeof genFun && genFun.constructor;         return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));     }, exports.mark = function(genFun) {         return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype,          define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp),          genFun;     }, exports.awrap = function(arg) {         return {             __await: arg         };     }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function() {         return this;     }), exports.AsyncIterator = AsyncIterator, exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {         void 0 === PromiseImpl && (PromiseImpl = Promise);         var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);         return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function(result) {             return result.done ? result.value : iter.next();         });     }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function() {         return this;     }), define(Gp, "toString", function() {         return "[object Generator]";     }), exports.keys = function(object) {         var keys = [];         for (var key in object) {             keys.push(key);         }         return keys.reverse(), function next() {             for (;keys.length; ) {                 var key = keys.pop();                 if (key in object) return next.value = key, next.done = !1, next;             }             return next.done = !0, next;         };     }, exports.values = values, Context.prototype = {         constructor: Context,         reset: function reset(skipTempReset) {             if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined,              this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined,              this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {                 "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);             }         },         stop: function stop() {             this.done = !0;             var rootRecord = this.tryEntries[0].completion;             if ("throw" === rootRecord.type) throw rootRecord.arg;             return this.rval;         },         dispatchException: function dispatchException(exception) {             if (this.done) throw exception;             var context = this;             function handle(loc, caught) {                 return record.type = "throw", record.arg = exception, context.next = loc,                  caught && (context.method = "next", context.arg = undefined), !!caught;             }             for (var i = this.tryEntries.length - 1; i >= 0; --i) {                 var entry = this.tryEntries[i], record = entry.completion;                 if ("root" === entry.tryLoc) return handle("end");                 if (entry.tryLoc <= this.prev) {                     var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc");                     if (hasCatch && hasFinally) {                         if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);                         if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);                     } else if (hasCatch) {                         if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);                     } else {                         if (!hasFinally) throw new Error("try statement without catch or finally");                         if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);                     }                 }             }         },         abrupt: function abrupt(type, arg) {             for (var i = this.tryEntries.length - 1; i >= 0; --i) {                 var entry = this.tryEntries[i];                 if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {                     var finallyEntry = entry;                     break;                 }             }             finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);             var record = finallyEntry ? finallyEntry.completion : {};             return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next",              this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);         },         complete: function complete(record, afterLoc) {             if ("throw" === record.type) throw record.arg;             return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg,              this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc),              ContinueSentinel;         },         finish: function finish(finallyLoc) {             for (var i = this.tryEntries.length - 1; i >= 0; --i) {                 var entry = this.tryEntries[i];                 if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc),                  resetTryEntry(entry), ContinueSentinel;             }         },         catch: function _catch(tryLoc) {             for (var i = this.tryEntries.length - 1; i >= 0; --i) {                 var entry = this.tryEntries[i];                 if (entry.tryLoc === tryLoc) {                     var record = entry.completion;                     if ("throw" === record.type) {                         var thrown = record.arg;                         resetTryEntry(entry);                     }                     return thrown;                 }             }             throw new Error("illegal catch attempt");         },         delegateYield: function delegateYield(iterable, resultName, nextLoc) {             return this.delegate = {                 iterator: values(iterable),                 resultName: resultName,                 nextLoc: nextLoc             }, "next" === this.method && (this.arg = undefined), ContinueSentinel;         }     }, exports; }  function _slicedToArray(arr, i) {     return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }  function _nonIterableRest() {     throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }  function _iterableToArrayLimit(arr, i) {     var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];     if (_i == null) return;     var _arr = [];     var _n = true;     var _d = false;     var _s, _e;     try {         for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {             _arr.push(_s.value);             if (i && _arr.length === i) break;         }     } catch (err) {         _d = true;         _e = err;     } finally {         try {             if (!_n && _i["return"] != null) _i["return"]();         } finally {             if (_d) throw _e;         }     }     return _arr; }  function _arrayWithHoles(arr) {     if (Array.isArray(arr)) return arr; }  function _createForOfIteratorHelper(o, allowArrayLike) {     var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];     if (!it) {         if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {             if (it) o = it;             var i = 0;             var F = function F() {};             return {                 s: F,                 n: function n() {                     if (i >= o.length) return {                         done: true                     };                     return {                         done: false,                         value: o[i++]                     };                 },                 e: function e(_e2) {                     throw _e2;                 },                 f: F             };         }         throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");     }     var normalCompletion = true, didErr = false, err;     return {         s: function s() {             it = it.call(o);         },         n: function n() {             var step = it.next();             normalCompletion = step.done;             return step;         },         e: function e(_e3) {             didErr = true;             err = _e3;         },         f: function f() {             try {                 if (!normalCompletion && it["return"] != null) it["return"]();             } finally {                 if (didErr) throw err;             }         }     }; }  function _unsupportedIterableToArray(o, minLen) {     if (!o) return;     if (typeof o === "string") return _arrayLikeToArray(o, minLen);     var n = Object.prototype.toString.call(o).slice(8, -1);     if (n === "Object" && o.constructor) n = o.constructor.name;     if (n === "Map" || n === "Set") return Array.from(o);     if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }  function _arrayLikeToArray(arr, len) {     if (len == null || len > arr.length) len = arr.length;     for (var i = 0, arr2 = new Array(len); i < len; i++) {         arr2[i] = arr[i];     }     return arr2; }  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {     try {         var info = gen[key](arg);         var value = info.value;     } catch (error) {         reject(error);         return;     }     if (info.done) {         resolve(value);     } else {         Promise.resolve(value).then(_next, _throw);     } }  function _asyncToGenerator(fn) {     return function() {         var self = this, args = arguments;         return new Promise(function(resolve, reject) {             var gen = fn.apply(self, args);             function _next(value) {                 asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);             }             function _throw(err) {                 asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);             }             _next(undefined);         });     }; }  function _classCallCheck(instance, Constructor) {     if (!(instance instanceof Constructor)) {         throw new TypeError("Cannot call a class as a function");     } }  function _defineProperties(target, props) {     for (var i = 0; i < props.length; i++) {         var descriptor = props[i];         descriptor.enumerable = descriptor.enumerable || false;         descriptor.configurable = true;         if ("value" in descriptor) descriptor.writable = true;         Object.defineProperty(target, descriptor.key, descriptor);     } }  function _createClass(Constructor, protoProps, staticProps) {     if (protoProps) _defineProperties(Constructor.prototype, protoProps);     if (staticProps) _defineProperties(Constructor, staticProps);     Object.defineProperty(Constructor, "prototype", {         writable: false     });     return Constructor; }  mw.VcardAssistantConfig.Adaptations = function() {     function _class() {         _classCallCheck(this, _class);     }     _createClass(_class, [ {         key: "queryEnum",         value: function() {             var _queryEnum = _asyncToGenerator(_regeneratorRuntime().mark(function _callee(key) {                 var groups, _yield$this$getSubtyp, groupMeanings, subtypes, sortedSubtypeNames, outList, lastGroup, _iterator, _step, subtypeName, subtype, data, _yield$Promise$all, _yield$Promise$all2, types, _groups, formatSubtype;                 return _regeneratorRuntime().wrap(function _callee$(_context) {                     while (1) {                         switch (_context.prev = _context.next) {                           case 0:                             formatSubtype = function _formatSubtype(subtypeName) {                                 return subtypeName.replace(/\[(?:[^[\]]*)\|([^[\]]*)\]/gi, "$1").replace(/\[([^[\]]*)\]/gi, "");                             };                             _context.t0 = key;                             _context.next = _context.t0 === "group" ? 4 : _context.t0 === "subtype" ? 8 : _context.t0 === "type" ? 19 : 26;                             break;                            case 4:                             _context.next = 6;                             return this.getGroups();                            case 6:                             groups = _context.sent;                             return _context.abrupt("return", Object.keys(groups).map(function(groupName) {                                 var group = groups[groupName];                                 var data = {                                     color: group.color,                                     data: groupName,                                     label: group.label || group.group                                 };                                 return data;                             }));                            case 8:                             _context.next = 10;                             return this.getSubtypes();                            case 10:                             _yield$this$getSubtyp = _context.sent;                             groupMeanings = _yield$this$getSubtyp.groupMeanings;                             subtypes = _yield$this$getSubtyp.subtypes;                             sortedSubtypeNames = Object.keys(subtypes).sort(function(a, b) {                                 var left = subtypes[a];                                 var right = subtypes[b];                                 return left.groupNumber - right.groupNumber !== 0 ? left.groupNumber - right.groupNumber : left.label.localeCompare(right.label);                             });                             outList = [];                             lastGroup = -1;                             _iterator = _createForOfIteratorHelper(sortedSubtypeNames);                             try {                                 for (_iterator.s(); !(_step = _iterator.n()).done; ) {                                     subtypeName = _step.value;                                     subtype = subtypes[subtypeName];                                     if (lastGroup !== subtype.groupNumber) {                                         outList.push({                                             optgroup: groupMeanings[subtype.groupNumber] || subtype.groupNumber                                         });                                         lastGroup = subtype.groupNumber;                                     }                                     data = {                                         data: subtypeName,                                         label: subtype.label !== null ? formatSubtype(subtype.label) : subtypeName                                     };                                     outList.push(data);                                 }                             } catch (err) {                                 _iterator.e(err);                             } finally {                                 _iterator.f();                             }                             return _context.abrupt("return", outList);                            case 19:                             _context.next = 21;                             return Promise.all([ this.getTypes(), this.getGroups() ]);                            case 21:                             _yield$Promise$all = _context.sent;                             _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);                             types = _yield$Promise$all2[0];                             _groups = _yield$Promise$all2[1];                             return _context.abrupt("return", Object.keys(types).sort(function(a, b) {                                 return types[a].label.localeCompare(types[b].label);                             }).map(function(typeName) {                                 var _groups$type$group$co, _type$label;                                 var type = types[typeName];                                 var data = {                                     color: (_groups$type$group$co = _groups[type.group].color) !== null && _groups$type$group$co !== void 0 ? _groups$type$group$co : null,                                     data: typeName,                                     label: (_type$label = type.label) !== null && _type$label !== void 0 ? _type$label : typeName                                 };                                 return data;                             }));                            case 26:                             throw new Error("Illegal key");                            case 27:                           case "end":                             return _context.stop();                         }                     }                 }, _callee, this);             }));             function queryEnum(_x) {                 return _queryEnum.apply(this, arguments);             }             return queryEnum;         }()     }, {         key: "getEditButton",         value: function getEditButton(sectionIndex, vcardIndex, clickCallback) {             var $editButton = $("<a href=\"javascript:void('editvcard-".concat(sectionIndex, "-").concat(vcardIndex, '\')" title="Diese vCard bearbeiten">Bearbeiten</a>')).on("click", clickCallback);             $editButton = $("<span>").append($editButton);             $editButton = $("<span>").addClass("listing-metadata-item").addClass("listing-edit-button").addClass("noprint").append($editButton);             return $editButton[0];         }     }, {         key: "getGroups",         value: function() {             var _getGroups = _asyncToGenerator(_regeneratorRuntime().mark(function _callee2() {                 var e, lineRegexp, match, jsonLines, parameterName, definition;                 return _regeneratorRuntime().wrap(function _callee2$(_context2) {                     while (1) {                         switch (_context2.prev = _context2.next) {                           case 0:                             _context2.next = 2;                             return $.ajax({                                 data: {                                     title: "Modul:Marker utilities/Groups",                                     action: "raw",                                     ctype: "text/plain"                                 },                                 method: "GET",                                 url: mw.util.wikiScript("")                             });                            case 2:                             e = _context2.sent;                             lineRegexp = /[ \t]+(([a-zA-Z0-9 _]+?)|'([a-zA-Z0-9 _]+)'|"([a-zA-Z0-9 _]+)"|\['([a-zA-Z0-9 _]+)'\]|\["([a-zA-Z0-9 _]+)"\]) *= *{(.+?)}/g;                             jsonLines = [];                             do {                                 match = lineRegexp.exec(e);                                 if (match) {                                     parameterName = match[2] || match[3] || match[4] || match[5] || match[6];                                     definition = match[7];                                     definition = definition.replace(/(^|,) ([^ ]+) = /g, '$1"$2":');                                     jsonLines.push('"'.concat(parameterName.replace(/_/g, " "), '": {').concat(definition, "}"));                                 }                             } while (match);                             return _context2.abrupt("return", JSON.parse("{".concat(jsonLines.join(","), "}")));                            case 7:                           case "end":                             return _context2.stop();                         }                     }                 }, _callee2);             }));             function getGroups() {                 return _getGroups.apply(this, arguments);             }             return getGroups;         }()     }, {         key: "getOutdatedThreshold",         value: function getOutdatedThreshold(prefill) {             return 2 * 365 * 24 * 60;         }     }, {         key: "getSubtypes",         value: function() {             var _getSubtypes = _asyncToGenerator(_regeneratorRuntime().mark(function _callee3() {                 var e, lines, declarationRegex, groupRegex, labelRegex, subtypes, _iterator2, _step2, _line, declarationEval, _declarationEval$grou, name, body, groupEval, group, labelEval, label, meaningBodyRegex, meaningDeclarationRegex, groupNumberMeanings, meaningBodyEval, _iterator3, _step3, line, meaningDeclarationEval, _meaningDeclarationEv;                 return _regeneratorRuntime().wrap(function _callee3$(_context3) {                     while (1) {                         switch (_context3.prev = _context3.next) {                           case 0:                             _context3.next = 2;                             return $.ajax({                                 data: {                                     title: "Modul:VCard/Subtypes",                                     action: "raw",                                     ctype: "text/plain"                                 },                                 method: "GET",                                 url: mw.util.wikiScript("")                             });                            case 2:                             e = _context3.sent;                             lines = e.split("\n");                             declarationRegex = _wrapRegExp(/(?:\["([^"]+)"\]|([\w]+)) *= *\{([^\n]+)\}/, {                                 nameBrackted: 1,                                 nameNonBracketed: 2,                                 body: 3                             });                             groupRegex = _wrapRegExp(/g[\s\t]*=[\s\t]*(\d+)/, {                                 group: 1                             });                             labelRegex = _wrapRegExp(/n[\s\t]*=[\s\t]*"([^"]+)"/, {                                 label: 1                             });                             subtypes = {};                             _iterator2 = _createForOfIteratorHelper(lines);                             try {                                 for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {                                     _line = _step2.value;                                     declarationEval = declarationRegex.exec(_line);                                     if (declarationEval) {                                         name = (_declarationEval$grou = declarationEval.groups.nameBracketed) !== null && _declarationEval$grou !== void 0 ? _declarationEval$grou : declarationEval.groups.nameNonBracketed;                                         body = declarationEval.groups.body;                                         groupEval = groupRegex.exec(body);                                         group = groupEval ? groupEval.groups.group : null;                                         labelEval = labelRegex.exec(body);                                         label = labelEval ? labelEval.groups.label : null;                                         subtypes[name] = {                                             groupNumber: parseInt(group),                                             label: label                                         };                                     }                                 }                             } catch (err) {                                 _iterator2.e(err);                             } finally {                                 _iterator2.f();                             }                             meaningBodyRegex = _wrapRegExp(/[\s\S]*[\t ]g = \{([^}]+)\}/gm, {                                 body: 1                             });                             meaningDeclarationRegex = _wrapRegExp(/(?:\["([^"]+)"\]|([\w]+))[\s\t]*=[\s\t]*"([^"]+)"/, {                                 nameBracketed: 1,                                 nameNonBracketed: 2,                                 label: 3                             });                             groupNumberMeanings = {};                             meaningBodyEval = meaningBodyRegex.exec(e);                             if (meaningBodyEval) {                                 _iterator3 = _createForOfIteratorHelper(meaningBodyEval.groups.body.split("\n"));                                 try {                                     for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) {                                         line = _step3.value;                                         meaningDeclarationEval = meaningDeclarationRegex.exec(line);                                         if (meaningDeclarationEval) {                                             groupNumberMeanings[(_meaningDeclarationEv = meaningDeclarationEval.groups.nameBracketed) !== null && _meaningDeclarationEv !== void 0 ? _meaningDeclarationEv : meaningDeclarationEval.groups.nameNonBracketed] = meaningDeclarationEval.groups.label;                                         }                                     }                                 } catch (err) {                                     _iterator3.e(err);                                 } finally {                                     _iterator3.f();                                 }                             }                             return _context3.abrupt("return", {                                 groupMeanings: groupNumberMeanings,                                 subtypes: subtypes                             });                            case 16:                           case "end":                             return _context3.stop();                         }                     }                 }, _callee3);             }));             function getSubtypes() {                 return _getSubtypes.apply(this, arguments);             }             return getSubtypes;         }()     }, {         key: "getTypes",         value: function() {             var _getTypes = _asyncToGenerator(_regeneratorRuntime().mark(function _callee4() {                 var e, lines, declarationRegex, groupRegex, labelRegex, groups, _iterator4, _step4, line, declarationEval, _declarationEval$grou2, name, body, groupEval, group, labelEval, label;                 return _regeneratorRuntime().wrap(function _callee4$(_context4) {                     while (1) {                         switch (_context4.prev = _context4.next) {                           case 0:                             _context4.next = 2;                             return $.ajax({                                 data: {                                     title: "Modul:Marker utilities/Types",                                     action: "raw",                                     ctype: "text/plain"                                 },                                 method: "GET",                                 url: mw.util.wikiScript("")                             });                            case 2:                             e = _context4.sent;                             lines = e.split("\n");                             declarationRegex = _wrapRegExp(/(?:\["([^"]+)"\]|([\w]+))[\s\t]*=[\s\t]*\{([^\n]+)\}/, {                                 nameBracketed: 1,                                 nameNonBracketed: 2,                                 body: 3                             });                             groupRegex = _wrapRegExp(/group[\s\t]*=[\s\t]*"([^"]+)"/, {                                 group: 1                             });                             labelRegex = _wrapRegExp(/label[\s\t]*=[\s\t]*"([^"]+)"/, {                                 label: 1                             });                             groups = {};                             _iterator4 = _createForOfIteratorHelper(lines);                             try {                                 for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) {                                     line = _step4.value;                                     declarationEval = declarationRegex.exec(line);                                     if (declarationEval) {                                         name = (_declarationEval$grou2 = declarationEval.groups.nameBracketed) !== null && _declarationEval$grou2 !== void 0 ? _declarationEval$grou2 : declarationEval.groups.nameNonBracketed;                                         body = declarationEval.groups.body;                                         groupEval = groupRegex.exec(body);                                         group = groupEval ? groupEval.groups.group : null;                                         labelEval = labelRegex.exec(body);                                         label = labelEval ? labelEval.groups.label : null;                                         if (group !== null && label !== null) {                                             groups[name] = {                                                 group: group,                                                 label: label                                             };                                         }                                     }                                 }                             } catch (err) {                                 _iterator4.e(err);                             } finally {                                 _iterator4.f();                             }                             return _context4.abrupt("return", groups);                            case 11:                           case "end":                             return _context4.stop();                         }                     }                 }, _callee4);             }));             function getTypes() {                 return _getTypes.apply(this, arguments);             }             return getTypes;         }()     }, {         key: "parseTimestamp",         value: function parseTimestamp(parameterName, timestamp) {             return new Date(timestamp);         }     } ]);     return _class; }();  "use strict";  function _typeof(obj) {     "@babel/helpers - typeof";     return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {         return typeof obj;     } : function(obj) {         return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;     }, _typeof(obj); }  function _regeneratorRuntime() {     "use strict";     _regeneratorRuntime = function _regeneratorRuntime() {         return exports;     };     var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";     function define(obj, key, value) {         return Object.defineProperty(obj, key, {             value: value,             enumerable: !0,             configurable: !0,             writable: !0         }), obj[key];     }     try {         define({}, "");     } catch (err) {         define = function define(obj, key, value) {             return obj[key] = value;         };     }     function wrap(innerFn, outerFn, self, tryLocsList) {         var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []);         return generator._invoke = function(innerFn, self, context) {             var state = "suspendedStart";             return function(method, arg) {                 if ("executing" === state) throw new Error("Generator is already running");                 if ("completed" === state) {                     if ("throw" === method) throw arg;                     return doneResult();                 }                 for (context.method = method, context.arg = arg; ;) {                     var delegate = context.delegate;                     if (delegate) {                         var delegateResult = maybeInvokeDelegate(delegate, context);                         if (delegateResult) {                             if (delegateResult === ContinueSentinel) continue;                             return delegateResult;                         }                     }                     if ("next" === context.method) context.sent = context._sent = context.arg; else if ("throw" === context.method) {                         if ("suspendedStart" === state) throw state = "completed",                          context.arg;                         context.dispatchException(context.arg);                     } else "return" === context.method && context.abrupt("return", context.arg);                     state = "executing";                     var record = tryCatch(innerFn, self, context);                     if ("normal" === record.type) {                         if (state = context.done ? "completed" : "suspendedYield",                          record.arg === ContinueSentinel) continue;                         return {                             value: record.arg,                             done: context.done                         };                     }                     "throw" === record.type && (state = "completed", context.method = "throw",                      context.arg = record.arg);                 }             };         }(innerFn, self, context), generator;     }     function tryCatch(fn, obj, arg) {         try {             return {                 type: "normal",                 arg: fn.call(obj, arg)             };         } catch (err) {             return {                 type: "throw",                 arg: err             };         }     }     exports.wrap = wrap;     var ContinueSentinel = {};     function Generator() {}     function GeneratorFunction() {}     function GeneratorFunctionPrototype() {}     var IteratorPrototype = {};     define(IteratorPrototype, iteratorSymbol, function() {         return this;     });     var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([])));     NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);     var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);     function defineIteratorMethods(prototype) {         [ "next", "throw", "return" ].forEach(function(method) {             define(prototype, method, function(arg) {                 return this._invoke(method, arg);             });         });     }     function AsyncIterator(generator, PromiseImpl) {         function invoke(method, arg, resolve, reject) {             var record = tryCatch(generator[method], generator, arg);             if ("throw" !== record.type) {                 var result = record.arg, value = result.value;                 return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function(value) {                     invoke("next", value, resolve, reject);                 }, function(err) {                     invoke("throw", err, resolve, reject);                 }) : PromiseImpl.resolve(value).then(function(unwrapped) {                     result.value = unwrapped, resolve(result);                 }, function(error) {                     return invoke("throw", error, resolve, reject);                 });             }             reject(record.arg);         }         var previousPromise;         this._invoke = function(method, arg) {             function callInvokeWithMethodAndArg() {                 return new PromiseImpl(function(resolve, reject) {                     invoke(method, arg, resolve, reject);                 });             }             return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();         };     }     function maybeInvokeDelegate(delegate, context) {         var method = delegate.iterator[context.method];         if (undefined === method) {             if (context.delegate = null, "throw" === context.method) {                 if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined,                  maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel;                 context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method");             }             return ContinueSentinel;         }         var record = tryCatch(method, delegate.iterator, context.arg);         if ("throw" === record.type) return context.method = "throw", context.arg = record.arg,          context.delegate = null, ContinueSentinel;         var info = record.arg;         return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc,          "return" !== context.method && (context.method = "next", context.arg = undefined),          context.delegate = null, ContinueSentinel) : info : (context.method = "throw",          context.arg = new TypeError("iterator result is not an object"), context.delegate = null,          ContinueSentinel);     }     function pushTryEntry(locs) {         var entry = {             tryLoc: locs[0]         };         1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2],          entry.afterLoc = locs[3]), this.tryEntries.push(entry);     }     function resetTryEntry(entry) {         var record = entry.completion || {};         record.type = "normal", delete record.arg, entry.completion = record;     }     function Context(tryLocsList) {         this.tryEntries = [ {             tryLoc: "root"         } ], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);     }     function values(iterable) {         if (iterable) {             var iteratorMethod = iterable[iteratorSymbol];             if (iteratorMethod) return iteratorMethod.call(iterable);             if ("function" == typeof iterable.next) return iterable;             if (!isNaN(iterable.length)) {                 var i = -1, next = function next() {                     for (;++i < iterable.length; ) {                         if (hasOwn.call(iterable, i)) return next.value = iterable[i],                          next.done = !1, next;                     }                     return next.value = undefined, next.done = !0, next;                 };                 return next.next = next;             }         }         return {             next: doneResult         };     }     function doneResult() {         return {             value: undefined,             done: !0         };     }     return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype),      define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"),      exports.isGeneratorFunction = function(genFun) {         var ctor = "function" == typeof genFun && genFun.constructor;         return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));     }, exports.mark = function(genFun) {         return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype,          define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp),          genFun;     }, exports.awrap = function(arg) {         return {             __await: arg         };     }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function() {         return this;     }), exports.AsyncIterator = AsyncIterator, exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {         void 0 === PromiseImpl && (PromiseImpl = Promise);         var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);         return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function(result) {             return result.done ? result.value : iter.next();         });     }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function() {