summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/cheerio/lib/api
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/cheerio/lib/api')
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/attributes.d.ts332
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/attributes.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/attributes.js622
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/attributes.js.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/css.d.ts40
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/css.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/css.js118
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/css.js.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/forms.d.ts38
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/forms.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/forms.js92
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/forms.js.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.d.ts522
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.js861
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.js.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/traversing.d.ts644
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/traversing.d.ts.map1
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/traversing.js907
-rw-r--r--includes/external/addressbook/node_modules/cheerio/lib/api/traversing.js.map1
20 files changed, 4186 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.d.ts b/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.d.ts
new file mode 100644
index 0000000..a310693
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.d.ts
@@ -0,0 +1,332 @@
+/**
+ * Methods for getting and modifying attributes.
+ *
+ * @module cheerio/attributes
+ */
+import type { AnyNode, Element } from 'domhandler';
+import type { Cheerio } from '../cheerio.js';
+/**
+ * Method for getting attributes. Gets the attribute value for only the first
+ * element in the matched set.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('ul').attr('id');
+ * //=> fruits
+ * ```
+ *
+ * @param name - Name of the attribute.
+ * @returns The attribute's value.
+ * @see {@link https://api.jquery.com/attr/}
+ */
+export declare function attr<T extends AnyNode>(this: Cheerio<T>, name: string): string | undefined;
+/**
+ * Method for getting all attributes and their values of the first element in
+ * the matched set.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('ul').attr();
+ * //=> { id: 'fruits' }
+ * ```
+ *
+ * @returns The attribute's values.
+ * @see {@link https://api.jquery.com/attr/}
+ */
+export declare function attr<T extends AnyNode>(this: Cheerio<T>): Record<string, string> | undefined;
+/**
+ * Method for setting attributes. Sets the attribute value for only the first
+ * element in the matched set. If you set an attribute's value to `null`, you
+ * remove that attribute. You may also pass a `map` and `function`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.apple').attr('id', 'favorite').html();
+ * //=> <li class="apple" id="favorite">Apple</li>
+ * ```
+ *
+ * @param name - Name of the attribute.
+ * @param value - The new value of the attribute.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/attr/}
+ */
+export declare function attr<T extends AnyNode>(this: Cheerio<T>, name: string, value?: string | null | ((this: Element, i: number, attrib: string) => string | null)): Cheerio<T>;
+/**
+ * Method for setting multiple attributes at once. Sets the attribute value for
+ * only the first element in the matched set. If you set an attribute's value to
+ * `null`, you remove that attribute.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.apple').attr({ id: 'favorite' }).html();
+ * //=> <li class="apple" id="favorite">Apple</li>
+ * ```
+ *
+ * @param values - Map of attribute names and values.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/attr/}
+ */
+export declare function attr<T extends AnyNode>(this: Cheerio<T>, values: Record<string, string | null>): Cheerio<T>;
+interface StyleProp {
+ length: number;
+ [key: string]: string | number;
+ [index: number]: string;
+}
+/**
+ * Method for getting and setting properties. Gets the property value for only
+ * the first element in the matched set.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('input[type="checkbox"]').prop('checked');
+ * //=> false
+ *
+ * $('input[type="checkbox"]').prop('checked', true).val();
+ * //=> ok
+ * ```
+ *
+ * @param name - Name of the property.
+ * @param value - If specified set the property to this.
+ * @returns If `value` is specified the instance itself, otherwise the prop's value.
+ * @see {@link https://api.jquery.com/prop/}
+ */
+export declare function prop<T extends AnyNode>(this: Cheerio<T>, name: 'tagName' | 'nodeName'): T extends Element ? string : undefined;
+export declare function prop<T extends AnyNode>(this: Cheerio<T>, name: 'innerHTML' | 'outerHTML' | 'innerText' | 'textContent'): string | null;
+/** Get a parsed CSS style object. */
+export declare function prop<T extends AnyNode>(this: Cheerio<T>, name: 'style'): StyleProp | undefined;
+/**
+ * Resolve `href` or `src` of supported elements. Requires the `baseURI` option
+ * to be set, and a global `URL` object to be part of the environment.
+ *
+ * @example With `baseURI` set to `'https://example.com'`:
+ *
+ * ```js
+ * $('<img src="image.png">').prop('src');
+ * //=> 'https://example.com/image.png'
+ * ```
+ */
+export declare function prop<T extends AnyNode>(this: Cheerio<T>, name: 'href' | 'src'): string | undefined;
+/** Get a property of an element. */
+export declare function prop<T extends AnyNode, K extends keyof Element>(this: Cheerio<T>, name: K): Element[K];
+/** Set a property of an element. */
+export declare function prop<T extends AnyNode, K extends keyof Element>(this: Cheerio<T>, name: K, value: Element[K] | ((this: Element, i: number, prop: K) => Element[keyof Element])): Cheerio<T>;
+export declare function prop<T extends AnyNode>(this: Cheerio<T>, name: Record<string, string | Element[keyof Element] | boolean>): Cheerio<T>;
+export declare function prop<T extends AnyNode>(this: Cheerio<T>, name: string, value: string | boolean | null | ((this: Element, i: number, prop: string) => string | boolean)): Cheerio<T>;
+export declare function prop<T extends AnyNode>(this: Cheerio<T>, name: string): string;
+/**
+ * Method for getting data attributes, for only the first element in the matched set.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('<div data-apple-color="red"></div>').data('apple-color');
+ * //=> 'red'
+ * ```
+ *
+ * @param name - Name of the data attribute.
+ * @returns The data attribute's value, or `undefined` if the attribute does not exist.
+ * @see {@link https://api.jquery.com/data/}
+ */
+export declare function data<T extends AnyNode>(this: Cheerio<T>, name: string): unknown | undefined;
+/**
+ * Method for getting all of an element's data attributes, for only the first
+ * element in the matched set.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('<div data-apple-color="red"></div>').data();
+ * //=> { appleColor: 'red' }
+ * ```
+ *
+ * @returns A map with all of the data attributes.
+ * @see {@link https://api.jquery.com/data/}
+ */
+export declare function data<T extends AnyNode>(this: Cheerio<T>): Record<string, unknown>;
+/**
+ * Method for setting data attributes, for only the first element in the matched set.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * const apple = $('.apple').data('kind', 'mac');
+ *
+ * apple.data('kind');
+ * //=> 'mac'
+ * ```
+ *
+ * @param name - Name of the data attribute.
+ * @param value - The new value.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/data/}
+ */
+export declare function data<T extends AnyNode>(this: Cheerio<T>, name: string, value: unknown): Cheerio<T>;
+/**
+ * Method for setting multiple data attributes at once, for only the first
+ * element in the matched set.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * const apple = $('.apple').data({ kind: 'mac' });
+ *
+ * apple.data('kind');
+ * //=> 'mac'
+ * ```
+ *
+ * @param values - Map of names to values.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/data/}
+ */
+export declare function data<T extends AnyNode>(this: Cheerio<T>, values: Record<string, unknown>): Cheerio<T>;
+/**
+ * Method for getting the value of input, select, and textarea. Note: Support
+ * for `map`, and `function` has not been added yet.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('input[type="text"]').val();
+ * //=> input_text
+ * ```
+ *
+ * @returns The value.
+ * @see {@link https://api.jquery.com/val/}
+ */
+export declare function val<T extends AnyNode>(this: Cheerio<T>): string | undefined | string[];
+/**
+ * Method for setting the value of input, select, and textarea. Note: Support
+ * for `map`, and `function` has not been added yet.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('input[type="text"]').val('test').html();
+ * //=> <input type="text" value="test"/>
+ * ```
+ *
+ * @param value - The new value.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/val/}
+ */
+export declare function val<T extends AnyNode>(this: Cheerio<T>, value: string | string[]): Cheerio<T>;
+/**
+ * Method for removing attributes by `name`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.pear').removeAttr('class').html();
+ * //=> <li>Pear</li>
+ *
+ * $('.apple').attr('id', 'favorite');
+ * $('.apple').removeAttr('id class').html();
+ * //=> <li>Apple</li>
+ * ```
+ *
+ * @param name - Name of the attribute.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/removeAttr/}
+ */
+export declare function removeAttr<T extends AnyNode>(this: Cheerio<T>, name: string): Cheerio<T>;
+/**
+ * Check to see if _any_ of the matched elements have the given `className`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.pear').hasClass('pear');
+ * //=> true
+ *
+ * $('apple').hasClass('fruit');
+ * //=> false
+ *
+ * $('li').hasClass('pear');
+ * //=> true
+ * ```
+ *
+ * @param className - Name of the class.
+ * @returns Indicates if an element has the given `className`.
+ * @see {@link https://api.jquery.com/hasClass/}
+ */
+export declare function hasClass<T extends AnyNode>(this: Cheerio<T>, className: string): boolean;
+/**
+ * Adds class(es) to all of the matched elements. Also accepts a `function`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.pear').addClass('fruit').html();
+ * //=> <li class="pear fruit">Pear</li>
+ *
+ * $('.apple').addClass('fruit red').html();
+ * //=> <li class="apple fruit red">Apple</li>
+ * ```
+ *
+ * @param value - Name of new class.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/addClass/}
+ */
+export declare function addClass<T extends AnyNode, R extends ArrayLike<T>>(this: R, value?: string | ((this: Element, i: number, className: string) => string | undefined)): R;
+/**
+ * Removes one or more space-separated classes from the selected elements. If no
+ * `className` is defined, all classes will be removed. Also accepts a `function`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.pear').removeClass('pear').html();
+ * //=> <li class="">Pear</li>
+ *
+ * $('.apple').addClass('red').removeClass().html();
+ * //=> <li class="">Apple</li>
+ * ```
+ *
+ * @param name - Name of the class. If not specified, removes all elements.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/removeClass/}
+ */
+export declare function removeClass<T extends AnyNode, R extends ArrayLike<T>>(this: R, name?: string | ((this: Element, i: number, className: string) => string | undefined)): R;
+/**
+ * Add or remove class(es) from the matched elements, depending on either the
+ * class's presence or the value of the switch argument. Also accepts a `function`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.apple.green').toggleClass('fruit green red').html();
+ * //=> <li class="apple fruit red">Apple</li>
+ *
+ * $('.apple.green').toggleClass('fruit green red', true).html();
+ * //=> <li class="apple green fruit red">Apple</li>
+ * ```
+ *
+ * @param value - Name of the class. Can also be a function.
+ * @param stateVal - If specified the state of the class.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/toggleClass/}
+ */
+export declare function toggleClass<T extends AnyNode, R extends ArrayLike<T>>(this: R, value?: string | ((this: Element, i: number, className: string, stateVal?: boolean) => string), stateVal?: boolean): R;
+export {};
+//# sourceMappingURL=attributes.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.d.ts.map b/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.d.ts.map
new file mode 100644
index 0000000..d333c5d
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"attributes.d.ts","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/attributes.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.js b/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.js
new file mode 100644
index 0000000..ab93c6d
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.js
@@ -0,0 +1,622 @@
+"use strict";
+/**
+ * Methods for getting and modifying attributes.
+ *
+ * @module cheerio/attributes
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.toggleClass = exports.removeClass = exports.addClass = exports.hasClass = exports.removeAttr = exports.val = exports.data = exports.prop = exports.attr = void 0;
+var static_js_1 = require("../static.js");
+var utils_js_1 = require("../utils.js");
+var domutils_1 = require("domutils");
+var hasOwn = Object.prototype.hasOwnProperty;
+var rspace = /\s+/;
+var dataAttrPrefix = 'data-';
+/*
+ * Lookup table for coercing string data-* attributes to their corresponding
+ * JavaScript primitives
+ */
+var primitives = {
+ null: null,
+ true: true,
+ false: false,
+};
+// Attributes that are booleans
+var rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i;
+// Matches strings that look like JSON objects or arrays
+var rbrace = /^{[^]*}$|^\[[^]*]$/;
+function getAttr(elem, name, xmlMode) {
+ var _a;
+ if (!elem || !(0, utils_js_1.isTag)(elem))
+ return undefined;
+ (_a = elem.attribs) !== null && _a !== void 0 ? _a : (elem.attribs = {});
+ // Return the entire attribs object if no attribute specified
+ if (!name) {
+ return elem.attribs;
+ }
+ if (hasOwn.call(elem.attribs, name)) {
+ // Get the (decoded) attribute
+ return !xmlMode && rboolean.test(name) ? name : elem.attribs[name];
+ }
+ // Mimic the DOM and return text content as value for `option's`
+ if (elem.name === 'option' && name === 'value') {
+ return (0, static_js_1.text)(elem.children);
+ }
+ // Mimic DOM with default value for radios/checkboxes
+ if (elem.name === 'input' &&
+ (elem.attribs['type'] === 'radio' || elem.attribs['type'] === 'checkbox') &&
+ name === 'value') {
+ return 'on';
+ }
+ return undefined;
+}
+/**
+ * Sets the value of an attribute. The attribute will be deleted if the value is `null`.
+ *
+ * @private
+ * @param el - The element to set the attribute on.
+ * @param name - The attribute's name.
+ * @param value - The attribute's value.
+ */
+function setAttr(el, name, value) {
+ if (value === null) {
+ removeAttribute(el, name);
+ }
+ else {
+ el.attribs[name] = "".concat(value);
+ }
+}
+function attr(name, value) {
+ // Set the value (with attr map support)
+ if (typeof name === 'object' || value !== undefined) {
+ if (typeof value === 'function') {
+ if (typeof name !== 'string') {
+ {
+ throw new Error('Bad combination of arguments.');
+ }
+ }
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ if ((0, utils_js_1.isTag)(el))
+ setAttr(el, name, value.call(el, i, el.attribs[name]));
+ });
+ }
+ return (0, utils_js_1.domEach)(this, function (el) {
+ if (!(0, utils_js_1.isTag)(el))
+ return;
+ if (typeof name === 'object') {
+ Object.keys(name).forEach(function (objName) {
+ var objValue = name[objName];
+ setAttr(el, objName, objValue);
+ });
+ }
+ else {
+ setAttr(el, name, value);
+ }
+ });
+ }
+ return arguments.length > 1
+ ? this
+ : getAttr(this[0], name, this.options.xmlMode);
+}
+exports.attr = attr;
+/**
+ * Gets a node's prop.
+ *
+ * @private
+ * @category Attributes
+ * @param el - Element to get the prop of.
+ * @param name - Name of the prop.
+ * @returns The prop's value.
+ */
+function getProp(el, name, xmlMode) {
+ return name in el
+ ? // @ts-expect-error TS doesn't like us accessing the value directly here.
+ el[name]
+ : !xmlMode && rboolean.test(name)
+ ? getAttr(el, name, false) !== undefined
+ : getAttr(el, name, xmlMode);
+}
+/**
+ * Sets the value of a prop.
+ *
+ * @private
+ * @param el - The element to set the prop on.
+ * @param name - The prop's name.
+ * @param value - The prop's value.
+ */
+function setProp(el, name, value, xmlMode) {
+ if (name in el) {
+ // @ts-expect-error Overriding value
+ el[name] = value;
+ }
+ else {
+ setAttr(el, name, !xmlMode && rboolean.test(name) ? (value ? '' : null) : "".concat(value));
+ }
+}
+function prop(name, value) {
+ var _this = this;
+ var _a;
+ if (typeof name === 'string' && value === undefined) {
+ var el = this[0];
+ if (!el || !(0, utils_js_1.isTag)(el))
+ return undefined;
+ switch (name) {
+ case 'style': {
+ var property_1 = this.css();
+ var keys = Object.keys(property_1);
+ keys.forEach(function (p, i) {
+ property_1[i] = p;
+ });
+ property_1.length = keys.length;
+ return property_1;
+ }
+ case 'tagName':
+ case 'nodeName': {
+ return el.name.toUpperCase();
+ }
+ case 'href':
+ case 'src': {
+ var prop_1 = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a[name];
+ /* eslint-disable node/no-unsupported-features/node-builtins */
+ if (typeof URL !== 'undefined' &&
+ ((name === 'href' && (el.tagName === 'a' || el.name === 'link')) ||
+ (name === 'src' &&
+ (el.tagName === 'img' ||
+ el.tagName === 'iframe' ||
+ el.tagName === 'audio' ||
+ el.tagName === 'video' ||
+ el.tagName === 'source'))) &&
+ prop_1 !== undefined &&
+ this.options.baseURI) {
+ return new URL(prop_1, this.options.baseURI).href;
+ }
+ /* eslint-enable node/no-unsupported-features/node-builtins */
+ return prop_1;
+ }
+ case 'innerText': {
+ return (0, domutils_1.innerText)(el);
+ }
+ case 'textContent': {
+ return (0, domutils_1.textContent)(el);
+ }
+ case 'outerHTML':
+ return this.clone().wrap('<container />').parent().html();
+ case 'innerHTML':
+ return this.html();
+ default:
+ return getProp(el, name, this.options.xmlMode);
+ }
+ }
+ if (typeof name === 'object' || value !== undefined) {
+ if (typeof value === 'function') {
+ if (typeof name === 'object') {
+ throw new Error('Bad combination of arguments.');
+ }
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ if ((0, utils_js_1.isTag)(el)) {
+ setProp(el, name, value.call(el, i, getProp(el, name, _this.options.xmlMode)), _this.options.xmlMode);
+ }
+ });
+ }
+ return (0, utils_js_1.domEach)(this, function (el) {
+ if (!(0, utils_js_1.isTag)(el))
+ return;
+ if (typeof name === 'object') {
+ Object.keys(name).forEach(function (key) {
+ var val = name[key];
+ setProp(el, key, val, _this.options.xmlMode);
+ });
+ }
+ else {
+ setProp(el, name, value, _this.options.xmlMode);
+ }
+ });
+ }
+ return undefined;
+}
+exports.prop = prop;
+/**
+ * Sets the value of a data attribute.
+ *
+ * @private
+ * @param el - The element to set the data attribute on.
+ * @param name - The data attribute's name.
+ * @param value - The data attribute's value.
+ */
+function setData(el, name, value) {
+ var _a;
+ var elem = el;
+ (_a = elem.data) !== null && _a !== void 0 ? _a : (elem.data = {});
+ if (typeof name === 'object')
+ Object.assign(elem.data, name);
+ else if (typeof name === 'string' && value !== undefined) {
+ elem.data[name] = value;
+ }
+}
+/**
+ * Read the specified attribute from the equivalent HTML5 `data-*` attribute,
+ * and (if present) cache the value in the node's internal data store. If no
+ * attribute name is specified, read _all_ HTML5 `data-*` attributes in this manner.
+ *
+ * @private
+ * @category Attributes
+ * @param el - Element to get the data attribute of.
+ * @param name - Name of the data attribute.
+ * @returns The data attribute's value, or a map with all of the data attributes.
+ */
+function readData(el, name) {
+ var domNames;
+ var jsNames;
+ var value;
+ if (name == null) {
+ domNames = Object.keys(el.attribs).filter(function (attrName) {
+ return attrName.startsWith(dataAttrPrefix);
+ });
+ jsNames = domNames.map(function (domName) {
+ return (0, utils_js_1.camelCase)(domName.slice(dataAttrPrefix.length));
+ });
+ }
+ else {
+ domNames = [dataAttrPrefix + (0, utils_js_1.cssCase)(name)];
+ jsNames = [name];
+ }
+ for (var idx = 0; idx < domNames.length; ++idx) {
+ var domName = domNames[idx];
+ var jsName = jsNames[idx];
+ if (hasOwn.call(el.attribs, domName) &&
+ !hasOwn.call(el.data, jsName)) {
+ value = el.attribs[domName];
+ if (hasOwn.call(primitives, value)) {
+ value = primitives[value];
+ }
+ else if (value === String(Number(value))) {
+ value = Number(value);
+ }
+ else if (rbrace.test(value)) {
+ try {
+ value = JSON.parse(value);
+ }
+ catch (e) {
+ /* Ignore */
+ }
+ }
+ el.data[jsName] = value;
+ }
+ }
+ return name == null ? el.data : value;
+}
+function data(name, value) {
+ var _a;
+ var elem = this[0];
+ if (!elem || !(0, utils_js_1.isTag)(elem))
+ return;
+ var dataEl = elem;
+ (_a = dataEl.data) !== null && _a !== void 0 ? _a : (dataEl.data = {});
+ // Return the entire data object if no data specified
+ if (!name) {
+ return readData(dataEl);
+ }
+ // Set the value (with attr map support)
+ if (typeof name === 'object' || value !== undefined) {
+ (0, utils_js_1.domEach)(this, function (el) {
+ if ((0, utils_js_1.isTag)(el)) {
+ if (typeof name === 'object')
+ setData(el, name);
+ else
+ setData(el, name, value);
+ }
+ });
+ return this;
+ }
+ if (hasOwn.call(dataEl.data, name)) {
+ return dataEl.data[name];
+ }
+ return readData(dataEl, name);
+}
+exports.data = data;
+function val(value) {
+ var querying = arguments.length === 0;
+ var element = this[0];
+ if (!element || !(0, utils_js_1.isTag)(element))
+ return querying ? undefined : this;
+ switch (element.name) {
+ case 'textarea':
+ return this.text(value);
+ case 'select': {
+ var option = this.find('option:selected');
+ if (!querying) {
+ if (this.attr('multiple') == null && typeof value === 'object') {
+ return this;
+ }
+ this.find('option').removeAttr('selected');
+ var values = typeof value !== 'object' ? [value] : value;
+ for (var i = 0; i < values.length; i++) {
+ this.find("option[value=\"".concat(values[i], "\"]")).attr('selected', '');
+ }
+ return this;
+ }
+ return this.attr('multiple')
+ ? option.toArray().map(function (el) { return (0, static_js_1.text)(el.children); })
+ : option.attr('value');
+ }
+ case 'input':
+ case 'option':
+ return querying
+ ? this.attr('value')
+ : this.attr('value', value);
+ }
+ return undefined;
+}
+exports.val = val;
+/**
+ * Remove an attribute.
+ *
+ * @private
+ * @param elem - Node to remove attribute from.
+ * @param name - Name of the attribute to remove.
+ */
+function removeAttribute(elem, name) {
+ if (!elem.attribs || !hasOwn.call(elem.attribs, name))
+ return;
+ delete elem.attribs[name];
+}
+/**
+ * Splits a space-separated list of names to individual names.
+ *
+ * @category Attributes
+ * @param names - Names to split.
+ * @returns - Split names.
+ */
+function splitNames(names) {
+ return names ? names.trim().split(rspace) : [];
+}
+/**
+ * Method for removing attributes by `name`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.pear').removeAttr('class').html();
+ * //=> <li>Pear</li>
+ *
+ * $('.apple').attr('id', 'favorite');
+ * $('.apple').removeAttr('id class').html();
+ * //=> <li>Apple</li>
+ * ```
+ *
+ * @param name - Name of the attribute.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/removeAttr/}
+ */
+function removeAttr(name) {
+ var attrNames = splitNames(name);
+ var _loop_1 = function (i) {
+ (0, utils_js_1.domEach)(this_1, function (elem) {
+ if ((0, utils_js_1.isTag)(elem))
+ removeAttribute(elem, attrNames[i]);
+ });
+ };
+ var this_1 = this;
+ for (var i = 0; i < attrNames.length; i++) {
+ _loop_1(i);
+ }
+ return this;
+}
+exports.removeAttr = removeAttr;
+/**
+ * Check to see if _any_ of the matched elements have the given `className`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.pear').hasClass('pear');
+ * //=> true
+ *
+ * $('apple').hasClass('fruit');
+ * //=> false
+ *
+ * $('li').hasClass('pear');
+ * //=> true
+ * ```
+ *
+ * @param className - Name of the class.
+ * @returns Indicates if an element has the given `className`.
+ * @see {@link https://api.jquery.com/hasClass/}
+ */
+function hasClass(className) {
+ return this.toArray().some(function (elem) {
+ var clazz = (0, utils_js_1.isTag)(elem) && elem.attribs['class'];
+ var idx = -1;
+ if (clazz && className.length) {
+ while ((idx = clazz.indexOf(className, idx + 1)) > -1) {
+ var end = idx + className.length;
+ if ((idx === 0 || rspace.test(clazz[idx - 1])) &&
+ (end === clazz.length || rspace.test(clazz[end]))) {
+ return true;
+ }
+ }
+ }
+ return false;
+ });
+}
+exports.hasClass = hasClass;
+/**
+ * Adds class(es) to all of the matched elements. Also accepts a `function`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.pear').addClass('fruit').html();
+ * //=> <li class="pear fruit">Pear</li>
+ *
+ * $('.apple').addClass('fruit red').html();
+ * //=> <li class="apple fruit red">Apple</li>
+ * ```
+ *
+ * @param value - Name of new class.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/addClass/}
+ */
+function addClass(value) {
+ // Support functions
+ if (typeof value === 'function') {
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ if ((0, utils_js_1.isTag)(el)) {
+ var className = el.attribs['class'] || '';
+ addClass.call([el], value.call(el, i, className));
+ }
+ });
+ }
+ // Return if no value or not a string or function
+ if (!value || typeof value !== 'string')
+ return this;
+ var classNames = value.split(rspace);
+ var numElements = this.length;
+ for (var i = 0; i < numElements; i++) {
+ var el = this[i];
+ // If selected element isn't a tag, move on
+ if (!(0, utils_js_1.isTag)(el))
+ continue;
+ // If we don't already have classes — always set xmlMode to false here, as it doesn't matter for classes
+ var className = getAttr(el, 'class', false);
+ if (!className) {
+ setAttr(el, 'class', classNames.join(' ').trim());
+ }
+ else {
+ var setClass = " ".concat(className, " ");
+ // Check if class already exists
+ for (var j = 0; j < classNames.length; j++) {
+ var appendClass = "".concat(classNames[j], " ");
+ if (!setClass.includes(" ".concat(appendClass)))
+ setClass += appendClass;
+ }
+ setAttr(el, 'class', setClass.trim());
+ }
+ }
+ return this;
+}
+exports.addClass = addClass;
+/**
+ * Removes one or more space-separated classes from the selected elements. If no
+ * `className` is defined, all classes will be removed. Also accepts a `function`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.pear').removeClass('pear').html();
+ * //=> <li class="">Pear</li>
+ *
+ * $('.apple').addClass('red').removeClass().html();
+ * //=> <li class="">Apple</li>
+ * ```
+ *
+ * @param name - Name of the class. If not specified, removes all elements.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/removeClass/}
+ */
+function removeClass(name) {
+ // Handle if value is a function
+ if (typeof name === 'function') {
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ if ((0, utils_js_1.isTag)(el)) {
+ removeClass.call([el], name.call(el, i, el.attribs['class'] || ''));
+ }
+ });
+ }
+ var classes = splitNames(name);
+ var numClasses = classes.length;
+ var removeAll = arguments.length === 0;
+ return (0, utils_js_1.domEach)(this, function (el) {
+ if (!(0, utils_js_1.isTag)(el))
+ return;
+ if (removeAll) {
+ // Short circuit the remove all case as this is the nice one
+ el.attribs['class'] = '';
+ }
+ else {
+ var elClasses = splitNames(el.attribs['class']);
+ var changed = false;
+ for (var j = 0; j < numClasses; j++) {
+ var index = elClasses.indexOf(classes[j]);
+ if (index >= 0) {
+ elClasses.splice(index, 1);
+ changed = true;
+ /*
+ * We have to do another pass to ensure that there are not duplicate
+ * classes listed
+ */
+ j--;
+ }
+ }
+ if (changed) {
+ el.attribs['class'] = elClasses.join(' ');
+ }
+ }
+ });
+}
+exports.removeClass = removeClass;
+/**
+ * Add or remove class(es) from the matched elements, depending on either the
+ * class's presence or the value of the switch argument. Also accepts a `function`.
+ *
+ * @category Attributes
+ * @example
+ *
+ * ```js
+ * $('.apple.green').toggleClass('fruit green red').html();
+ * //=> <li class="apple fruit red">Apple</li>
+ *
+ * $('.apple.green').toggleClass('fruit green red', true).html();
+ * //=> <li class="apple green fruit red">Apple</li>
+ * ```
+ *
+ * @param value - Name of the class. Can also be a function.
+ * @param stateVal - If specified the state of the class.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/toggleClass/}
+ */
+function toggleClass(value, stateVal) {
+ // Support functions
+ if (typeof value === 'function') {
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ if ((0, utils_js_1.isTag)(el)) {
+ toggleClass.call([el], value.call(el, i, el.attribs['class'] || '', stateVal), stateVal);
+ }
+ });
+ }
+ // Return if no value or not a string or function
+ if (!value || typeof value !== 'string')
+ return this;
+ var classNames = value.split(rspace);
+ var numClasses = classNames.length;
+ var state = typeof stateVal === 'boolean' ? (stateVal ? 1 : -1) : 0;
+ var numElements = this.length;
+ for (var i = 0; i < numElements; i++) {
+ var el = this[i];
+ // If selected element isn't a tag, move on
+ if (!(0, utils_js_1.isTag)(el))
+ continue;
+ var elementClasses = splitNames(el.attribs['class']);
+ // Check if class already exists
+ for (var j = 0; j < numClasses; j++) {
+ // Check if the class name is currently defined
+ var index = elementClasses.indexOf(classNames[j]);
+ // Add if stateValue === true or we are toggling and there is no value
+ if (state >= 0 && index < 0) {
+ elementClasses.push(classNames[j]);
+ }
+ else if (state <= 0 && index >= 0) {
+ // Otherwise remove but only if the item exists
+ elementClasses.splice(index, 1);
+ }
+ }
+ el.attribs['class'] = elementClasses.join(' ');
+ }
+ return this;
+}
+exports.toggleClass = toggleClass;
+//# sourceMappingURL=attributes.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.js.map b/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.js.map
new file mode 100644
index 0000000..d24957c
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/attributes.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"attributes.js","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/attributes.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/css.d.ts b/includes/external/addressbook/node_modules/cheerio/lib/api/css.d.ts
new file mode 100644
index 0000000..4ff2510
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/css.d.ts
@@ -0,0 +1,40 @@
+import type { Element, AnyNode } from 'domhandler';
+import type { Cheerio } from '../cheerio.js';
+/**
+ * Get the value of a style property for the first element in the set of matched elements.
+ *
+ * @category CSS
+ * @param names - Optionally the names of the properties of interest.
+ * @returns A map of all of the style properties.
+ * @see {@link https://api.jquery.com/css/}
+ */
+export declare function css<T extends AnyNode>(this: Cheerio<T>, names?: string[]): Record<string, string> | undefined;
+/**
+ * Get the value of a style property for the first element in the set of matched elements.
+ *
+ * @category CSS
+ * @param names - The name of the property.
+ * @returns The property value for the given name.
+ * @see {@link https://api.jquery.com/css/}
+ */
+export declare function css<T extends AnyNode>(this: Cheerio<T>, name: string): string | undefined;
+/**
+ * Set one CSS property for every matched element.
+ *
+ * @category CSS
+ * @param prop - The name of the property.
+ * @param val - The new value.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/css/}
+ */
+export declare function css<T extends AnyNode>(this: Cheerio<T>, prop: string, val: string | ((this: Element, i: number, style: string) => string | undefined)): Cheerio<T>;
+/**
+ * Set multiple CSS properties for every matched element.
+ *
+ * @category CSS
+ * @param map - A map of property names and values.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/css/}
+ */
+export declare function css<T extends AnyNode>(this: Cheerio<T>, map: Record<string, string>): Cheerio<T>;
+//# sourceMappingURL=css.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/css.d.ts.map b/includes/external/addressbook/node_modules/cheerio/lib/api/css.d.ts.map
new file mode 100644
index 0000000..f10b6c8
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/css.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"css.d.ts","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/css.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,OAAO,EACnC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;AACtC;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,OAAO,EACnC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAAC;AACtB;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,OAAO,EACnC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EACC,MAAM,GACN,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GACpE,OAAO,CAAC,CAAC,CAAC,CAAC;AACd;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,OAAO,EACnC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/css.js b/includes/external/addressbook/node_modules/cheerio/lib/api/css.js
new file mode 100644
index 0000000..9389c29
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/css.js
@@ -0,0 +1,118 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.css = void 0;
+var utils_js_1 = require("../utils.js");
+/**
+ * Set multiple CSS properties for every matched element.
+ *
+ * @category CSS
+ * @param prop - The names of the properties.
+ * @param val - The new values.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/css/}
+ */
+function css(prop, val) {
+ if ((prop != null && val != null) ||
+ // When `prop` is a "plain" object
+ (typeof prop === 'object' && !Array.isArray(prop))) {
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ if ((0, utils_js_1.isTag)(el)) {
+ // `prop` can't be an array here anymore.
+ setCss(el, prop, val, i);
+ }
+ });
+ }
+ if (this.length === 0) {
+ return undefined;
+ }
+ return getCss(this[0], prop);
+}
+exports.css = css;
+/**
+ * Set styles of all elements.
+ *
+ * @private
+ * @param el - Element to set style of.
+ * @param prop - Name of property.
+ * @param value - Value to set property to.
+ * @param idx - Optional index within the selection.
+ */
+function setCss(el, prop, value, idx) {
+ if (typeof prop === 'string') {
+ var styles = getCss(el);
+ var val = typeof value === 'function' ? value.call(el, idx, styles[prop]) : value;
+ if (val === '') {
+ delete styles[prop];
+ }
+ else if (val != null) {
+ styles[prop] = val;
+ }
+ el.attribs['style'] = stringify(styles);
+ }
+ else if (typeof prop === 'object') {
+ Object.keys(prop).forEach(function (k, i) {
+ setCss(el, k, prop[k], i);
+ });
+ }
+}
+function getCss(el, prop) {
+ if (!el || !(0, utils_js_1.isTag)(el))
+ return;
+ var styles = parse(el.attribs['style']);
+ if (typeof prop === 'string') {
+ return styles[prop];
+ }
+ if (Array.isArray(prop)) {
+ var newStyles_1 = {};
+ prop.forEach(function (item) {
+ if (styles[item] != null) {
+ newStyles_1[item] = styles[item];
+ }
+ });
+ return newStyles_1;
+ }
+ return styles;
+}
+/**
+ * Stringify `obj` to styles.
+ *
+ * @private
+ * @category CSS
+ * @param obj - Object to stringify.
+ * @returns The serialized styles.
+ */
+function stringify(obj) {
+ return Object.keys(obj).reduce(function (str, prop) { return "".concat(str).concat(str ? ' ' : '').concat(prop, ": ").concat(obj[prop], ";"); }, '');
+}
+/**
+ * Parse `styles`.
+ *
+ * @private
+ * @category CSS
+ * @param styles - Styles to be parsed.
+ * @returns The parsed styles.
+ */
+function parse(styles) {
+ styles = (styles || '').trim();
+ if (!styles)
+ return {};
+ var obj = {};
+ var key;
+ for (var _i = 0, _a = styles.split(';'); _i < _a.length; _i++) {
+ var str = _a[_i];
+ var n = str.indexOf(':');
+ // If there is no :, or if it is the first/last character, add to the previous item's value
+ if (n < 1 || n === str.length - 1) {
+ var trimmed = str.trimEnd();
+ if (trimmed.length > 0 && key !== undefined) {
+ obj[key] += ";".concat(trimmed);
+ }
+ }
+ else {
+ key = str.slice(0, n).trim();
+ obj[key] = str.slice(n + 1).trim();
+ }
+ }
+ return obj;
+}
+//# sourceMappingURL=css.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/css.js.map b/includes/external/addressbook/node_modules/cheerio/lib/api/css.js.map
new file mode 100644
index 0000000..9053e0a
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/css.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"css.js","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/css.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/forms.d.ts b/includes/external/addressbook/node_modules/cheerio/lib/api/forms.d.ts
new file mode 100644
index 0000000..3b11493
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/forms.d.ts
@@ -0,0 +1,38 @@
+import type { AnyNode } from 'domhandler';
+import type { Cheerio } from '../cheerio.js';
+/**
+ * Encode a set of form elements as a string for submission.
+ *
+ * @category Forms
+ * @example
+ *
+ * ```js
+ * $('<form><input name="foo" value="bar" /></form>').serialize();
+ * //=> 'foo=bar'
+ * ```
+ *
+ * @returns The serialized form.
+ * @see {@link https://api.jquery.com/serialize/}
+ */
+export declare function serialize<T extends AnyNode>(this: Cheerio<T>): string;
+interface SerializedField {
+ name: string;
+ value: string;
+}
+/**
+ * Encode a set of form elements as an array of names and values.
+ *
+ * @category Forms
+ * @example
+ *
+ * ```js
+ * $('<form><input name="foo" value="bar" /></form>').serializeArray();
+ * //=> [ { name: 'foo', value: 'bar' } ]
+ * ```
+ *
+ * @returns The serialized form.
+ * @see {@link https://api.jquery.com/serializeArray/}
+ */
+export declare function serializeArray<T extends AnyNode>(this: Cheerio<T>): SerializedField[];
+export {};
+//# sourceMappingURL=forms.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/forms.d.ts.map b/includes/external/addressbook/node_modules/cheerio/lib/api/forms.d.ts.map
new file mode 100644
index 0000000..d27b568
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/forms.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"forms.d.ts","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAW7C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAYrE;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAC9C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GACf,eAAe,EAAE,CAsCnB"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/forms.js b/includes/external/addressbook/node_modules/cheerio/lib/api/forms.js
new file mode 100644
index 0000000..a9f84a7
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/forms.js
@@ -0,0 +1,92 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.serializeArray = exports.serialize = void 0;
+var utils_js_1 = require("../utils.js");
+/*
+ * https://github.com/jquery/jquery/blob/2.1.3/src/manipulation/var/rcheckableType.js
+ * https://github.com/jquery/jquery/blob/2.1.3/src/serialize.js
+ */
+var submittableSelector = 'input,select,textarea,keygen';
+var r20 = /%20/g;
+var rCRLF = /\r?\n/g;
+/**
+ * Encode a set of form elements as a string for submission.
+ *
+ * @category Forms
+ * @example
+ *
+ * ```js
+ * $('<form><input name="foo" value="bar" /></form>').serialize();
+ * //=> 'foo=bar'
+ * ```
+ *
+ * @returns The serialized form.
+ * @see {@link https://api.jquery.com/serialize/}
+ */
+function serialize() {
+ // Convert form elements into name/value objects
+ var arr = this.serializeArray();
+ // Serialize each element into a key/value string
+ var retArr = arr.map(function (data) {
+ return "".concat(encodeURIComponent(data.name), "=").concat(encodeURIComponent(data.value));
+ });
+ // Return the resulting serialization
+ return retArr.join('&').replace(r20, '+');
+}
+exports.serialize = serialize;
+/**
+ * Encode a set of form elements as an array of names and values.
+ *
+ * @category Forms
+ * @example
+ *
+ * ```js
+ * $('<form><input name="foo" value="bar" /></form>').serializeArray();
+ * //=> [ { name: 'foo', value: 'bar' } ]
+ * ```
+ *
+ * @returns The serialized form.
+ * @see {@link https://api.jquery.com/serializeArray/}
+ */
+function serializeArray() {
+ var _this = this;
+ // Resolve all form elements from either forms or collections of form elements
+ return this.map(function (_, elem) {
+ var $elem = _this._make(elem);
+ if ((0, utils_js_1.isTag)(elem) && elem.name === 'form') {
+ return $elem.find(submittableSelector).toArray();
+ }
+ return $elem.filter(submittableSelector).toArray();
+ })
+ .filter(
+ // Verify elements have a name (`attr.name`) and are not disabled (`:enabled`)
+ '[name!=""]:enabled' +
+ // And cannot be clicked (`[type=submit]`) or are used in `x-www-form-urlencoded` (`[type=file]`)
+ ':not(:submit, :button, :image, :reset, :file)' +
+ // And are either checked/don't have a checkable state
+ ':matches([checked], :not(:checkbox, :radio))'
+ // Convert each of the elements to its value(s)
+ )
+ .map(function (_, elem) {
+ var _a;
+ var $elem = _this._make(elem);
+ var name = $elem.attr('name'); // We have filtered for elements with a name before.
+ // If there is no value set (e.g. `undefined`, `null`), then default value to empty
+ var value = (_a = $elem.val()) !== null && _a !== void 0 ? _a : '';
+ // If we have an array of values (e.g. `<select multiple>`), return an array of key/value pairs
+ if (Array.isArray(value)) {
+ return value.map(function (val) {
+ /*
+ * We trim replace any line endings (e.g. `\r` or `\r\n` with `\r\n`) to guarantee consistency across platforms
+ * These can occur inside of `<textarea>'s`
+ */
+ return ({ name: name, value: val.replace(rCRLF, '\r\n') });
+ });
+ }
+ // Otherwise (e.g. `<input type="text">`, return only one key/value pair
+ return { name: name, value: value.replace(rCRLF, '\r\n') };
+ })
+ .toArray();
+}
+exports.serializeArray = serializeArray;
+//# sourceMappingURL=forms.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/forms.js.map b/includes/external/addressbook/node_modules/cheerio/lib/api/forms.js.map
new file mode 100644
index 0000000..f67b28e
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/forms.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"forms.js","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/forms.ts"],"names":[],"mappings":";;;AAEA,wCAAoC;AAEpC;;;GAGG;AACH,IAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAC3D,IAAM,GAAG,GAAG,MAAM,CAAC;AACnB,IAAM,KAAK,GAAG,QAAQ,CAAC;AAEvB;;;;;;;;;;;;;GAaG;AACH,SAAgB,SAAS;IACvB,gDAAgD;IAChD,IAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAElC,iDAAiD;IACjD,IAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CACpB,UAAC,IAAI;QACH,OAAA,UAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAE;IAApE,CAAoE,CACvE,CAAC;IAEF,qCAAqC;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAZD,8BAYC;AAOD;;;;;;;;;;;;;GAaG;AACH,SAAgB,cAAc;IAA9B,iBAwCC;IArCC,8EAA8E;IAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,IAAI;QACtB,IAAM,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAA,gBAAK,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACvC,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC;SAClD;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC,CAAC;SACC,MAAM;IACL,8EAA8E;IAC9E,oBAAoB;QAClB,iGAAiG;QACjG,+CAA+C;QAC/C,sDAAsD;QACtD,8CAA8C;IAChD,+CAA+C;KAChD;SACA,GAAG,CAA2B,UAAC,CAAC,EAAE,IAAI;;QACrC,IAAM,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAW,CAAC,CAAC,oDAAoD;QAC/F,mFAAmF;QACnF,IAAM,KAAK,GAAG,MAAA,KAAK,CAAC,GAAG,EAAE,mCAAI,EAAE,CAAC;QAEhC,+FAA+F;QAC/F,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAC,GAAG;gBACnB;;;mBAGG;gBACH,OAAA,CAAC,EAAE,IAAI,MAAA,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YAA7C,CAA6C,CAC9C,CAAC;SACH;QACD,wEAAwE;QACxE,OAAO,EAAE,IAAI,MAAA,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IACvD,CAAC,CAAC;SACD,OAAO,EAAE,CAAC;AACf,CAAC;AAxCD,wCAwCC"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.d.ts b/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.d.ts
new file mode 100644
index 0000000..05f80d7
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.d.ts
@@ -0,0 +1,522 @@
+/**
+ * Methods for modifying the DOM structure.
+ *
+ * @module cheerio/manipulation
+ */
+import { AnyNode } from 'domhandler';
+import type { Cheerio } from '../cheerio.js';
+import type { BasicAcceptedElems, AcceptedElems } from '../types.js';
+/**
+ * Create an array of nodes, recursing into arrays and parsing strings if necessary.
+ *
+ * @private
+ * @category Manipulation
+ * @param elem - Elements to make an array of.
+ * @param clone - Optionally clone nodes.
+ * @returns The array of nodes.
+ */
+export declare function _makeDomArray<T extends AnyNode>(this: Cheerio<T>, elem?: BasicAcceptedElems<AnyNode>, clone?: boolean): AnyNode[];
+/**
+ * Insert every element in the set of matched elements to the end of the target.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('<li class="plum">Plum</li>').appendTo('#fruits');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // <li class="plum">Plum</li>
+ * // </ul>
+ * ```
+ *
+ * @param target - Element to append elements to.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/appendTo/}
+ */
+export declare function appendTo<T extends AnyNode>(this: Cheerio<T>, target: BasicAcceptedElems<AnyNode>): Cheerio<T>;
+/**
+ * Insert every element in the set of matched elements to the beginning of the target.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('<li class="plum">Plum</li>').prependTo('#fruits');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="plum">Plum</li>
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param target - Element to prepend elements to.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/prependTo/}
+ */
+export declare function prependTo<T extends AnyNode>(this: Cheerio<T>, target: BasicAcceptedElems<AnyNode>): Cheerio<T>;
+/**
+ * Inserts content as the _last_ child of each of the selected elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('ul').append('<li class="plum">Plum</li>');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // <li class="plum">Plum</li>
+ * // </ul>
+ * ```
+ *
+ * @see {@link https://api.jquery.com/append/}
+ */
+export declare const append: <T extends AnyNode>(this: Cheerio<T>, ...elems: [(this: AnyNode, i: number, html: string) => BasicAcceptedElems<AnyNode>] | BasicAcceptedElems<AnyNode>[]) => Cheerio<T>;
+/**
+ * Inserts content as the _first_ child of each of the selected elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('ul').prepend('<li class="plum">Plum</li>');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="plum">Plum</li>
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @see {@link https://api.jquery.com/prepend/}
+ */
+export declare const prepend: <T extends AnyNode>(this: Cheerio<T>, ...elems: [(this: AnyNode, i: number, html: string) => BasicAcceptedElems<AnyNode>] | BasicAcceptedElems<AnyNode>[]) => Cheerio<T>;
+/**
+ * The .wrap() function can take any string or object that could be passed to
+ * the $() factory function to specify a DOM structure. This structure may be
+ * nested several levels deep, but should contain only one inmost element. A
+ * copy of this structure will be wrapped around each of the elements in the set
+ * of matched elements. This method returns the original set of elements for
+ * chaining purposes.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * const redFruit = $('<div class="red-fruit"></div>');
+ * $('.apple').wrap(redFruit);
+ *
+ * //=> <ul id="fruits">
+ * // <div class="red-fruit">
+ * // <li class="apple">Apple</li>
+ * // </div>
+ * // <li class="orange">Orange</li>
+ * // <li class="plum">Plum</li>
+ * // </ul>
+ *
+ * const healthy = $('<div class="healthy"></div>');
+ * $('li').wrap(healthy);
+ *
+ * //=> <ul id="fruits">
+ * // <div class="healthy">
+ * // <li class="apple">Apple</li>
+ * // </div>
+ * // <div class="healthy">
+ * // <li class="orange">Orange</li>
+ * // </div>
+ * // <div class="healthy">
+ * // <li class="plum">Plum</li>
+ * // </div>
+ * // </ul>
+ * ```
+ *
+ * @param wrapper - The DOM structure to wrap around each element in the selection.
+ * @see {@link https://api.jquery.com/wrap/}
+ */
+export declare const wrap: <T extends AnyNode>(this: Cheerio<T>, wrapper: AcceptedElems<AnyNode>) => Cheerio<T>;
+/**
+ * The .wrapInner() function can take any string or object that could be passed
+ * to the $() factory function to specify a DOM structure. This structure may be
+ * nested several levels deep, but should contain only one inmost element. The
+ * structure will be wrapped around the content of each of the elements in the
+ * set of matched elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * const redFruit = $('<div class="red-fruit"></div>');
+ * $('.apple').wrapInner(redFruit);
+ *
+ * //=> <ul id="fruits">
+ * // <li class="apple">
+ * // <div class="red-fruit">Apple</div>
+ * // </li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ *
+ * const healthy = $('<div class="healthy"></div>');
+ * $('li').wrapInner(healthy);
+ *
+ * //=> <ul id="fruits">
+ * // <li class="apple">
+ * // <div class="healthy">Apple</div>
+ * // </li>
+ * // <li class="orange">
+ * // <div class="healthy">Orange</div>
+ * // </li>
+ * // <li class="pear">
+ * // <div class="healthy">Pear</div>
+ * // </li>
+ * // </ul>
+ * ```
+ *
+ * @param wrapper - The DOM structure to wrap around the content of each element
+ * in the selection.
+ * @returns The instance itself, for chaining.
+ * @see {@link https://api.jquery.com/wrapInner/}
+ */
+export declare const wrapInner: <T extends AnyNode>(this: Cheerio<T>, wrapper: AcceptedElems<AnyNode>) => Cheerio<T>;
+/**
+ * The .unwrap() function, removes the parents of the set of matched elements
+ * from the DOM, leaving the matched elements in their place.
+ *
+ * @category Manipulation
+ * @example <caption>without selector</caption>
+ *
+ * ```js
+ * const $ = cheerio.load(
+ * '<div id=test>\n <div><p>Hello</p></div>\n <div><p>World</p></div>\n</div>'
+ * );
+ * $('#test p').unwrap();
+ *
+ * //=> <div id=test>
+ * // <p>Hello</p>
+ * // <p>World</p>
+ * // </div>
+ * ```
+ *
+ * @example <caption>with selector</caption>
+ *
+ * ```js
+ * const $ = cheerio.load(
+ * '<div id=test>\n <p>Hello</p>\n <b><p>World</p></b>\n</div>'
+ * );
+ * $('#test p').unwrap('b');
+ *
+ * //=> <div id=test>
+ * // <p>Hello</p>
+ * // <p>World</p>
+ * // </div>
+ * ```
+ *
+ * @param selector - A selector to check the parent element against. If an
+ * element's parent does not match the selector, the element won't be unwrapped.
+ * @returns The instance itself, for chaining.
+ * @see {@link https://api.jquery.com/unwrap/}
+ */
+export declare function unwrap<T extends AnyNode>(this: Cheerio<T>, selector?: string): Cheerio<T>;
+/**
+ * The .wrapAll() function can take any string or object that could be passed to
+ * the $() function to specify a DOM structure. This structure may be nested
+ * several levels deep, but should contain only one inmost element. The
+ * structure will be wrapped around all of the elements in the set of matched
+ * elements, as a single group.
+ *
+ * @category Manipulation
+ * @example <caption>With markup passed to `wrapAll`</caption>
+ *
+ * ```js
+ * const $ = cheerio.load(
+ * '<div class="container"><div class="inner">First</div><div class="inner">Second</div></div>'
+ * );
+ * $('.inner').wrapAll("<div class='new'></div>");
+ *
+ * //=> <div class="container">
+ * // <div class='new'>
+ * // <div class="inner">First</div>
+ * // <div class="inner">Second</div>
+ * // </div>
+ * // </div>
+ * ```
+ *
+ * @example <caption>With an existing cheerio instance</caption>
+ *
+ * ```js
+ * const $ = cheerio.load(
+ * '<span>Span 1</span><strong>Strong</strong><span>Span 2</span>'
+ * );
+ * const wrap = $('<div><p><em><b></b></em></p></div>');
+ * $('span').wrapAll(wrap);
+ *
+ * //=> <div>
+ * // <p>
+ * // <em>
+ * // <b>
+ * // <span>Span 1</span>
+ * // <span>Span 2</span>
+ * // </b>
+ * // </em>
+ * // </p>
+ * // </div>
+ * // <strong>Strong</strong>
+ * ```
+ *
+ * @param wrapper - The DOM structure to wrap around all matched elements in the
+ * selection.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/wrapAll/}
+ */
+export declare function wrapAll<T extends AnyNode>(this: Cheerio<T>, wrapper: AcceptedElems<T>): Cheerio<T>;
+/**
+ * Insert content next to each element in the set of matched elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.apple').after('<li class="plum">Plum</li>');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="plum">Plum</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param content - HTML string, DOM element, array of DOM elements or Cheerio
+ * to insert after each element in the set of matched elements.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/after/}
+ */
+export declare function after<T extends AnyNode>(this: Cheerio<T>, ...elems: [(this: AnyNode, i: number, html: string) => BasicAcceptedElems<AnyNode>] | BasicAcceptedElems<AnyNode>[]): Cheerio<T>;
+/**
+ * Insert every element in the set of matched elements after the target.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('<li class="plum">Plum</li>').insertAfter('.apple');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="plum">Plum</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param target - Element to insert elements after.
+ * @returns The set of newly inserted elements.
+ * @see {@link https://api.jquery.com/insertAfter/}
+ */
+export declare function insertAfter<T extends AnyNode>(this: Cheerio<T>, target: BasicAcceptedElems<AnyNode>): Cheerio<T>;
+/**
+ * Insert content previous to each element in the set of matched elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.apple').before('<li class="plum">Plum</li>');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="plum">Plum</li>
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param content - HTML string, DOM element, array of DOM elements or Cheerio
+ * to insert before each element in the set of matched elements.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/before/}
+ */
+export declare function before<T extends AnyNode>(this: Cheerio<T>, ...elems: [(this: AnyNode, i: number, html: string) => BasicAcceptedElems<AnyNode>] | BasicAcceptedElems<AnyNode>[]): Cheerio<T>;
+/**
+ * Insert every element in the set of matched elements before the target.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('<li class="plum">Plum</li>').insertBefore('.apple');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="plum">Plum</li>
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param target - Element to insert elements before.
+ * @returns The set of newly inserted elements.
+ * @see {@link https://api.jquery.com/insertBefore/}
+ */
+export declare function insertBefore<T extends AnyNode>(this: Cheerio<T>, target: BasicAcceptedElems<AnyNode>): Cheerio<T>;
+/**
+ * Removes the set of matched elements from the DOM and all their children.
+ * `selector` filters the set of matched elements to be removed.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.pear').remove();
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // </ul>
+ * ```
+ *
+ * @param selector - Optional selector for elements to remove.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/remove/}
+ */
+export declare function remove<T extends AnyNode>(this: Cheerio<T>, selector?: string): Cheerio<T>;
+/**
+ * Replaces matched elements with `content`.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * const plum = $('<li class="plum">Plum</li>');
+ * $('.pear').replaceWith(plum);
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="plum">Plum</li>
+ * // </ul>
+ * ```
+ *
+ * @param content - Replacement for matched elements.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/replaceWith/}
+ */
+export declare function replaceWith<T extends AnyNode>(this: Cheerio<T>, content: AcceptedElems<AnyNode>): Cheerio<T>;
+/**
+ * Empties an element, removing all its children.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('ul').empty();
+ * $.html();
+ * //=> <ul id="fruits"></ul>
+ * ```
+ *
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/empty/}
+ */
+export declare function empty<T extends AnyNode>(this: Cheerio<T>): Cheerio<T>;
+/**
+ * Gets an HTML content string from the first selected element.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.orange').html();
+ * //=> Orange
+ *
+ * $('#fruits').html('<li class="mango">Mango</li>').html();
+ * //=> <li class="mango">Mango</li>
+ * ```
+ *
+ * @returns The HTML content string.
+ * @see {@link https://api.jquery.com/html/}
+ */
+export declare function html<T extends AnyNode>(this: Cheerio<T>): string | null;
+/**
+ * Replaces each selected element's content with the specified content.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.orange').html('<li class="mango">Mango</li>').html();
+ * //=> <li class="mango">Mango</li>
+ * ```
+ *
+ * @param str - The content to replace selection's contents with.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/html/}
+ */
+export declare function html<T extends AnyNode>(this: Cheerio<T>, str: string | Cheerio<T>): Cheerio<T>;
+/**
+ * Turns the collection to a string. Alias for `.html()`.
+ *
+ * @category Manipulation
+ * @returns The rendered document.
+ */
+export declare function toString<T extends AnyNode>(this: Cheerio<T>): string;
+/**
+ * Get the combined text contents of each element in the set of matched
+ * elements, including their descendants.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.orange').text();
+ * //=> Orange
+ *
+ * $('ul').text();
+ * //=> Apple
+ * // Orange
+ * // Pear
+ * ```
+ *
+ * @returns The text contents of the collection.
+ * @see {@link https://api.jquery.com/text/}
+ */
+export declare function text<T extends AnyNode>(this: Cheerio<T>): string;
+/**
+ * Set the content of each element in the set of matched elements to the specified text.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.orange').text('Orange');
+ * //=> <div class="orange">Orange</div>
+ * ```
+ *
+ * @param str - The text to set as the content of each matched element.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/text/}
+ */
+export declare function text<T extends AnyNode>(this: Cheerio<T>, str: string | ((this: AnyNode, i: number, text: string) => string)): Cheerio<T>;
+/**
+ * Clone the cheerio object.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * const moreFruit = $('#fruits').clone();
+ * ```
+ *
+ * @returns The cloned object.
+ * @see {@link https://api.jquery.com/clone/}
+ */
+export declare function clone<T extends AnyNode>(this: Cheerio<T>): Cheerio<T>;
+//# sourceMappingURL=manipulation.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.d.ts.map b/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.d.ts.map
new file mode 100644
index 0000000..90557c8
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"manipulation.d.ts","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/manipulation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAc,OAAO,EAA8B,MAAM,YAAY,CAAC;AAK7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAErE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,EAC7C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,IAAI,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAClC,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,EAAE,CAiBX;AA8GD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EACzC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,MAAM,0DAnLD,OAAO,KACV,MAAM,QACH,MAAM,KACT,mBAAmB,OAAO,CAAC,gDAkLxC,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,OAAO,0DA1MF,OAAO,KACV,MAAM,QACH,MAAM,KACT,mBAAmB,OAAO,CAAC,gDAyMxC,CAAC;AAuDH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,IAAI,iDAtFJ,cAAc,OAAO,CAAC,eAqGjC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,SAAS,iDAlJT,cAAc,OAAO,CAAC,eAsJjC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,OAAO,EACtC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EACvC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC,CAiCZ;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,OAAO,EACrC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,GAAG,KAAK,EACJ,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,kBAAkB,CAAC,OAAO,CAAC,CAAC,GACzE,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAChC,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAC3C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CA6BZ;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,OAAO,EACtC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,GAAG,KAAK,EACJ,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,kBAAkB,CAAC,OAAO,CAAC,CAAC,GACzE,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAChC,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAC5C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,OAAO,EACtC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAC3C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,GAC9B,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CASrE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;AACzE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,OAAO,EACpC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAAC;AAyBd;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAEpE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAClE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,OAAO,EACpC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GACjE,OAAO,CAAC,CAAC,CAAC,CAAC;AA6Bd;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAErE"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.js b/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.js
new file mode 100644
index 0000000..f96c008
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.js
@@ -0,0 +1,861 @@
+"use strict";
+/**
+ * Methods for modifying the DOM structure.
+ *
+ * @module cheerio/manipulation
+ */
+var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.clone = exports.text = exports.toString = exports.html = exports.empty = exports.replaceWith = exports.remove = exports.insertBefore = exports.before = exports.insertAfter = exports.after = exports.wrapAll = exports.unwrap = exports.wrapInner = exports.wrap = exports.prepend = exports.append = exports.prependTo = exports.appendTo = exports._makeDomArray = void 0;
+var domhandler_1 = require("domhandler");
+var parse_js_1 = require("../parse.js");
+var static_js_1 = require("../static.js");
+var utils_js_1 = require("../utils.js");
+var domutils_1 = require("domutils");
+/**
+ * Create an array of nodes, recursing into arrays and parsing strings if necessary.
+ *
+ * @private
+ * @category Manipulation
+ * @param elem - Elements to make an array of.
+ * @param clone - Optionally clone nodes.
+ * @returns The array of nodes.
+ */
+function _makeDomArray(elem, clone) {
+ var _this = this;
+ if (elem == null) {
+ return [];
+ }
+ if ((0, utils_js_1.isCheerio)(elem)) {
+ return clone ? (0, utils_js_1.cloneDom)(elem.get()) : elem.get();
+ }
+ if (Array.isArray(elem)) {
+ return elem.reduce(function (newElems, el) { return newElems.concat(_this._makeDomArray(el, clone)); }, []);
+ }
+ if (typeof elem === 'string') {
+ return this._parse(elem, this.options, false, null).children;
+ }
+ return clone ? (0, utils_js_1.cloneDom)([elem]) : [elem];
+}
+exports._makeDomArray = _makeDomArray;
+function _insert(concatenator) {
+ return function () {
+ var _this = this;
+ var elems = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ elems[_i] = arguments[_i];
+ }
+ var lastIdx = this.length - 1;
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ if (!(0, domhandler_1.hasChildren)(el))
+ return;
+ var domSrc = typeof elems[0] === 'function'
+ ? elems[0].call(el, i, _this._render(el.children))
+ : elems;
+ var dom = _this._makeDomArray(domSrc, i < lastIdx);
+ concatenator(dom, el.children, el);
+ });
+ };
+}
+/**
+ * Modify an array in-place, removing some number of elements and adding new
+ * elements directly following them.
+ *
+ * @private
+ * @category Manipulation
+ * @param array - Target array to splice.
+ * @param spliceIdx - Index at which to begin changing the array.
+ * @param spliceCount - Number of elements to remove from the array.
+ * @param newElems - Elements to insert into the array.
+ * @param parent - The parent of the node.
+ * @returns The spliced array.
+ */
+function uniqueSplice(array, spliceIdx, spliceCount, newElems, parent) {
+ var _a, _b;
+ var spliceArgs = __spreadArray([
+ spliceIdx,
+ spliceCount
+ ], newElems, true);
+ var prev = spliceIdx === 0 ? null : array[spliceIdx - 1];
+ var next = spliceIdx + spliceCount >= array.length
+ ? null
+ : array[spliceIdx + spliceCount];
+ /*
+ * Before splicing in new elements, ensure they do not already appear in the
+ * current array.
+ */
+ for (var idx = 0; idx < newElems.length; ++idx) {
+ var node = newElems[idx];
+ var oldParent = node.parent;
+ if (oldParent) {
+ var oldSiblings = oldParent.children;
+ var prevIdx = oldSiblings.indexOf(node);
+ if (prevIdx > -1) {
+ oldParent.children.splice(prevIdx, 1);
+ if (parent === oldParent && spliceIdx > prevIdx) {
+ spliceArgs[0]--;
+ }
+ }
+ }
+ node.parent = parent;
+ if (node.prev) {
+ node.prev.next = (_a = node.next) !== null && _a !== void 0 ? _a : null;
+ }
+ if (node.next) {
+ node.next.prev = (_b = node.prev) !== null && _b !== void 0 ? _b : null;
+ }
+ node.prev = idx === 0 ? prev : newElems[idx - 1];
+ node.next = idx === newElems.length - 1 ? next : newElems[idx + 1];
+ }
+ if (prev) {
+ prev.next = newElems[0];
+ }
+ if (next) {
+ next.prev = newElems[newElems.length - 1];
+ }
+ return array.splice.apply(array, spliceArgs);
+}
+/**
+ * Insert every element in the set of matched elements to the end of the target.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('<li class="plum">Plum</li>').appendTo('#fruits');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // <li class="plum">Plum</li>
+ * // </ul>
+ * ```
+ *
+ * @param target - Element to append elements to.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/appendTo/}
+ */
+function appendTo(target) {
+ var appendTarget = (0, utils_js_1.isCheerio)(target) ? target : this._make(target);
+ appendTarget.append(this);
+ return this;
+}
+exports.appendTo = appendTo;
+/**
+ * Insert every element in the set of matched elements to the beginning of the target.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('<li class="plum">Plum</li>').prependTo('#fruits');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="plum">Plum</li>
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param target - Element to prepend elements to.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/prependTo/}
+ */
+function prependTo(target) {
+ var prependTarget = (0, utils_js_1.isCheerio)(target) ? target : this._make(target);
+ prependTarget.prepend(this);
+ return this;
+}
+exports.prependTo = prependTo;
+/**
+ * Inserts content as the _last_ child of each of the selected elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('ul').append('<li class="plum">Plum</li>');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // <li class="plum">Plum</li>
+ * // </ul>
+ * ```
+ *
+ * @see {@link https://api.jquery.com/append/}
+ */
+exports.append = _insert(function (dom, children, parent) {
+ uniqueSplice(children, children.length, 0, dom, parent);
+});
+/**
+ * Inserts content as the _first_ child of each of the selected elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('ul').prepend('<li class="plum">Plum</li>');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="plum">Plum</li>
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @see {@link https://api.jquery.com/prepend/}
+ */
+exports.prepend = _insert(function (dom, children, parent) {
+ uniqueSplice(children, 0, 0, dom, parent);
+});
+function _wrap(insert) {
+ return function (wrapper) {
+ var lastIdx = this.length - 1;
+ var lastParent = this.parents().last();
+ for (var i = 0; i < this.length; i++) {
+ var el = this[i];
+ var wrap_1 = typeof wrapper === 'function'
+ ? wrapper.call(el, i, el)
+ : typeof wrapper === 'string' && !(0, utils_js_1.isHtml)(wrapper)
+ ? lastParent.find(wrapper).clone()
+ : wrapper;
+ var wrapperDom = this._makeDomArray(wrap_1, i < lastIdx)[0];
+ if (!wrapperDom || !(0, domhandler_1.hasChildren)(wrapperDom))
+ continue;
+ var elInsertLocation = wrapperDom;
+ /*
+ * Find the deepest child. Only consider the first tag child of each node
+ * (ignore text); stop if no children are found.
+ */
+ var j = 0;
+ while (j < elInsertLocation.children.length) {
+ var child = elInsertLocation.children[j];
+ if ((0, utils_js_1.isTag)(child)) {
+ elInsertLocation = child;
+ j = 0;
+ }
+ else {
+ j++;
+ }
+ }
+ insert(el, elInsertLocation, [wrapperDom]);
+ }
+ return this;
+ };
+}
+/**
+ * The .wrap() function can take any string or object that could be passed to
+ * the $() factory function to specify a DOM structure. This structure may be
+ * nested several levels deep, but should contain only one inmost element. A
+ * copy of this structure will be wrapped around each of the elements in the set
+ * of matched elements. This method returns the original set of elements for
+ * chaining purposes.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * const redFruit = $('<div class="red-fruit"></div>');
+ * $('.apple').wrap(redFruit);
+ *
+ * //=> <ul id="fruits">
+ * // <div class="red-fruit">
+ * // <li class="apple">Apple</li>
+ * // </div>
+ * // <li class="orange">Orange</li>
+ * // <li class="plum">Plum</li>
+ * // </ul>
+ *
+ * const healthy = $('<div class="healthy"></div>');
+ * $('li').wrap(healthy);
+ *
+ * //=> <ul id="fruits">
+ * // <div class="healthy">
+ * // <li class="apple">Apple</li>
+ * // </div>
+ * // <div class="healthy">
+ * // <li class="orange">Orange</li>
+ * // </div>
+ * // <div class="healthy">
+ * // <li class="plum">Plum</li>
+ * // </div>
+ * // </ul>
+ * ```
+ *
+ * @param wrapper - The DOM structure to wrap around each element in the selection.
+ * @see {@link https://api.jquery.com/wrap/}
+ */
+exports.wrap = _wrap(function (el, elInsertLocation, wrapperDom) {
+ var parent = el.parent;
+ if (!parent)
+ return;
+ var siblings = parent.children;
+ var index = siblings.indexOf(el);
+ (0, parse_js_1.update)([el], elInsertLocation);
+ /*
+ * The previous operation removed the current element from the `siblings`
+ * array, so the `dom` array can be inserted without removing any
+ * additional elements.
+ */
+ uniqueSplice(siblings, index, 0, wrapperDom, parent);
+});
+/**
+ * The .wrapInner() function can take any string or object that could be passed
+ * to the $() factory function to specify a DOM structure. This structure may be
+ * nested several levels deep, but should contain only one inmost element. The
+ * structure will be wrapped around the content of each of the elements in the
+ * set of matched elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * const redFruit = $('<div class="red-fruit"></div>');
+ * $('.apple').wrapInner(redFruit);
+ *
+ * //=> <ul id="fruits">
+ * // <li class="apple">
+ * // <div class="red-fruit">Apple</div>
+ * // </li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ *
+ * const healthy = $('<div class="healthy"></div>');
+ * $('li').wrapInner(healthy);
+ *
+ * //=> <ul id="fruits">
+ * // <li class="apple">
+ * // <div class="healthy">Apple</div>
+ * // </li>
+ * // <li class="orange">
+ * // <div class="healthy">Orange</div>
+ * // </li>
+ * // <li class="pear">
+ * // <div class="healthy">Pear</div>
+ * // </li>
+ * // </ul>
+ * ```
+ *
+ * @param wrapper - The DOM structure to wrap around the content of each element
+ * in the selection.
+ * @returns The instance itself, for chaining.
+ * @see {@link https://api.jquery.com/wrapInner/}
+ */
+exports.wrapInner = _wrap(function (el, elInsertLocation, wrapperDom) {
+ if (!(0, domhandler_1.hasChildren)(el))
+ return;
+ (0, parse_js_1.update)(el.children, elInsertLocation);
+ (0, parse_js_1.update)(wrapperDom, el);
+});
+/**
+ * The .unwrap() function, removes the parents of the set of matched elements
+ * from the DOM, leaving the matched elements in their place.
+ *
+ * @category Manipulation
+ * @example <caption>without selector</caption>
+ *
+ * ```js
+ * const $ = cheerio.load(
+ * '<div id=test>\n <div><p>Hello</p></div>\n <div><p>World</p></div>\n</div>'
+ * );
+ * $('#test p').unwrap();
+ *
+ * //=> <div id=test>
+ * // <p>Hello</p>
+ * // <p>World</p>
+ * // </div>
+ * ```
+ *
+ * @example <caption>with selector</caption>
+ *
+ * ```js
+ * const $ = cheerio.load(
+ * '<div id=test>\n <p>Hello</p>\n <b><p>World</p></b>\n</div>'
+ * );
+ * $('#test p').unwrap('b');
+ *
+ * //=> <div id=test>
+ * // <p>Hello</p>
+ * // <p>World</p>
+ * // </div>
+ * ```
+ *
+ * @param selector - A selector to check the parent element against. If an
+ * element's parent does not match the selector, the element won't be unwrapped.
+ * @returns The instance itself, for chaining.
+ * @see {@link https://api.jquery.com/unwrap/}
+ */
+function unwrap(selector) {
+ var _this = this;
+ this.parent(selector)
+ .not('body')
+ .each(function (_, el) {
+ _this._make(el).replaceWith(el.children);
+ });
+ return this;
+}
+exports.unwrap = unwrap;
+/**
+ * The .wrapAll() function can take any string or object that could be passed to
+ * the $() function to specify a DOM structure. This structure may be nested
+ * several levels deep, but should contain only one inmost element. The
+ * structure will be wrapped around all of the elements in the set of matched
+ * elements, as a single group.
+ *
+ * @category Manipulation
+ * @example <caption>With markup passed to `wrapAll`</caption>
+ *
+ * ```js
+ * const $ = cheerio.load(
+ * '<div class="container"><div class="inner">First</div><div class="inner">Second</div></div>'
+ * );
+ * $('.inner').wrapAll("<div class='new'></div>");
+ *
+ * //=> <div class="container">
+ * // <div class='new'>
+ * // <div class="inner">First</div>
+ * // <div class="inner">Second</div>
+ * // </div>
+ * // </div>
+ * ```
+ *
+ * @example <caption>With an existing cheerio instance</caption>
+ *
+ * ```js
+ * const $ = cheerio.load(
+ * '<span>Span 1</span><strong>Strong</strong><span>Span 2</span>'
+ * );
+ * const wrap = $('<div><p><em><b></b></em></p></div>');
+ * $('span').wrapAll(wrap);
+ *
+ * //=> <div>
+ * // <p>
+ * // <em>
+ * // <b>
+ * // <span>Span 1</span>
+ * // <span>Span 2</span>
+ * // </b>
+ * // </em>
+ * // </p>
+ * // </div>
+ * // <strong>Strong</strong>
+ * ```
+ *
+ * @param wrapper - The DOM structure to wrap around all matched elements in the
+ * selection.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/wrapAll/}
+ */
+function wrapAll(wrapper) {
+ var el = this[0];
+ if (el) {
+ var wrap_2 = this._make(typeof wrapper === 'function' ? wrapper.call(el, 0, el) : wrapper).insertBefore(el);
+ // If html is given as wrapper, wrap may contain text elements
+ var elInsertLocation = void 0;
+ for (var i = 0; i < wrap_2.length; i++) {
+ if (wrap_2[i].type === 'tag')
+ elInsertLocation = wrap_2[i];
+ }
+ var j = 0;
+ /*
+ * Find the deepest child. Only consider the first tag child of each node
+ * (ignore text); stop if no children are found.
+ */
+ while (elInsertLocation && j < elInsertLocation.children.length) {
+ var child = elInsertLocation.children[j];
+ if (child.type === 'tag') {
+ elInsertLocation = child;
+ j = 0;
+ }
+ else {
+ j++;
+ }
+ }
+ if (elInsertLocation)
+ this._make(elInsertLocation).append(this);
+ }
+ return this;
+}
+exports.wrapAll = wrapAll;
+/* eslint-disable jsdoc/check-param-names*/
+/**
+ * Insert content next to each element in the set of matched elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.apple').after('<li class="plum">Plum</li>');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="plum">Plum</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param content - HTML string, DOM element, array of DOM elements or Cheerio
+ * to insert after each element in the set of matched elements.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/after/}
+ */
+function after() {
+ var _this = this;
+ var elems = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ elems[_i] = arguments[_i];
+ }
+ var lastIdx = this.length - 1;
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ var parent = el.parent;
+ if (!(0, domhandler_1.hasChildren)(el) || !parent) {
+ return;
+ }
+ var siblings = parent.children;
+ var index = siblings.indexOf(el);
+ // If not found, move on
+ /* istanbul ignore next */
+ if (index < 0)
+ return;
+ var domSrc = typeof elems[0] === 'function'
+ ? elems[0].call(el, i, _this._render(el.children))
+ : elems;
+ var dom = _this._makeDomArray(domSrc, i < lastIdx);
+ // Add element after `this` element
+ uniqueSplice(siblings, index + 1, 0, dom, parent);
+ });
+}
+exports.after = after;
+/* eslint-enable jsdoc/check-param-names*/
+/**
+ * Insert every element in the set of matched elements after the target.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('<li class="plum">Plum</li>').insertAfter('.apple');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="plum">Plum</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param target - Element to insert elements after.
+ * @returns The set of newly inserted elements.
+ * @see {@link https://api.jquery.com/insertAfter/}
+ */
+function insertAfter(target) {
+ var _this = this;
+ if (typeof target === 'string') {
+ target = this._make(target);
+ }
+ this.remove();
+ var clones = [];
+ this._makeDomArray(target).forEach(function (el) {
+ var clonedSelf = _this.clone().toArray();
+ var parent = el.parent;
+ if (!parent) {
+ return;
+ }
+ var siblings = parent.children;
+ var index = siblings.indexOf(el);
+ // If not found, move on
+ /* istanbul ignore next */
+ if (index < 0)
+ return;
+ // Add cloned `this` element(s) after target element
+ uniqueSplice(siblings, index + 1, 0, clonedSelf, parent);
+ clones.push.apply(clones, clonedSelf);
+ });
+ return this._make(clones);
+}
+exports.insertAfter = insertAfter;
+/* eslint-disable jsdoc/check-param-names*/
+/**
+ * Insert content previous to each element in the set of matched elements.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.apple').before('<li class="plum">Plum</li>');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="plum">Plum</li>
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param content - HTML string, DOM element, array of DOM elements or Cheerio
+ * to insert before each element in the set of matched elements.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/before/}
+ */
+function before() {
+ var _this = this;
+ var elems = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ elems[_i] = arguments[_i];
+ }
+ var lastIdx = this.length - 1;
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ var parent = el.parent;
+ if (!(0, domhandler_1.hasChildren)(el) || !parent) {
+ return;
+ }
+ var siblings = parent.children;
+ var index = siblings.indexOf(el);
+ // If not found, move on
+ /* istanbul ignore next */
+ if (index < 0)
+ return;
+ var domSrc = typeof elems[0] === 'function'
+ ? elems[0].call(el, i, _this._render(el.children))
+ : elems;
+ var dom = _this._makeDomArray(domSrc, i < lastIdx);
+ // Add element before `el` element
+ uniqueSplice(siblings, index, 0, dom, parent);
+ });
+}
+exports.before = before;
+/* eslint-enable jsdoc/check-param-names*/
+/**
+ * Insert every element in the set of matched elements before the target.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('<li class="plum">Plum</li>').insertBefore('.apple');
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="plum">Plum</li>
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="pear">Pear</li>
+ * // </ul>
+ * ```
+ *
+ * @param target - Element to insert elements before.
+ * @returns The set of newly inserted elements.
+ * @see {@link https://api.jquery.com/insertBefore/}
+ */
+function insertBefore(target) {
+ var _this = this;
+ var targetArr = this._make(target);
+ this.remove();
+ var clones = [];
+ (0, utils_js_1.domEach)(targetArr, function (el) {
+ var clonedSelf = _this.clone().toArray();
+ var parent = el.parent;
+ if (!parent) {
+ return;
+ }
+ var siblings = parent.children;
+ var index = siblings.indexOf(el);
+ // If not found, move on
+ /* istanbul ignore next */
+ if (index < 0)
+ return;
+ // Add cloned `this` element(s) after target element
+ uniqueSplice(siblings, index, 0, clonedSelf, parent);
+ clones.push.apply(clones, clonedSelf);
+ });
+ return this._make(clones);
+}
+exports.insertBefore = insertBefore;
+/**
+ * Removes the set of matched elements from the DOM and all their children.
+ * `selector` filters the set of matched elements to be removed.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('.pear').remove();
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // </ul>
+ * ```
+ *
+ * @param selector - Optional selector for elements to remove.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/remove/}
+ */
+function remove(selector) {
+ // Filter if we have selector
+ var elems = selector ? this.filter(selector) : this;
+ (0, utils_js_1.domEach)(elems, function (el) {
+ (0, domutils_1.removeElement)(el);
+ el.prev = el.next = el.parent = null;
+ });
+ return this;
+}
+exports.remove = remove;
+/**
+ * Replaces matched elements with `content`.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * const plum = $('<li class="plum">Plum</li>');
+ * $('.pear').replaceWith(plum);
+ * $.html();
+ * //=> <ul id="fruits">
+ * // <li class="apple">Apple</li>
+ * // <li class="orange">Orange</li>
+ * // <li class="plum">Plum</li>
+ * // </ul>
+ * ```
+ *
+ * @param content - Replacement for matched elements.
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/replaceWith/}
+ */
+function replaceWith(content) {
+ var _this = this;
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ var parent = el.parent;
+ if (!parent) {
+ return;
+ }
+ var siblings = parent.children;
+ var cont = typeof content === 'function' ? content.call(el, i, el) : content;
+ var dom = _this._makeDomArray(cont);
+ /*
+ * In the case that `dom` contains nodes that already exist in other
+ * structures, ensure those nodes are properly removed.
+ */
+ (0, parse_js_1.update)(dom, null);
+ var index = siblings.indexOf(el);
+ // Completely remove old element
+ uniqueSplice(siblings, index, 1, dom, parent);
+ if (!dom.includes(el)) {
+ el.parent = el.prev = el.next = null;
+ }
+ });
+}
+exports.replaceWith = replaceWith;
+/**
+ * Empties an element, removing all its children.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * $('ul').empty();
+ * $.html();
+ * //=> <ul id="fruits"></ul>
+ * ```
+ *
+ * @returns The instance itself.
+ * @see {@link https://api.jquery.com/empty/}
+ */
+function empty() {
+ return (0, utils_js_1.domEach)(this, function (el) {
+ if (!(0, domhandler_1.hasChildren)(el))
+ return;
+ el.children.forEach(function (child) {
+ child.next = child.prev = child.parent = null;
+ });
+ el.children.length = 0;
+ });
+}
+exports.empty = empty;
+function html(str) {
+ var _this = this;
+ if (str === undefined) {
+ var el = this[0];
+ if (!el || !(0, domhandler_1.hasChildren)(el))
+ return null;
+ return this._render(el.children);
+ }
+ return (0, utils_js_1.domEach)(this, function (el) {
+ if (!(0, domhandler_1.hasChildren)(el))
+ return;
+ el.children.forEach(function (child) {
+ child.next = child.prev = child.parent = null;
+ });
+ var content = (0, utils_js_1.isCheerio)(str)
+ ? str.toArray()
+ : _this._parse("".concat(str), _this.options, false, el).children;
+ (0, parse_js_1.update)(content, el);
+ });
+}
+exports.html = html;
+/**
+ * Turns the collection to a string. Alias for `.html()`.
+ *
+ * @category Manipulation
+ * @returns The rendered document.
+ */
+function toString() {
+ return this._render(this);
+}
+exports.toString = toString;
+function text(str) {
+ var _this = this;
+ // If `str` is undefined, act as a "getter"
+ if (str === undefined) {
+ return (0, static_js_1.text)(this);
+ }
+ if (typeof str === 'function') {
+ // Function support
+ return (0, utils_js_1.domEach)(this, function (el, i) {
+ return _this._make(el).text(str.call(el, i, (0, static_js_1.text)([el])));
+ });
+ }
+ // Append text node to each selected elements
+ return (0, utils_js_1.domEach)(this, function (el) {
+ if (!(0, domhandler_1.hasChildren)(el))
+ return;
+ el.children.forEach(function (child) {
+ child.next = child.prev = child.parent = null;
+ });
+ var textNode = new domhandler_1.Text("".concat(str));
+ (0, parse_js_1.update)(textNode, el);
+ });
+}
+exports.text = text;
+/**
+ * Clone the cheerio object.
+ *
+ * @category Manipulation
+ * @example
+ *
+ * ```js
+ * const moreFruit = $('#fruits').clone();
+ * ```
+ *
+ * @returns The cloned object.
+ * @see {@link https://api.jquery.com/clone/}
+ */
+function clone() {
+ return this._make((0, utils_js_1.cloneDom)(this.get()));
+}
+exports.clone = clone;
+//# sourceMappingURL=manipulation.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.js.map b/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.js.map
new file mode 100644
index 0000000..78ec6ae
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/manipulation.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"manipulation.js","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/manipulation.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.d.ts b/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.d.ts
new file mode 100644
index 0000000..614c0ae
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.d.ts
@@ -0,0 +1,644 @@
+/**
+ * Methods for traversing the DOM structure.
+ *
+ * @module cheerio/traversing
+ */
+import { AnyNode, Element, Document } from 'domhandler';
+import type { Cheerio } from '../cheerio.js';
+import type { AcceptedFilters } from '../types.js';
+/**
+ * Get the descendants of each element in the current set of matched elements,
+ * filtered by a selector, jQuery object, or element.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').find('li').length;
+ * //=> 3
+ * $('#fruits').find($('.apple')).length;
+ * //=> 1
+ * ```
+ *
+ * @param selectorOrHaystack - Element to look for.
+ * @returns The found elements.
+ * @see {@link https://api.jquery.com/find/}
+ */
+export declare function find<T extends AnyNode>(this: Cheerio<T>, selectorOrHaystack?: string | Cheerio<Element> | Element): Cheerio<Element>;
+/**
+ * Get the parent of each element in the current set of matched elements,
+ * optionally filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').parent().attr('id');
+ * //=> fruits
+ * ```
+ *
+ * @param selector - If specified filter for parent.
+ * @returns The parents.
+ * @see {@link https://api.jquery.com/parent/}
+ */
+export declare const parent: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Get a set of parents filtered by `selector` of each element in the current
+ * set of match elements.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.orange').parents().length;
+ * //=> 2
+ * $('.orange').parents('#fruits').length;
+ * //=> 1
+ * ```
+ *
+ * @param selector - If specified filter for parents.
+ * @returns The parents.
+ * @see {@link https://api.jquery.com/parents/}
+ */
+export declare const parents: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Get the ancestors of each element in the current set of matched elements, up
+ * to but not including the element matched by the selector, DOM node, or cheerio object.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.orange').parentsUntil('#food').length;
+ * //=> 1
+ * ```
+ *
+ * @param selector - Selector for element to stop at.
+ * @param filterSelector - Optional filter for parents.
+ * @returns The parents.
+ * @see {@link https://api.jquery.com/parentsUntil/}
+ */
+export declare const parentsUntil: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element> | null, filterSelector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * For each element in the set, get the first element that matches the selector
+ * by testing the element itself and traversing up through its ancestors in the DOM tree.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.orange').closest();
+ * //=> []
+ *
+ * $('.orange').closest('.apple');
+ * // => []
+ *
+ * $('.orange').closest('li');
+ * //=> [<li class="orange">Orange</li>]
+ *
+ * $('.orange').closest('#fruits');
+ * //=> [<ul id="fruits"> ... </ul>]
+ * ```
+ *
+ * @param selector - Selector for the element to find.
+ * @returns The closest nodes.
+ * @see {@link https://api.jquery.com/closest/}
+ */
+export declare function closest<T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>): Cheerio<AnyNode>;
+/**
+ * Gets the next sibling of the first selected element, optionally filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.apple').next().hasClass('orange');
+ * //=> true
+ * ```
+ *
+ * @param selector - If specified filter for sibling.
+ * @returns The next nodes.
+ * @see {@link https://api.jquery.com/next/}
+ */
+export declare const next: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Gets all the following siblings of the first selected element, optionally
+ * filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.apple').nextAll();
+ * //=> [<li class="orange">Orange</li>, <li class="pear">Pear</li>]
+ * $('.apple').nextAll('.orange');
+ * //=> [<li class="orange">Orange</li>]
+ * ```
+ *
+ * @param selector - If specified filter for siblings.
+ * @returns The next nodes.
+ * @see {@link https://api.jquery.com/nextAll/}
+ */
+export declare const nextAll: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Gets all the following siblings up to but not including the element matched
+ * by the selector, optionally filtered by another selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.apple').nextUntil('.pear');
+ * //=> [<li class="orange">Orange</li>]
+ * ```
+ *
+ * @param selector - Selector for element to stop at.
+ * @param filterSelector - If specified filter for siblings.
+ * @returns The next nodes.
+ * @see {@link https://api.jquery.com/nextUntil/}
+ */
+export declare const nextUntil: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element> | null, filterSelector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Gets the previous sibling of the first selected element optionally filtered
+ * by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.orange').prev().hasClass('apple');
+ * //=> true
+ * ```
+ *
+ * @param selector - If specified filter for siblings.
+ * @returns The previous nodes.
+ * @see {@link https://api.jquery.com/prev/}
+ */
+export declare const prev: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Gets all the preceding siblings of the first selected element, optionally
+ * filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').prevAll();
+ * //=> [<li class="orange">Orange</li>, <li class="apple">Apple</li>]
+ *
+ * $('.pear').prevAll('.orange');
+ * //=> [<li class="orange">Orange</li>]
+ * ```
+ *
+ * @param selector - If specified filter for siblings.
+ * @returns The previous nodes.
+ * @see {@link https://api.jquery.com/prevAll/}
+ */
+export declare const prevAll: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Gets all the preceding siblings up to but not including the element matched
+ * by the selector, optionally filtered by another selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').prevUntil('.apple');
+ * //=> [<li class="orange">Orange</li>]
+ * ```
+ *
+ * @param selector - Selector for element to stop at.
+ * @param filterSelector - If specified filter for siblings.
+ * @returns The previous nodes.
+ * @see {@link https://api.jquery.com/prevUntil/}
+ */
+export declare const prevUntil: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element> | null, filterSelector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Get the siblings of each element (excluding the element) in the set of
+ * matched elements, optionally filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').siblings().length;
+ * //=> 2
+ *
+ * $('.pear').siblings('.orange').length;
+ * //=> 1
+ * ```
+ *
+ * @param selector - If specified filter for siblings.
+ * @returns The siblings.
+ * @see {@link https://api.jquery.com/siblings/}
+ */
+export declare const siblings: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Gets the element children of each element in the set of matched elements.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').children().length;
+ * //=> 3
+ *
+ * $('#fruits').children('.pear').text();
+ * //=> Pear
+ * ```
+ *
+ * @param selector - If specified filter for children.
+ * @returns The children.
+ * @see {@link https://api.jquery.com/children/}
+ */
+export declare const children: <T extends AnyNode>(this: Cheerio<T>, selector?: AcceptedFilters<Element>) => Cheerio<Element>;
+/**
+ * Gets the children of each element in the set of matched elements, including
+ * text and comment nodes.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').contents().length;
+ * //=> 3
+ * ```
+ *
+ * @returns The children.
+ * @see {@link https://api.jquery.com/contents/}
+ */
+export declare function contents<T extends AnyNode>(this: Cheerio<T>): Cheerio<AnyNode>;
+/**
+ * Iterates over a cheerio object, executing a function for each matched
+ * element. When the callback is fired, the function is fired in the context of
+ * the DOM element, so `this` refers to the current element, which is equivalent
+ * to the function parameter `element`. To break out of the `each` loop early,
+ * return with `false`.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * const fruits = [];
+ *
+ * $('li').each(function (i, elem) {
+ * fruits[i] = $(this).text();
+ * });
+ *
+ * fruits.join(', ');
+ * //=> Apple, Orange, Pear
+ * ```
+ *
+ * @param fn - Function to execute.
+ * @returns The instance itself, useful for chaining.
+ * @see {@link https://api.jquery.com/each/}
+ */
+export declare function each<T>(this: Cheerio<T>, fn: (this: T, i: number, el: T) => void | boolean): Cheerio<T>;
+/**
+ * Pass each element in the current matched set through a function, producing a
+ * new Cheerio object containing the return values. The function can return an
+ * individual data item or an array of data items to be inserted into the
+ * resulting set. If an array is returned, the elements inside the array are
+ * inserted into the set. If the function returns null or undefined, no element
+ * will be inserted.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li')
+ * .map(function (i, el) {
+ * // this === el
+ * return $(this).text();
+ * })
+ * .toArray()
+ * .join(' ');
+ * //=> "apple orange pear"
+ * ```
+ *
+ * @param fn - Function to execute.
+ * @returns The mapped elements, wrapped in a Cheerio collection.
+ * @see {@link https://api.jquery.com/map/}
+ */
+export declare function map<T, M>(this: Cheerio<T>, fn: (this: T, i: number, el: T) => M[] | M | null | undefined): Cheerio<M>;
+/**
+ * Iterates over a cheerio object, reducing the set of selector elements to
+ * those that match the selector or pass the function's test.
+ *
+ * This is the definition for using type guards; have a look below for other
+ * ways to invoke this method. The function is executed in the context of the
+ * selected element, so `this` refers to the current element.
+ *
+ * @category Traversing
+ * @example <caption>Function</caption>
+ *
+ * ```js
+ * $('li')
+ * .filter(function (i, el) {
+ * // this === el
+ * return $(this).attr('class') === 'orange';
+ * })
+ * .attr('class'); //=> orange
+ * ```
+ *
+ * @param match - Value to look for, following the rules above.
+ * @returns The filtered collection.
+ * @see {@link https://api.jquery.com/filter/}
+ */
+export declare function filter<T, S extends T>(this: Cheerio<T>, match: (this: T, index: number, value: T) => value is S): Cheerio<S>;
+/**
+ * Iterates over a cheerio object, reducing the set of selector elements to
+ * those that match the selector or pass the function's test.
+ *
+ * - When a Cheerio selection is specified, return only the elements contained in
+ * that selection.
+ * - When an element is specified, return only that element (if it is contained in
+ * the original selection).
+ * - If using the function method, the function is executed in the context of the
+ * selected element, so `this` refers to the current element.
+ *
+ * @category Traversing
+ * @example <caption>Selector</caption>
+ *
+ * ```js
+ * $('li').filter('.orange').attr('class');
+ * //=> orange
+ * ```
+ *
+ * @example <caption>Function</caption>
+ *
+ * ```js
+ * $('li')
+ * .filter(function (i, el) {
+ * // this === el
+ * return $(this).attr('class') === 'orange';
+ * })
+ * .attr('class'); //=> orange
+ * ```
+ *
+ * @param match - Value to look for, following the rules above. See
+ * {@link AcceptedFilters}.
+ * @returns The filtered collection.
+ * @see {@link https://api.jquery.com/filter/}
+ */
+export declare function filter<T, S extends AcceptedFilters<T>>(this: Cheerio<T>, match: S): Cheerio<S extends string ? Element : T>;
+export declare function filterArray<T>(nodes: T[], match: AcceptedFilters<T>, xmlMode?: boolean, root?: Document): Element[] | T[];
+/**
+ * Checks the current list of elements and returns `true` if _any_ of the
+ * elements match the selector. If using an element or Cheerio selection,
+ * returns `true` if _any_ of the elements match. If using a predicate function,
+ * the function is executed in the context of the selected element, so `this`
+ * refers to the current element.
+ *
+ * @category Attributes
+ * @param selector - Selector for the selection.
+ * @returns Whether or not the selector matches an element of the instance.
+ * @see {@link https://api.jquery.com/is/}
+ */
+export declare function is<T>(this: Cheerio<T>, selector?: AcceptedFilters<T>): boolean;
+/**
+ * Remove elements from the set of matched elements. Given a Cheerio object that
+ * represents a set of DOM elements, the `.not()` method constructs a new
+ * Cheerio object from a subset of the matching elements. The supplied selector
+ * is tested against each element; the elements that don't match the selector
+ * will be included in the result.
+ *
+ * The `.not()` method can take a function as its argument in the same way that
+ * `.filter()` does. Elements for which the function returns `true` are excluded
+ * from the filtered set; all other elements are included.
+ *
+ * @category Traversing
+ * @example <caption>Selector</caption>
+ *
+ * ```js
+ * $('li').not('.apple').length;
+ * //=> 2
+ * ```
+ *
+ * @example <caption>Function</caption>
+ *
+ * ```js
+ * $('li').not(function (i, el) {
+ * // this === el
+ * return $(this).attr('class') === 'orange';
+ * }).length; //=> 2
+ * ```
+ *
+ * @param match - Value to look for, following the rules above.
+ * @param container - Optional node to filter instead.
+ * @returns The filtered collection.
+ * @see {@link https://api.jquery.com/not/}
+ */
+export declare function not<T extends AnyNode>(this: Cheerio<T>, match: AcceptedFilters<T>): Cheerio<T>;
+/**
+ * Filters the set of matched elements to only those which have the given DOM
+ * element as a descendant or which have a descendant that matches the given
+ * selector. Equivalent to `.filter(':has(selector)')`.
+ *
+ * @category Traversing
+ * @example <caption>Selector</caption>
+ *
+ * ```js
+ * $('ul').has('.pear').attr('id');
+ * //=> fruits
+ * ```
+ *
+ * @example <caption>Element</caption>
+ *
+ * ```js
+ * $('ul').has($('.pear')[0]).attr('id');
+ * //=> fruits
+ * ```
+ *
+ * @param selectorOrHaystack - Element to look for.
+ * @returns The filtered collection.
+ * @see {@link https://api.jquery.com/has/}
+ */
+export declare function has(this: Cheerio<AnyNode | Element>, selectorOrHaystack: string | Cheerio<Element> | Element): Cheerio<AnyNode | Element>;
+/**
+ * Will select the first element of a cheerio object.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').children().first().text();
+ * //=> Apple
+ * ```
+ *
+ * @returns The first element.
+ * @see {@link https://api.jquery.com/first/}
+ */
+export declare function first<T extends AnyNode>(this: Cheerio<T>): Cheerio<T>;
+/**
+ * Will select the last element of a cheerio object.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').children().last().text();
+ * //=> Pear
+ * ```
+ *
+ * @returns The last element.
+ * @see {@link https://api.jquery.com/last/}
+ */
+export declare function last<T>(this: Cheerio<T>): Cheerio<T>;
+/**
+ * Reduce the set of matched elements to the one at the specified index. Use
+ * `.eq(-i)` to count backwards from the last selected element.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').eq(0).text();
+ * //=> Apple
+ *
+ * $('li').eq(-1).text();
+ * //=> Pear
+ * ```
+ *
+ * @param i - Index of the element to select.
+ * @returns The element at the `i`th position.
+ * @see {@link https://api.jquery.com/eq/}
+ */
+export declare function eq<T>(this: Cheerio<T>, i: number): Cheerio<T>;
+/**
+ * Retrieve one of the elements matched by the Cheerio object, at the `i`th position.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').get(0).tagName;
+ * //=> li
+ * ```
+ *
+ * @param i - Element to retrieve.
+ * @returns The element at the `i`th position.
+ * @see {@link https://api.jquery.com/get/}
+ */
+export declare function get<T>(this: Cheerio<T>, i: number): T | undefined;
+/**
+ * Retrieve all elements matched by the Cheerio object, as an array.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').get().length;
+ * //=> 3
+ * ```
+ *
+ * @returns All elements matched by the Cheerio object.
+ * @see {@link https://api.jquery.com/get/}
+ */
+export declare function get<T>(this: Cheerio<T>): T[];
+/**
+ * Retrieve all the DOM elements contained in the jQuery set as an array.
+ *
+ * @example
+ *
+ * ```js
+ * $('li').toArray();
+ * //=> [ {...}, {...}, {...} ]
+ * ```
+ *
+ * @returns The contained items.
+ */
+export declare function toArray<T>(this: Cheerio<T>): T[];
+/**
+ * Search for a given element from among the matched elements.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').index();
+ * //=> 2 $('.orange').index('li');
+ * //=> 1
+ * $('.apple').index($('#fruit, li'));
+ * //=> 1
+ * ```
+ *
+ * @param selectorOrNeedle - Element to look for.
+ * @returns The index of the element.
+ * @see {@link https://api.jquery.com/index/}
+ */
+export declare function index<T extends AnyNode>(this: Cheerio<T>, selectorOrNeedle?: string | Cheerio<AnyNode> | AnyNode): number;
+/**
+ * Gets the elements matching the specified range (0-based position).
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').slice(1).eq(0).text();
+ * //=> 'Orange'
+ *
+ * $('li').slice(1, 2).length;
+ * //=> 1
+ * ```
+ *
+ * @param start - A position at which the elements begin to be selected. If
+ * negative, it indicates an offset from the end of the set.
+ * @param end - A position at which the elements stop being selected. If
+ * negative, it indicates an offset from the end of the set. If omitted, the
+ * range continues until the end of the set.
+ * @returns The elements matching the specified range.
+ * @see {@link https://api.jquery.com/slice/}
+ */
+export declare function slice<T>(this: Cheerio<T>, start?: number, end?: number): Cheerio<T>;
+/**
+ * End the most recent filtering operation in the current chain and return the
+ * set of matched elements to its previous state.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').eq(0).end().length;
+ * //=> 3
+ * ```
+ *
+ * @returns The previous state of the set of matched elements.
+ * @see {@link https://api.jquery.com/end/}
+ */
+export declare function end<T>(this: Cheerio<T>): Cheerio<AnyNode>;
+/**
+ * Add elements to the set of matched elements.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.apple').add('.orange').length;
+ * //=> 2
+ * ```
+ *
+ * @param other - Elements to add.
+ * @param context - Optionally the context of the new selection.
+ * @returns The combined set.
+ * @see {@link https://api.jquery.com/add/}
+ */
+export declare function add<S extends AnyNode, T extends AnyNode>(this: Cheerio<T>, other: string | Cheerio<S> | S | S[], context?: Cheerio<S> | string): Cheerio<S | T>;
+/**
+ * Add the previous set of elements on the stack to the current set, optionally
+ * filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').eq(0).addBack('.orange').length;
+ * //=> 2
+ * ```
+ *
+ * @param selector - Selector for the elements to add.
+ * @returns The combined set.
+ * @see {@link https://api.jquery.com/addBack/}
+ */
+export declare function addBack<T extends AnyNode>(this: Cheerio<T>, selector?: string): Cheerio<AnyNode>;
+//# sourceMappingURL=traversing.d.ts.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.d.ts.map b/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.d.ts.map
new file mode 100644
index 0000000..5902b0e
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"traversing.d.ts","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/traversing.ts"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.js b/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.js
new file mode 100644
index 0000000..1a43a58
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.js
@@ -0,0 +1,907 @@
+"use strict";
+/**
+ * Methods for traversing the DOM structure.
+ *
+ * @module cheerio/traversing
+ */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.addBack = exports.add = exports.end = exports.slice = exports.index = exports.toArray = exports.get = exports.eq = exports.last = exports.first = exports.has = exports.not = exports.is = exports.filterArray = exports.filter = exports.map = exports.each = exports.contents = exports.children = exports.siblings = exports.prevUntil = exports.prevAll = exports.prev = exports.nextUntil = exports.nextAll = exports.next = exports.closest = exports.parentsUntil = exports.parents = exports.parent = exports.find = void 0;
+var domhandler_1 = require("domhandler");
+var select = __importStar(require("cheerio-select"));
+var utils_js_1 = require("../utils.js");
+var static_js_1 = require("../static.js");
+var domutils_1 = require("domutils");
+var reSiblingSelector = /^\s*[~+]/;
+/**
+ * Get the descendants of each element in the current set of matched elements,
+ * filtered by a selector, jQuery object, or element.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').find('li').length;
+ * //=> 3
+ * $('#fruits').find($('.apple')).length;
+ * //=> 1
+ * ```
+ *
+ * @param selectorOrHaystack - Element to look for.
+ * @returns The found elements.
+ * @see {@link https://api.jquery.com/find/}
+ */
+function find(selectorOrHaystack) {
+ var _a;
+ if (!selectorOrHaystack) {
+ return this._make([]);
+ }
+ var context = this.toArray();
+ if (typeof selectorOrHaystack !== 'string') {
+ var haystack = (0, utils_js_1.isCheerio)(selectorOrHaystack)
+ ? selectorOrHaystack.toArray()
+ : [selectorOrHaystack];
+ return this._make(haystack.filter(function (elem) { return context.some(function (node) { return (0, static_js_1.contains)(node, elem); }); }));
+ }
+ var elems = reSiblingSelector.test(selectorOrHaystack)
+ ? context
+ : this.children().toArray();
+ var options = {
+ context: context,
+ root: (_a = this._root) === null || _a === void 0 ? void 0 : _a[0],
+ // Pass options that are recognized by `cheerio-select`
+ xmlMode: this.options.xmlMode,
+ lowerCaseTags: this.options.lowerCaseTags,
+ lowerCaseAttributeNames: this.options.lowerCaseAttributeNames,
+ pseudos: this.options.pseudos,
+ quirksMode: this.options.quirksMode,
+ };
+ return this._make(select.select(selectorOrHaystack, elems, options));
+}
+exports.find = find;
+/**
+ * Creates a matcher, using a particular mapping function. Matchers provide a
+ * function that finds elements using a generating function, supporting filtering.
+ *
+ * @private
+ * @param matchMap - Mapping function.
+ * @returns - Function for wrapping generating functions.
+ */
+function _getMatcher(matchMap) {
+ return function (fn) {
+ var postFns = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ postFns[_i - 1] = arguments[_i];
+ }
+ return function (selector) {
+ var _a;
+ var matched = matchMap(fn, this);
+ if (selector) {
+ matched = filterArray(matched, selector, this.options.xmlMode, (_a = this._root) === null || _a === void 0 ? void 0 : _a[0]);
+ }
+ return this._make(
+ // Post processing is only necessary if there is more than one element.
+ this.length > 1 && matched.length > 1
+ ? postFns.reduce(function (elems, fn) { return fn(elems); }, matched)
+ : matched);
+ };
+ };
+}
+/** Matcher that adds multiple elements for each entry in the input. */
+var _matcher = _getMatcher(function (fn, elems) {
+ var _a;
+ var ret = [];
+ for (var i = 0; i < elems.length; i++) {
+ var value = fn(elems[i]);
+ ret.push(value);
+ }
+ return (_a = new Array()).concat.apply(_a, ret);
+});
+/** Matcher that adds at most one element for each entry in the input. */
+var _singleMatcher = _getMatcher(function (fn, elems) {
+ var ret = [];
+ for (var i = 0; i < elems.length; i++) {
+ var value = fn(elems[i]);
+ if (value !== null) {
+ ret.push(value);
+ }
+ }
+ return ret;
+});
+/**
+ * Matcher that supports traversing until a condition is met.
+ *
+ * @returns A function usable for `*Until` methods.
+ */
+function _matchUntil(nextElem) {
+ var postFns = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ postFns[_i - 1] = arguments[_i];
+ }
+ // We use a variable here that is used from within the matcher.
+ var matches = null;
+ var innerMatcher = _getMatcher(function (nextElem, elems) {
+ var matched = [];
+ (0, utils_js_1.domEach)(elems, function (elem) {
+ for (var next_1; (next_1 = nextElem(elem)); elem = next_1) {
+ // FIXME: `matched` might contain duplicates here and the index is too large.
+ if (matches === null || matches === void 0 ? void 0 : matches(next_1, matched.length))
+ break;
+ matched.push(next_1);
+ }
+ });
+ return matched;
+ }).apply(void 0, __spreadArray([nextElem], postFns, false));
+ return function (selector, filterSelector) {
+ var _this = this;
+ // Override `matches` variable with the new target.
+ matches =
+ typeof selector === 'string'
+ ? function (elem) { return select.is(elem, selector, _this.options); }
+ : selector
+ ? getFilterFn(selector)
+ : null;
+ var ret = innerMatcher.call(this, filterSelector);
+ // Set `matches` to `null`, so we don't waste memory.
+ matches = null;
+ return ret;
+ };
+}
+function _removeDuplicates(elems) {
+ return Array.from(new Set(elems));
+}
+/**
+ * Get the parent of each element in the current set of matched elements,
+ * optionally filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').parent().attr('id');
+ * //=> fruits
+ * ```
+ *
+ * @param selector - If specified filter for parent.
+ * @returns The parents.
+ * @see {@link https://api.jquery.com/parent/}
+ */
+exports.parent = _singleMatcher(function (_a) {
+ var parent = _a.parent;
+ return (parent && !(0, domhandler_1.isDocument)(parent) ? parent : null);
+}, _removeDuplicates);
+/**
+ * Get a set of parents filtered by `selector` of each element in the current
+ * set of match elements.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.orange').parents().length;
+ * //=> 2
+ * $('.orange').parents('#fruits').length;
+ * //=> 1
+ * ```
+ *
+ * @param selector - If specified filter for parents.
+ * @returns The parents.
+ * @see {@link https://api.jquery.com/parents/}
+ */
+exports.parents = _matcher(function (elem) {
+ var matched = [];
+ while (elem.parent && !(0, domhandler_1.isDocument)(elem.parent)) {
+ matched.push(elem.parent);
+ elem = elem.parent;
+ }
+ return matched;
+}, domutils_1.uniqueSort, function (elems) { return elems.reverse(); });
+/**
+ * Get the ancestors of each element in the current set of matched elements, up
+ * to but not including the element matched by the selector, DOM node, or cheerio object.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.orange').parentsUntil('#food').length;
+ * //=> 1
+ * ```
+ *
+ * @param selector - Selector for element to stop at.
+ * @param filterSelector - Optional filter for parents.
+ * @returns The parents.
+ * @see {@link https://api.jquery.com/parentsUntil/}
+ */
+exports.parentsUntil = _matchUntil(function (_a) {
+ var parent = _a.parent;
+ return (parent && !(0, domhandler_1.isDocument)(parent) ? parent : null);
+}, domutils_1.uniqueSort, function (elems) { return elems.reverse(); });
+/**
+ * For each element in the set, get the first element that matches the selector
+ * by testing the element itself and traversing up through its ancestors in the DOM tree.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.orange').closest();
+ * //=> []
+ *
+ * $('.orange').closest('.apple');
+ * // => []
+ *
+ * $('.orange').closest('li');
+ * //=> [<li class="orange">Orange</li>]
+ *
+ * $('.orange').closest('#fruits');
+ * //=> [<ul id="fruits"> ... </ul>]
+ * ```
+ *
+ * @param selector - Selector for the element to find.
+ * @returns The closest nodes.
+ * @see {@link https://api.jquery.com/closest/}
+ */
+function closest(selector) {
+ var _a;
+ var set = [];
+ if (!selector) {
+ return this._make(set);
+ }
+ var selectOpts = {
+ xmlMode: this.options.xmlMode,
+ root: (_a = this._root) === null || _a === void 0 ? void 0 : _a[0],
+ };
+ var selectFn = typeof selector === 'string'
+ ? function (elem) { return select.is(elem, selector, selectOpts); }
+ : getFilterFn(selector);
+ (0, utils_js_1.domEach)(this, function (elem) {
+ while (elem && (0, utils_js_1.isTag)(elem)) {
+ if (selectFn(elem, 0)) {
+ // Do not add duplicate elements to the set
+ if (!set.includes(elem)) {
+ set.push(elem);
+ }
+ break;
+ }
+ elem = elem.parent;
+ }
+ });
+ return this._make(set);
+}
+exports.closest = closest;
+/**
+ * Gets the next sibling of the first selected element, optionally filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.apple').next().hasClass('orange');
+ * //=> true
+ * ```
+ *
+ * @param selector - If specified filter for sibling.
+ * @returns The next nodes.
+ * @see {@link https://api.jquery.com/next/}
+ */
+exports.next = _singleMatcher(function (elem) { return (0, domutils_1.nextElementSibling)(elem); });
+/**
+ * Gets all the following siblings of the first selected element, optionally
+ * filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.apple').nextAll();
+ * //=> [<li class="orange">Orange</li>, <li class="pear">Pear</li>]
+ * $('.apple').nextAll('.orange');
+ * //=> [<li class="orange">Orange</li>]
+ * ```
+ *
+ * @param selector - If specified filter for siblings.
+ * @returns The next nodes.
+ * @see {@link https://api.jquery.com/nextAll/}
+ */
+exports.nextAll = _matcher(function (elem) {
+ var matched = [];
+ while (elem.next) {
+ elem = elem.next;
+ if ((0, utils_js_1.isTag)(elem))
+ matched.push(elem);
+ }
+ return matched;
+}, _removeDuplicates);
+/**
+ * Gets all the following siblings up to but not including the element matched
+ * by the selector, optionally filtered by another selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.apple').nextUntil('.pear');
+ * //=> [<li class="orange">Orange</li>]
+ * ```
+ *
+ * @param selector - Selector for element to stop at.
+ * @param filterSelector - If specified filter for siblings.
+ * @returns The next nodes.
+ * @see {@link https://api.jquery.com/nextUntil/}
+ */
+exports.nextUntil = _matchUntil(function (el) { return (0, domutils_1.nextElementSibling)(el); }, _removeDuplicates);
+/**
+ * Gets the previous sibling of the first selected element optionally filtered
+ * by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.orange').prev().hasClass('apple');
+ * //=> true
+ * ```
+ *
+ * @param selector - If specified filter for siblings.
+ * @returns The previous nodes.
+ * @see {@link https://api.jquery.com/prev/}
+ */
+exports.prev = _singleMatcher(function (elem) { return (0, domutils_1.prevElementSibling)(elem); });
+/**
+ * Gets all the preceding siblings of the first selected element, optionally
+ * filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').prevAll();
+ * //=> [<li class="orange">Orange</li>, <li class="apple">Apple</li>]
+ *
+ * $('.pear').prevAll('.orange');
+ * //=> [<li class="orange">Orange</li>]
+ * ```
+ *
+ * @param selector - If specified filter for siblings.
+ * @returns The previous nodes.
+ * @see {@link https://api.jquery.com/prevAll/}
+ */
+exports.prevAll = _matcher(function (elem) {
+ var matched = [];
+ while (elem.prev) {
+ elem = elem.prev;
+ if ((0, utils_js_1.isTag)(elem))
+ matched.push(elem);
+ }
+ return matched;
+}, _removeDuplicates);
+/**
+ * Gets all the preceding siblings up to but not including the element matched
+ * by the selector, optionally filtered by another selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').prevUntil('.apple');
+ * //=> [<li class="orange">Orange</li>]
+ * ```
+ *
+ * @param selector - Selector for element to stop at.
+ * @param filterSelector - If specified filter for siblings.
+ * @returns The previous nodes.
+ * @see {@link https://api.jquery.com/prevUntil/}
+ */
+exports.prevUntil = _matchUntil(function (el) { return (0, domutils_1.prevElementSibling)(el); }, _removeDuplicates);
+/**
+ * Get the siblings of each element (excluding the element) in the set of
+ * matched elements, optionally filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').siblings().length;
+ * //=> 2
+ *
+ * $('.pear').siblings('.orange').length;
+ * //=> 1
+ * ```
+ *
+ * @param selector - If specified filter for siblings.
+ * @returns The siblings.
+ * @see {@link https://api.jquery.com/siblings/}
+ */
+exports.siblings = _matcher(function (elem) {
+ return (0, domutils_1.getSiblings)(elem).filter(function (el) { return (0, utils_js_1.isTag)(el) && el !== elem; });
+}, domutils_1.uniqueSort);
+/**
+ * Gets the element children of each element in the set of matched elements.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').children().length;
+ * //=> 3
+ *
+ * $('#fruits').children('.pear').text();
+ * //=> Pear
+ * ```
+ *
+ * @param selector - If specified filter for children.
+ * @returns The children.
+ * @see {@link https://api.jquery.com/children/}
+ */
+exports.children = _matcher(function (elem) { return (0, domutils_1.getChildren)(elem).filter(utils_js_1.isTag); }, _removeDuplicates);
+/**
+ * Gets the children of each element in the set of matched elements, including
+ * text and comment nodes.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').contents().length;
+ * //=> 3
+ * ```
+ *
+ * @returns The children.
+ * @see {@link https://api.jquery.com/contents/}
+ */
+function contents() {
+ var elems = this.toArray().reduce(function (newElems, elem) {
+ return (0, domhandler_1.hasChildren)(elem) ? newElems.concat(elem.children) : newElems;
+ }, []);
+ return this._make(elems);
+}
+exports.contents = contents;
+/**
+ * Iterates over a cheerio object, executing a function for each matched
+ * element. When the callback is fired, the function is fired in the context of
+ * the DOM element, so `this` refers to the current element, which is equivalent
+ * to the function parameter `element`. To break out of the `each` loop early,
+ * return with `false`.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * const fruits = [];
+ *
+ * $('li').each(function (i, elem) {
+ * fruits[i] = $(this).text();
+ * });
+ *
+ * fruits.join(', ');
+ * //=> Apple, Orange, Pear
+ * ```
+ *
+ * @param fn - Function to execute.
+ * @returns The instance itself, useful for chaining.
+ * @see {@link https://api.jquery.com/each/}
+ */
+function each(fn) {
+ var i = 0;
+ var len = this.length;
+ while (i < len && fn.call(this[i], i, this[i]) !== false)
+ ++i;
+ return this;
+}
+exports.each = each;
+/**
+ * Pass each element in the current matched set through a function, producing a
+ * new Cheerio object containing the return values. The function can return an
+ * individual data item or an array of data items to be inserted into the
+ * resulting set. If an array is returned, the elements inside the array are
+ * inserted into the set. If the function returns null or undefined, no element
+ * will be inserted.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li')
+ * .map(function (i, el) {
+ * // this === el
+ * return $(this).text();
+ * })
+ * .toArray()
+ * .join(' ');
+ * //=> "apple orange pear"
+ * ```
+ *
+ * @param fn - Function to execute.
+ * @returns The mapped elements, wrapped in a Cheerio collection.
+ * @see {@link https://api.jquery.com/map/}
+ */
+function map(fn) {
+ var elems = [];
+ for (var i = 0; i < this.length; i++) {
+ var el = this[i];
+ var val = fn.call(el, i, el);
+ if (val != null) {
+ elems = elems.concat(val);
+ }
+ }
+ return this._make(elems);
+}
+exports.map = map;
+/**
+ * Creates a function to test if a filter is matched.
+ *
+ * @param match - A filter.
+ * @returns A function that determines if a filter has been matched.
+ */
+function getFilterFn(match) {
+ if (typeof match === 'function') {
+ return function (el, i) { return match.call(el, i, el); };
+ }
+ if ((0, utils_js_1.isCheerio)(match)) {
+ return function (el) { return Array.prototype.includes.call(match, el); };
+ }
+ return function (el) {
+ return match === el;
+ };
+}
+function filter(match) {
+ var _a;
+ return this._make(filterArray(this.toArray(), match, this.options.xmlMode, (_a = this._root) === null || _a === void 0 ? void 0 : _a[0]));
+}
+exports.filter = filter;
+function filterArray(nodes, match, xmlMode, root) {
+ return typeof match === 'string'
+ ? select.filter(match, nodes, { xmlMode: xmlMode, root: root })
+ : nodes.filter(getFilterFn(match));
+}
+exports.filterArray = filterArray;
+/**
+ * Checks the current list of elements and returns `true` if _any_ of the
+ * elements match the selector. If using an element or Cheerio selection,
+ * returns `true` if _any_ of the elements match. If using a predicate function,
+ * the function is executed in the context of the selected element, so `this`
+ * refers to the current element.
+ *
+ * @category Attributes
+ * @param selector - Selector for the selection.
+ * @returns Whether or not the selector matches an element of the instance.
+ * @see {@link https://api.jquery.com/is/}
+ */
+function is(selector) {
+ var nodes = this.toArray();
+ return typeof selector === 'string'
+ ? select.some(nodes.filter(utils_js_1.isTag), selector, this.options)
+ : selector
+ ? nodes.some(getFilterFn(selector))
+ : false;
+}
+exports.is = is;
+/**
+ * Remove elements from the set of matched elements. Given a Cheerio object that
+ * represents a set of DOM elements, the `.not()` method constructs a new
+ * Cheerio object from a subset of the matching elements. The supplied selector
+ * is tested against each element; the elements that don't match the selector
+ * will be included in the result.
+ *
+ * The `.not()` method can take a function as its argument in the same way that
+ * `.filter()` does. Elements for which the function returns `true` are excluded
+ * from the filtered set; all other elements are included.
+ *
+ * @category Traversing
+ * @example <caption>Selector</caption>
+ *
+ * ```js
+ * $('li').not('.apple').length;
+ * //=> 2
+ * ```
+ *
+ * @example <caption>Function</caption>
+ *
+ * ```js
+ * $('li').not(function (i, el) {
+ * // this === el
+ * return $(this).attr('class') === 'orange';
+ * }).length; //=> 2
+ * ```
+ *
+ * @param match - Value to look for, following the rules above.
+ * @param container - Optional node to filter instead.
+ * @returns The filtered collection.
+ * @see {@link https://api.jquery.com/not/}
+ */
+function not(match) {
+ var nodes = this.toArray();
+ if (typeof match === 'string') {
+ var matches_1 = new Set(select.filter(match, nodes, this.options));
+ nodes = nodes.filter(function (el) { return !matches_1.has(el); });
+ }
+ else {
+ var filterFn_1 = getFilterFn(match);
+ nodes = nodes.filter(function (el, i) { return !filterFn_1(el, i); });
+ }
+ return this._make(nodes);
+}
+exports.not = not;
+/**
+ * Filters the set of matched elements to only those which have the given DOM
+ * element as a descendant or which have a descendant that matches the given
+ * selector. Equivalent to `.filter(':has(selector)')`.
+ *
+ * @category Traversing
+ * @example <caption>Selector</caption>
+ *
+ * ```js
+ * $('ul').has('.pear').attr('id');
+ * //=> fruits
+ * ```
+ *
+ * @example <caption>Element</caption>
+ *
+ * ```js
+ * $('ul').has($('.pear')[0]).attr('id');
+ * //=> fruits
+ * ```
+ *
+ * @param selectorOrHaystack - Element to look for.
+ * @returns The filtered collection.
+ * @see {@link https://api.jquery.com/has/}
+ */
+function has(selectorOrHaystack) {
+ var _this = this;
+ return this.filter(typeof selectorOrHaystack === 'string'
+ ? // Using the `:has` selector here short-circuits searches.
+ ":has(".concat(selectorOrHaystack, ")")
+ : function (_, el) { return _this._make(el).find(selectorOrHaystack).length > 0; });
+}
+exports.has = has;
+/**
+ * Will select the first element of a cheerio object.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').children().first().text();
+ * //=> Apple
+ * ```
+ *
+ * @returns The first element.
+ * @see {@link https://api.jquery.com/first/}
+ */
+function first() {
+ return this.length > 1 ? this._make(this[0]) : this;
+}
+exports.first = first;
+/**
+ * Will select the last element of a cheerio object.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('#fruits').children().last().text();
+ * //=> Pear
+ * ```
+ *
+ * @returns The last element.
+ * @see {@link https://api.jquery.com/last/}
+ */
+function last() {
+ return this.length > 0 ? this._make(this[this.length - 1]) : this;
+}
+exports.last = last;
+/**
+ * Reduce the set of matched elements to the one at the specified index. Use
+ * `.eq(-i)` to count backwards from the last selected element.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').eq(0).text();
+ * //=> Apple
+ *
+ * $('li').eq(-1).text();
+ * //=> Pear
+ * ```
+ *
+ * @param i - Index of the element to select.
+ * @returns The element at the `i`th position.
+ * @see {@link https://api.jquery.com/eq/}
+ */
+function eq(i) {
+ var _a;
+ i = +i;
+ // Use the first identity optimization if possible
+ if (i === 0 && this.length <= 1)
+ return this;
+ if (i < 0)
+ i = this.length + i;
+ return this._make((_a = this[i]) !== null && _a !== void 0 ? _a : []);
+}
+exports.eq = eq;
+function get(i) {
+ if (i == null) {
+ return this.toArray();
+ }
+ return this[i < 0 ? this.length + i : i];
+}
+exports.get = get;
+/**
+ * Retrieve all the DOM elements contained in the jQuery set as an array.
+ *
+ * @example
+ *
+ * ```js
+ * $('li').toArray();
+ * //=> [ {...}, {...}, {...} ]
+ * ```
+ *
+ * @returns The contained items.
+ */
+function toArray() {
+ return Array.prototype.slice.call(this);
+}
+exports.toArray = toArray;
+/**
+ * Search for a given element from among the matched elements.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.pear').index();
+ * //=> 2 $('.orange').index('li');
+ * //=> 1
+ * $('.apple').index($('#fruit, li'));
+ * //=> 1
+ * ```
+ *
+ * @param selectorOrNeedle - Element to look for.
+ * @returns The index of the element.
+ * @see {@link https://api.jquery.com/index/}
+ */
+function index(selectorOrNeedle) {
+ var $haystack;
+ var needle;
+ if (selectorOrNeedle == null) {
+ $haystack = this.parent().children();
+ needle = this[0];
+ }
+ else if (typeof selectorOrNeedle === 'string') {
+ $haystack = this._make(selectorOrNeedle);
+ needle = this[0];
+ }
+ else {
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
+ $haystack = this;
+ needle = (0, utils_js_1.isCheerio)(selectorOrNeedle)
+ ? selectorOrNeedle[0]
+ : selectorOrNeedle;
+ }
+ return Array.prototype.indexOf.call($haystack, needle);
+}
+exports.index = index;
+/**
+ * Gets the elements matching the specified range (0-based position).
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').slice(1).eq(0).text();
+ * //=> 'Orange'
+ *
+ * $('li').slice(1, 2).length;
+ * //=> 1
+ * ```
+ *
+ * @param start - A position at which the elements begin to be selected. If
+ * negative, it indicates an offset from the end of the set.
+ * @param end - A position at which the elements stop being selected. If
+ * negative, it indicates an offset from the end of the set. If omitted, the
+ * range continues until the end of the set.
+ * @returns The elements matching the specified range.
+ * @see {@link https://api.jquery.com/slice/}
+ */
+function slice(start, end) {
+ return this._make(Array.prototype.slice.call(this, start, end));
+}
+exports.slice = slice;
+/**
+ * End the most recent filtering operation in the current chain and return the
+ * set of matched elements to its previous state.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').eq(0).end().length;
+ * //=> 3
+ * ```
+ *
+ * @returns The previous state of the set of matched elements.
+ * @see {@link https://api.jquery.com/end/}
+ */
+function end() {
+ var _a;
+ return (_a = this.prevObject) !== null && _a !== void 0 ? _a : this._make([]);
+}
+exports.end = end;
+/**
+ * Add elements to the set of matched elements.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('.apple').add('.orange').length;
+ * //=> 2
+ * ```
+ *
+ * @param other - Elements to add.
+ * @param context - Optionally the context of the new selection.
+ * @returns The combined set.
+ * @see {@link https://api.jquery.com/add/}
+ */
+function add(other, context) {
+ var selection = this._make(other, context);
+ var contents = (0, domutils_1.uniqueSort)(__spreadArray(__spreadArray([], this.get(), true), selection.get(), true));
+ return this._make(contents);
+}
+exports.add = add;
+/**
+ * Add the previous set of elements on the stack to the current set, optionally
+ * filtered by a selector.
+ *
+ * @category Traversing
+ * @example
+ *
+ * ```js
+ * $('li').eq(0).addBack('.orange').length;
+ * //=> 2
+ * ```
+ *
+ * @param selector - Selector for the elements to add.
+ * @returns The combined set.
+ * @see {@link https://api.jquery.com/addBack/}
+ */
+function addBack(selector) {
+ return this.prevObject
+ ? this.add(selector ? this.prevObject.filter(selector) : this.prevObject)
+ : this;
+}
+exports.addBack = addBack;
+//# sourceMappingURL=traversing.js.map \ No newline at end of file
diff --git a/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.js.map b/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.js.map
new file mode 100644
index 0000000..40fbdc5
--- /dev/null
+++ b/includes/external/addressbook/node_modules/cheerio/lib/api/traversing.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"traversing.js","sourceRoot":"https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/","sources":["api/traversing.ts"],"names":[],"mappings":"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"} \ No newline at end of file