@limetech/lime-elements 39.44.5 → 39.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/cjs/{keycodes-B75-uKOK.js → keycodes-k-EdzcMX.js} +4 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-breadcrumbs_8.cjs.entry.js +20 -1
- package/dist/cjs/limel-chip-set.cjs.entry.js +1 -1
- package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-file-viewer.cjs.entry.js +84 -8
- package/dist/cjs/limel-markdown.cjs.entry.js +1 -1
- package/dist/cjs/limel-picker.cjs.entry.js +1 -1
- package/dist/cjs/limel-popover_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +778 -395
- package/dist/cjs/limel-select.cjs.entry.js +377 -13
- package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{markdown-parser-ChnRAxpZ.js → markdown-parser-YH5HSSgF.js} +36 -56
- package/dist/collection/components/list/list.js +19 -0
- package/dist/collection/components/select/select.js +215 -12
- package/dist/collection/components/select/select.template.js +17 -3
- package/dist/collection/components/text-editor/prosemirror-adapter/editor-config.js +12 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-command-utils/active-state-utils.js +36 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-command-utils/list-utils.js +270 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-command-utils/node-utils.js +15 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/menu/menu-commands.js +81 -69
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/list-key-handler.js +44 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +4 -3
- package/dist/collection/util/keycodes.js +3 -0
- package/dist/collection/util/typeahead.js +159 -0
- package/dist/esm/{keycodes-rI0IeKpx.js → keycodes-C4_9qUMP.js} +4 -1
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/limel-breadcrumbs_8.entry.js +20 -1
- package/dist/esm/limel-chip-set.entry.js +1 -1
- package/dist/esm/limel-chip_2.entry.js +1 -1
- package/dist/esm/limel-file-viewer.entry.js +84 -8
- package/dist/esm/limel-markdown.entry.js +1 -1
- package/dist/esm/limel-picker.entry.js +1 -1
- package/dist/esm/limel-popover_2.entry.js +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +779 -396
- package/dist/esm/limel-select.entry.js +378 -14
- package/dist/esm/limel-text-editor-link-menu.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{markdown-parser-BSQKleVw.js → markdown-parser-DrxxGLF5.js} +36 -56
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/{p-a089b580.entry.js → p-03fd2181.entry.js} +1 -1
- package/dist/lime-elements/{p-fc43fb46.entry.js → p-12fe8fe1.entry.js} +6 -6
- package/dist/lime-elements/p-1f29f482.entry.js +1 -0
- package/dist/lime-elements/{p-bf3c78a8.entry.js → p-2b01c1f2.entry.js} +1 -1
- package/dist/lime-elements/{p-758939be.entry.js → p-2e5d5e79.entry.js} +1 -1
- package/dist/lime-elements/{p-3ea159fd.entry.js → p-38393fb4.entry.js} +1 -1
- package/dist/lime-elements/p-9152d7e1.entry.js +23 -0
- package/dist/lime-elements/{p-1e3cdfa1.entry.js → p-9a04a686.entry.js} +1 -1
- package/dist/lime-elements/p-C4_9qUMP.js +1 -0
- package/dist/lime-elements/{p-B0qhUema.js → p-C9xHOCE_.js} +2 -2
- package/dist/lime-elements/{p-6fbf20c6.entry.js → p-e8df7a2e.entry.js} +1 -1
- package/dist/lime-elements/p-f51b5651.entry.js +1 -0
- package/dist/types/components/select/select.d.ts +76 -1
- package/dist/types/components/select/select.template.d.ts +21 -1
- package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-command-utils/active-state-utils.d.ts +6 -0
- package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-command-utils/list-utils.d.ts +68 -0
- package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-command-utils/node-utils.d.ts +10 -0
- package/dist/types/components/text-editor/prosemirror-adapter/menu/menu-commands.d.ts +10 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/list-key-handler.d.ts +14 -0
- package/dist/types/components.d.ts +36 -0
- package/dist/types/util/keycodes.d.ts +3 -0
- package/dist/types/util/typeahead.d.ts +101 -0
- package/package.json +3 -3
- package/dist/lime-elements/p-552d0733.entry.js +0 -1
- package/dist/lime-elements/p-845cfda7.entry.js +0 -1
- package/dist/lime-elements/p-8f4273e4.entry.js +0 -23
- package/dist/lime-elements/p-rI0IeKpx.js +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Plugin, PluginKey } from 'prosemirror-state';
|
|
2
|
+
import { Schema } from 'prosemirror-model';
|
|
3
|
+
export declare const listKeyHandlerPluginKey: PluginKey<any>;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a plugin for handling Tab and Shift+Tab inside list items:
|
|
6
|
+
* Tab indents the item and Shift+Tab outdents it. Enter and Backspace
|
|
7
|
+
* are handled by the base keymap (splitListItem and joinBackward), which
|
|
8
|
+
* runs before this plugin.
|
|
9
|
+
*
|
|
10
|
+
* @param schema - The document schema
|
|
11
|
+
* @returns A ProseMirror plugin for handling list-specific key events
|
|
12
|
+
*/
|
|
13
|
+
export declare function createListKeyHandlerPlugin(schema: Schema): Plugin<any>;
|
|
14
|
+
//# sourceMappingURL=list-key-handler.d.ts.map
|
|
@@ -3322,6 +3322,15 @@ export namespace Components {
|
|
|
3322
3322
|
"selectedItem"?: ListItem<string | number>;
|
|
3323
3323
|
}
|
|
3324
3324
|
/**
|
|
3325
|
+
* ## Keyboard
|
|
3326
|
+
* Typing characters jumps to the option whose text starts with them, the way
|
|
3327
|
+
* a native `<select>` does. Characters accumulate for a short while, so typing
|
|
3328
|
+
* `n`, `e` finds "Netherlands" rather than the next option starting with `n`.
|
|
3329
|
+
* Pressing the same character repeatedly cycles through all options starting
|
|
3330
|
+
* with it. This works both while the dropdown is open, and while the closed
|
|
3331
|
+
* component has focus — in which case the dropdown opens with the match
|
|
3332
|
+
* highlighted. Typing only moves the highlight; the value is not changed until
|
|
3333
|
+
* the option is picked with `Enter` or a click.
|
|
3325
3334
|
* @exampleComponent limel-example-select-basic
|
|
3326
3335
|
* @exampleComponent limel-example-select-with-icons
|
|
3327
3336
|
* @exampleComponent limel-example-select-with-separators
|
|
@@ -6133,6 +6142,15 @@ declare global {
|
|
|
6133
6142
|
"change": Option | Option[];
|
|
6134
6143
|
}
|
|
6135
6144
|
/**
|
|
6145
|
+
* ## Keyboard
|
|
6146
|
+
* Typing characters jumps to the option whose text starts with them, the way
|
|
6147
|
+
* a native `<select>` does. Characters accumulate for a short while, so typing
|
|
6148
|
+
* `n`, `e` finds "Netherlands" rather than the next option starting with `n`.
|
|
6149
|
+
* Pressing the same character repeatedly cycles through all options starting
|
|
6150
|
+
* with it. This works both while the dropdown is open, and while the closed
|
|
6151
|
+
* component has focus — in which case the dropdown opens with the match
|
|
6152
|
+
* highlighted. Typing only moves the highlight; the value is not changed until
|
|
6153
|
+
* the option is picked with `Enter` or a click.
|
|
6136
6154
|
* @exampleComponent limel-example-select-basic
|
|
6137
6155
|
* @exampleComponent limel-example-select-with-icons
|
|
6138
6156
|
* @exampleComponent limel-example-select-with-separators
|
|
@@ -10066,6 +10084,15 @@ declare namespace LocalJSX {
|
|
|
10066
10084
|
"selectedItem"?: ListItem<string | number>;
|
|
10067
10085
|
}
|
|
10068
10086
|
/**
|
|
10087
|
+
* ## Keyboard
|
|
10088
|
+
* Typing characters jumps to the option whose text starts with them, the way
|
|
10089
|
+
* a native `<select>` does. Characters accumulate for a short while, so typing
|
|
10090
|
+
* `n`, `e` finds "Netherlands" rather than the next option starting with `n`.
|
|
10091
|
+
* Pressing the same character repeatedly cycles through all options starting
|
|
10092
|
+
* with it. This works both while the dropdown is open, and while the closed
|
|
10093
|
+
* component has focus — in which case the dropdown opens with the match
|
|
10094
|
+
* highlighted. Typing only moves the highlight; the value is not changed until
|
|
10095
|
+
* the option is picked with `Enter` or a click.
|
|
10069
10096
|
* @exampleComponent limel-example-select-basic
|
|
10070
10097
|
* @exampleComponent limel-example-select-with-icons
|
|
10071
10098
|
* @exampleComponent limel-example-select-with-separators
|
|
@@ -12709,6 +12736,15 @@ declare module "@stencil/core" {
|
|
|
12709
12736
|
*/
|
|
12710
12737
|
"limel-radio-button-group": LocalJSX.IntrinsicElements["limel-radio-button-group"] & JSXBase.HTMLAttributes<HTMLLimelRadioButtonGroupElement>;
|
|
12711
12738
|
/**
|
|
12739
|
+
* ## Keyboard
|
|
12740
|
+
* Typing characters jumps to the option whose text starts with them, the way
|
|
12741
|
+
* a native `<select>` does. Characters accumulate for a short while, so typing
|
|
12742
|
+
* `n`, `e` finds "Netherlands" rather than the next option starting with `n`.
|
|
12743
|
+
* Pressing the same character repeatedly cycles through all options starting
|
|
12744
|
+
* with it. This works both while the dropdown is open, and while the closed
|
|
12745
|
+
* component has focus — in which case the dropdown opens with the match
|
|
12746
|
+
* highlighted. Typing only moves the highlight; the value is not changed until
|
|
12747
|
+
* the option is picked with `Enter` or a click.
|
|
12712
12748
|
* @exampleComponent limel-example-select-basic
|
|
12713
12749
|
* @exampleComponent limel-example-select-with-icons
|
|
12714
12750
|
* @exampleComponent limel-example-select-with-separators
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export declare const TAB = "Tab";
|
|
2
2
|
export declare const ENTER = "Enter";
|
|
3
3
|
export declare const ESCAPE = "Escape";
|
|
4
|
+
/** `KeyboardEvent.code` for the space bar. NOT a `KeyboardEvent.key`. */
|
|
4
5
|
export declare const SPACE = "Space";
|
|
6
|
+
/** `KeyboardEvent.key` for the space bar. */
|
|
7
|
+
export declare const SPACEBAR = " ";
|
|
5
8
|
export declare const BACKSPACE = "Backspace";
|
|
6
9
|
export declare const DELETE = "Delete";
|
|
7
10
|
export declare const ARROW_UP = "ArrowUp";
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These helpers implement "type to jump", the behavior a native `<select>` has:
|
|
3
|
+
* typing characters moves to the option whose text starts with those
|
|
4
|
+
* characters. Characters accumulate into a short-lived buffer, so typing
|
|
5
|
+
* `n`, `e` finds "Netherlands" instead of re-matching on `n` every time.
|
|
6
|
+
*
|
|
7
|
+
* The matching itself is pure and stateless — all the state lives in a
|
|
8
|
+
* `TypeaheadBuffer`, which owns the timer that discards the buffer once the
|
|
9
|
+
* user stops typing.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* How long a buffer of typed characters is kept before it is discarded, in
|
|
13
|
+
* milliseconds. Roughly matches a native `<select>`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const TYPEAHEAD_BUFFER_TIMEOUT = 1000;
|
|
16
|
+
/**
|
|
17
|
+
* Returned by `findTypeaheadMatch` when nothing matched.
|
|
18
|
+
*/
|
|
19
|
+
export declare const NO_TYPEAHEAD_MATCH = -1;
|
|
20
|
+
/**
|
|
21
|
+
* An entry that typeahead can match the typed characters against.
|
|
22
|
+
*/
|
|
23
|
+
export interface TypeaheadCandidate {
|
|
24
|
+
/**
|
|
25
|
+
* The text to match against. Candidates without text never match.
|
|
26
|
+
*/
|
|
27
|
+
readonly text?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Disabled candidates are never matched.
|
|
30
|
+
*/
|
|
31
|
+
readonly disabled?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Whether a keyboard event should be treated as a typed character.
|
|
35
|
+
*
|
|
36
|
+
* The space bar counts as a character here. Whether a *bare* space should
|
|
37
|
+
* start a buffer, or keep whatever meaning it has in the consuming component,
|
|
38
|
+
* is the consumer's decision.
|
|
39
|
+
*
|
|
40
|
+
* `shiftKey` is allowed, since capital letters are typed with it, and
|
|
41
|
+
* `event.repeat` is allowed, since holding a key down cycles through matches
|
|
42
|
+
* in a native `<select>` too.
|
|
43
|
+
*
|
|
44
|
+
* @param event - the keyboard event to inspect
|
|
45
|
+
* @returns `true` when the event represents a typed character
|
|
46
|
+
*/
|
|
47
|
+
export declare function isTypeaheadKey(event: KeyboardEvent): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Find the candidate to move to for a given buffer of typed characters.
|
|
50
|
+
*
|
|
51
|
+
* Two different searches are used, mirroring a native `<select>`:
|
|
52
|
+
* - When the buffer is a single character, possibly repeated (`b`, `bb`,
|
|
53
|
+
* `bbb`), only that character is matched and the search starts *after*
|
|
54
|
+
* `currentIndex`. Pressing the same key repeatedly therefore cycles through
|
|
55
|
+
* all candidates starting with it.
|
|
56
|
+
* - Otherwise the whole buffer is matched and the search starts *at*
|
|
57
|
+
* `currentIndex`, so continuing to type on an already-matching candidate
|
|
58
|
+
* keeps it rather than jumping to the next one.
|
|
59
|
+
*
|
|
60
|
+
* Both searches wrap around the end of the list.
|
|
61
|
+
*
|
|
62
|
+
* @param candidates - the candidates to search, index-aligned with the rows
|
|
63
|
+
* they are rendered as. Use `null` for rows that can never match, such as
|
|
64
|
+
* separators, so that they still occupy their index.
|
|
65
|
+
* @param buffer - the characters typed so far
|
|
66
|
+
* @param currentIndex - the index to search from. Anything outside
|
|
67
|
+
* `candidates` is treated as "no current candidate", and the search starts
|
|
68
|
+
* from the beginning.
|
|
69
|
+
* @returns the index of the matching candidate, or `NO_TYPEAHEAD_MATCH`
|
|
70
|
+
*/
|
|
71
|
+
export declare function findTypeaheadMatch(candidates: ReadonlyArray<TypeaheadCandidate | null>, buffer: string, currentIndex: number): number;
|
|
72
|
+
/**
|
|
73
|
+
* Accumulates typed characters, and discards them again once the user stops
|
|
74
|
+
* typing for `TYPEAHEAD_BUFFER_TIMEOUT`.
|
|
75
|
+
*/
|
|
76
|
+
export declare class TypeaheadBuffer {
|
|
77
|
+
private buffer;
|
|
78
|
+
private resetTimeoutId;
|
|
79
|
+
private readonly timeout;
|
|
80
|
+
constructor(timeout?: number);
|
|
81
|
+
/**
|
|
82
|
+
* The characters typed so far.
|
|
83
|
+
*/
|
|
84
|
+
get value(): string;
|
|
85
|
+
/**
|
|
86
|
+
* Whether nothing has been typed, or the buffer has been discarded.
|
|
87
|
+
*/
|
|
88
|
+
get isEmpty(): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Append a character, and restart the timer that discards the buffer.
|
|
91
|
+
*
|
|
92
|
+
* @param character - the character to append
|
|
93
|
+
* @returns the buffer, including the appended character
|
|
94
|
+
*/
|
|
95
|
+
append(character: string): string;
|
|
96
|
+
/**
|
|
97
|
+
* Discard the buffer, and cancel the timer that would have discarded it.
|
|
98
|
+
*/
|
|
99
|
+
clear(): void;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=typeahead.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@limetech/lime-elements",
|
|
3
|
-
"version": "39.
|
|
3
|
+
"version": "39.45.0",
|
|
4
4
|
"description": "Lime Elements",
|
|
5
5
|
"author": "Lime Technologies",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"morphdom": "^2.7.8",
|
|
91
91
|
"number-abbreviate": "^2.0.0",
|
|
92
92
|
"parse-css-color": "^0.2.1",
|
|
93
|
-
"postal-mime": "^2.7.
|
|
93
|
+
"postal-mime": "^2.7.6",
|
|
94
94
|
"prettier": "^3.8.3",
|
|
95
95
|
"prosemirror-example-setup": "^1.2.3",
|
|
96
96
|
"prosemirror-markdown": "^1.13.5",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"shx": "^0.4.0",
|
|
113
113
|
"sirv": "^3.0.2",
|
|
114
114
|
"sortablejs": "^1.15.7",
|
|
115
|
-
"style-to-object": "^
|
|
115
|
+
"style-to-object": "^2.0.2",
|
|
116
116
|
"tabulator-tables": "^6.5.2",
|
|
117
117
|
"typescript": "^4.9.5",
|
|
118
118
|
"unified": "^11.0.5",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,c as t,h as r,F as i,a as s}from"./p-BGxJfR2f.js";import{t as a}from"./p-Cb9R_zmF.js";import{d as o,u as n,r as l,a as c,v as u,b as h}from"./p-DMNtoJ8I.js";import{I as p}from"./p-Dpg0OkbJ.js";import"./p-B85MJLTf.js";function d(e,t){const r=e||t;return r&&{pdf:"pdf",jpg:"image",jpeg:"image",heic:"image",bmp:"image",png:"image",gif:"image",svg:"image",svgz:"image",ep:"image",eps:"image",avi:"video",flv:"video",h264:"video",mov:"video",mp4:"video",mwv:"video",mkv:"video",mp3:"audio",wav:"audio",wma:"audio",ogg:"audio",txt:"text",json:"text",html:"text",xml:"text",eml:"email",doc:"office",docx:"office",odt:"office",dot:"office",dotx:"office",docm:"office",dotm:"office",pot:"office",ppt:"office",pptx:"office",odp:"office",potx:"office",potm:"office",pps:"office",ppsx:"office",ppsm:"office",pptm:"office",ppam:"office",pages:"office",xls:"office",xlsx:"office",xlsm:"office",xlsb:"office",ods:"office",csv:"office",numbers:"office"}[r.split(".").pop().toLowerCase()]||"unknown"}class f{constructor(e){this.requestFullscreen=()=>{this.enter&&this.enter()},this.exitFullscreen=()=>{this.exit&&this.exit.bind(window.document)()},this.toggle=()=>{const e=window.document;e.fullscreenElement||e.mozFullScreenElement||e.webkitFullscreenElement||e.msFullscreenElement?this.exitFullscreen():this.requestFullscreen()},this.enter=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.enter&&(this.enter=this.enter.bind(e));const t=window.document;this.exit=t.exitFullscreen||t.msExitFullscreen||t.mozCancelFullScreen||t.webkitExitFullscreen}isSupported(){return!!this.enter}}const m=new TextEncoder,g=new Uint8Array(256);for(let e=0;e<64;e++)g["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;function b(e){let t=3*Math.ceil(e.length/4);const r=e.length;let i=0;e.length%4==3?t--:e.length%4==2?t-=2:"="===e[e.length-1]&&(t--,"="===e[e.length-2]&&t--);const s=new ArrayBuffer(t),a=new Uint8Array(s);for(let t=0;t<r;t+=4){let r=g[e.charCodeAt(t)],s=g[e.charCodeAt(t+1)],o=g[e.charCodeAt(t+2)],n=g[e.charCodeAt(t+3)];a[i++]=r<<2|s>>4,a[i++]=(15&s)<<4|o>>2,a[i++]=(3&o)<<6|63&n}return s}function v(e){let t;e=e||"utf8";try{t=new TextDecoder(e)}catch(e){t=new TextDecoder("windows-1252")}return t}async function w(e){if("arrayBuffer"in e)return await e.arrayBuffer();const t=new FileReader;return new Promise(((r,i)=>{t.onload=function(e){r(e.target.result)},t.onerror=function(){i(t.error)},t.readAsArrayBuffer(e)}))}function y(e){return(e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70)&&String.fromCharCode(e)}function q(e,t,r){let i,s=e.indexOf("*");if(s>=0&&(e=e.substr(0,s)),"Q"===(t=t.toUpperCase())){r=r.replace(/=\s+([0-9a-fA-F])/g,"=$1").replace(/[_\s]/g," ");let e=m.encode(r),t=[];for(let r=0,i=e.length;r<i;r++){let s=e[r];if(r<=i-2&&61===s){let i=y(e[r+1]),s=y(e[r+2]);if(i&&s){let e=parseInt(i+s,16);t.push(e),r+=2;continue}}t.push(s)}i=new ArrayBuffer(t.length);let s=new DataView(i);for(let e=0,r=t.length;e<r;e++)s.setUint8(e,t[e])}else i="B"===t?b(r.replace(/[^a-zA-Z0-9\+\/=]+/g,"")):m.encode(r);return v(e).decode(i)}function x(e){let t=!0;for(;;){let r=(e||"").toString().replace(/(=\?([^?]+)\?[Bb]\?([^?]*)\?=)\s*(?==\?([^?]+)\?[Bb]\?[^?]*\?=)/g,((e,r,i,s,a)=>t?i!==a||s.length%4!=0||/=$/.test(s)?e:r+"__\0JOIN\0__":e)).replace(/(=\?([^?]+)\?[Qq]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Qq]\?[^?]*\?=)/g,((e,r,i,s)=>t&&i===s?r+"__\0JOIN\0__":e)).replace(/(\?=)?__\x00JOIN\x00__(=\?([^?]+)\?[QqBb]\?)?/g,"").replace(/(=\?[^?]+\?[QqBb]\?[^?]*\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]*\?=)/g,"$1").replace(/=\?([\w_\-*]+)\?([QqBb])\?([^?]*)\?=/g,((e,t,r,i)=>q(t,r,i)));if(!(t&&r.indexOf("�")>=0))return r;t=!1}}class k{constructor(){this.chunks=[]}update(e){this.chunks.push(e),this.chunks.push("\n")}finalize(){return w(new Blob(this.chunks,{type:"application/octet-stream"}))}}class E{constructor(e){this.decoder=(e=e||{}).decoder||new TextDecoder,this.maxChunkSize=102400,this.chunks=[],this.remainder=""}update(e){let t=this.decoder.decode(e);if(t=t.replace(/[^a-zA-Z0-9+\/]+/g,""),this.remainder+=t,this.remainder.length>=this.maxChunkSize){let e,t=4*Math.floor(this.remainder.length/4);t===this.remainder.length?(e=this.remainder,this.remainder=""):(e=this.remainder.substr(0,t),this.remainder=this.remainder.substr(t)),e.length&&this.chunks.push(b(e))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push(b(this.remainder)),w(new Blob(this.chunks,{type:"application/octet-stream"}))}}const D=/^=[a-f0-9]{2}$/i,A=/(?==[a-f0-9]{2})/i,L=/=\r?\n/g,S=/=[a-fA-F0-9]?$/;class T{constructor(e){this.decoder=(e=e||{}).decoder||new TextDecoder,this.maxChunkSize=102400,this.remainder="",this.chunks=[]}decodeQPBytes(e){let t=new ArrayBuffer(e.length),r=new DataView(t);for(let t=0,i=e.length;t<i;t++)r.setUint8(t,parseInt(e[t],16));return t}decodeChunks(e){let t=(e=e.replace(L,"")).split(A),r=[];for(let e of t)if("="===e.charAt(0))if(3!==e.length){if(e.length>3){const t=e.substr(0,3);D.test(t)?(r.push(e.substr(1,2)),this.chunks.push(this.decodeQPBytes(r)),r=[],e=e.substr(3),this.chunks.push(e)):(r.length&&(this.chunks.push(this.decodeQPBytes(r)),r=[]),this.chunks.push(e))}}else D.test(e)?r.push(e.substr(1)):(r.length&&(this.chunks.push(this.decodeQPBytes(r)),r=[]),this.chunks.push(e));else r.length&&(this.chunks.push(this.decodeQPBytes(r)),r=[]),this.chunks.push(e);r.length&&this.chunks.push(this.decodeQPBytes(r))}update(e){let t=this.decoder.decode(e)+"\n";if(t=this.remainder+t,t.length<this.maxChunkSize)return void(this.remainder=t);this.remainder="";let r=t.match(S);if(r){if(0===r.index)return void(this.remainder=t);this.remainder=t.substr(r.index),t=t.substr(0,r.index)}this.decodeChunks(t)}finalize(){return this.remainder.length&&(this.decodeChunks(this.remainder),this.remainder=""),w(new Blob(this.chunks,{type:"application/octet-stream"}))}}const N=v();class R{constructor(e){if(this.options=e||{},this.postalMime=this.options.postalMime,this.root=!!this.options.parentNode,this.childNodes=[],this.options.parentNode){if(this.parentNode=this.options.parentNode,this.depth=this.parentNode.depth+1,this.depth>this.options.maxNestingDepth)throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);this.options.parentNode.childNodes.push(this)}else this.depth=0;this.state="header",this.headerLines=[],this.headerSize=0,this.contentType={value:"digest"===(this.options.parentMultipartType||null)?"message/rfc822":"text/plain",default:!0},this.contentTransferEncoding={value:"8bit"},this.contentDisposition={value:""},this.headers=[],this.contentDecoder=!1}setupContentDecoder(e){this.contentDecoder=/base64/i.test(e)?new E:/quoted-printable/i.test(e)?new T({decoder:v(this.contentType.parsed.params.charset)}):new k}async finalize(){if("finished"===this.state)return;"header"===this.state&&this.processHeaders();let e=this.postalMime.boundaries;for(let t=e.length-1;t>=0;t--)if(e[t].node===this){e.splice(t,1);break}await this.finalizeChildNodes(),this.content=this.contentDecoder?await this.contentDecoder.finalize():null,this.state="finished"}async finalizeChildNodes(){for(let e of this.childNodes)await e.finalize()}stripComments(e){let t="",r=0,i=!1,s=!1;for(let a=0;a<e.length;a++){const o=e.charAt(a);if(i)0===r&&(t+=o),i=!1;else if("\\"!==o)if('"'!==o||0!==r){if(!s){if("("===o){r++;continue}if(")"===o&&r>0){r--;continue}}0===r&&(t+=o)}else s=!s,t+=o;else i=!0,0===r&&(t+=o)}return t}parseStructuredHeader(e){let t,r={value:!1,params:{}},i=!1,s="",a="value",o=!1,n=!1;for(let l=0,c=(e=this.stripComments(e)).length;l<c;l++)switch(t=e.charAt(l),a){case"key":if("="===t){i=s.trim().toLowerCase(),a="value",s="";break}s+=t;break;case"value":if(n)s+=t;else{if("\\"===t){n=!0;continue}o&&t===o?o=!1:o||'"'!==t?o||";"!==t?s+=t:(!1===i?r.value=s.trim():r.params[i]=s.trim(),a="key",s=""):o=t}n=!1}return s=s.trim(),"value"===a?!1===i?r.value=s:r.params[i]=s:s&&(r.params[s.toLowerCase()]=""),r.value&&(r.value=r.value.toLowerCase()),function(e){let t=new Map;Object.keys(e.params).forEach((r=>{let i=r.match(/\*((\d+)\*?)?$/);if(!i)return;let s,a=r.substr(0,i.index).toLowerCase(),o=Number(i[2])||0;t.has(a)?s=t.get(a):(s={charset:!1,values:[]},t.set(a,s));let n=e.params[r];0===o&&"*"===i[0].charAt(i[0].length-1)&&(i=n.match(/^([^']*)'[^']*'(.*)$/))&&(s.charset=i[1]||"utf-8",n=i[2]),s.values.push({nr:o,value:n}),delete e.params[r]})),t.forEach(((t,r)=>{e.params[r]=function(e,t){t=t||"utf-8";let r=[];for(let t=0;t<e.length;t++){let i=e.charAt(t);if("%"===i&&/^[a-f0-9]{2}/i.test(e.substr(t+1,2))){let i=e.substr(t+1,2);t+=2,r.push(parseInt(i,16))}else if(i.charCodeAt(0)>126){i=m.encode(i);for(let e=0;e<i.length;e++)r.push(i[e])}else r.push(i.charCodeAt(0))}const i=new ArrayBuffer(r.length),s=new DataView(i);for(let e=0,t=r.length;e<t;e++)s.setUint8(e,r[e]);return v(t).decode(i)}(t.values.sort(((e,t)=>e.nr-t.nr)).map((e=>e.value)).join(""),t.charset)}))}(r),r}decodeFlowedText(e,t){return e.split(/\r?\n/).reduce(((e,r)=>e.endsWith(" ")&&"-- "!==e&&!e.endsWith("\n-- ")?t?e.slice(0,-1)+r:e+r:e+"\n"+r)).replace(/^ /gm,"")}getTextContent(){if(!this.content)return"";let e=v(this.contentType.parsed.params.charset).decode(this.content);return/^flowed$/i.test(this.contentType.parsed.params.format)&&(e=this.decodeFlowedText(e,/^yes$/i.test(this.contentType.parsed.params.delsp))),e}processHeaders(){for(let e=this.headerLines.length-1;e>=0;e--){let t=this.headerLines[e];e&&/^\s/.test(t)&&(this.headerLines[e-1]+="\n"+t,this.headerLines.splice(e,1))}this.rawHeaderLines=[];for(let e=this.headerLines.length-1;e>=0;e--){let t=this.headerLines[e],r=t.indexOf(":"),i=r<0?t.trim():t.substr(0,r).trim();this.rawHeaderLines.push({key:i.toLowerCase(),line:t});let s=t.replace(/\s+/g," ");r=s.indexOf(":");let a=r<0?s.trim():s.substr(0,r).trim(),o=r<0?"":s.substr(r+1).trim();switch(this.headers.push({key:a.toLowerCase(),originalKey:a,value:o}),a.toLowerCase()){case"content-type":this.contentType.default&&(this.contentType={value:o,parsed:{}});break;case"content-transfer-encoding":this.contentTransferEncoding={value:o,parsed:{}};break;case"content-disposition":this.contentDisposition={value:o,parsed:{}};break;case"content-id":this.contentId=o;break;case"content-description":this.contentDescription=o}}this.contentType.parsed=this.parseStructuredHeader(this.contentType.value),this.contentType.multipart=!!/^multipart\//i.test(this.contentType.parsed.value)&&this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf("/")+1),this.contentType.multipart&&this.contentType.parsed.params.boundary&&this.postalMime.boundaries.push({value:m.encode(this.contentType.parsed.params.boundary),node:this}),this.contentDisposition.parsed=this.parseStructuredHeader(this.contentDisposition.value),this.contentTransferEncoding.encoding=this.contentTransferEncoding.value.toLowerCase().split(/[^\w-]/).shift(),this.setupContentDecoder(this.contentTransferEncoding.encoding)}feed(e){switch(this.state){case"header":if(!e.length)return this.state="body",this.processHeaders();if(this.headerSize+=e.length,this.headerSize>this.options.maxHeadersSize)throw new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);this.headerLines.push(N.decode(e));break;case"body":this.contentDecoder.update(e)}}}const U={"Æ":"Æ","Æ":"Æ","&":"&","&":"&","Á":"Á","Á":"Á","Ă":"Ă","Â":"Â","Â":"Â","А":"А","𝔄":"𝔄","À":"À","À":"À","Α":"Α","Ā":"Ā","⩓":"⩓","Ą":"Ą","𝔸":"𝔸","⁡":"","Å":"Å","Å":"Å","𝒜":"𝒜","≔":"≔","Ã":"Ã","Ã":"Ã","Ä":"Ä","Ä":"Ä","∖":"∖","⫧":"⫧","⌆":"⌆","Б":"Б","∵":"∵","ℬ":"ℬ","Β":"Β","𝔅":"𝔅","𝔹":"𝔹","˘":"˘","ℬ":"ℬ","≎":"≎","Ч":"Ч","©":"©","©":"©","Ć":"Ć","⋒":"⋒","ⅅ":"ⅅ","ℭ":"ℭ","Č":"Č","Ç":"Ç","Ç":"Ç","Ĉ":"Ĉ","∰":"∰","Ċ":"Ċ","¸":"¸","·":"·","ℭ":"ℭ","Χ":"Χ","⊙":"⊙","⊖":"⊖","⊕":"⊕","⊗":"⊗","∲":"∲","”":"”","’":"’","∷":"∷","⩴":"⩴","≡":"≡","∯":"∯","∮":"∮","ℂ":"ℂ","∐":"∐","∳":"∳","⨯":"⨯","𝒞":"𝒞","⋓":"⋓","≍":"≍","ⅅ":"ⅅ","⤑":"⤑","Ђ":"Ђ","Ѕ":"Ѕ","Џ":"Џ","‡":"‡","↡":"↡","⫤":"⫤","Ď":"Ď","Д":"Д","∇":"∇","Δ":"Δ","𝔇":"𝔇","´":"´","˙":"˙","˝":"˝","`":"`","˜":"˜","⋄":"⋄","ⅆ":"ⅆ","𝔻":"𝔻","¨":"¨","⃜":"⃜","≐":"≐","∯":"∯","¨":"¨","⇓":"⇓","⇐":"⇐","⇔":"⇔","⫤":"⫤","⟸":"⟸","⟺":"⟺","⟹":"⟹","⇒":"⇒","⊨":"⊨","⇑":"⇑","⇕":"⇕","∥":"∥","↓":"↓","⤓":"⤓","⇵":"⇵","̑":"̑","⥐":"⥐","⥞":"⥞","↽":"↽","⥖":"⥖","⥟":"⥟","⇁":"⇁","⥗":"⥗","⊤":"⊤","↧":"↧","⇓":"⇓","𝒟":"𝒟","Đ":"Đ","Ŋ":"Ŋ","Ð":"Ð","Ð":"Ð","É":"É","É":"É","Ě":"Ě","Ê":"Ê","Ê":"Ê","Э":"Э","Ė":"Ė","𝔈":"𝔈","È":"È","È":"È","∈":"∈","Ē":"Ē","◻":"◻","▫":"▫","Ę":"Ę","𝔼":"𝔼","Ε":"Ε","⩵":"⩵","≂":"≂","⇌":"⇌","ℰ":"ℰ","⩳":"⩳","Η":"Η","Ë":"Ë","Ë":"Ë","∃":"∃","ⅇ":"ⅇ","Ф":"Ф","𝔉":"𝔉","◼":"◼","▪":"▪","𝔽":"𝔽","∀":"∀","ℱ":"ℱ","ℱ":"ℱ","Ѓ":"Ѓ",">":">",">":">","Γ":"Γ","Ϝ":"Ϝ","Ğ":"Ğ","Ģ":"Ģ","Ĝ":"Ĝ","Г":"Г","Ġ":"Ġ","𝔊":"𝔊","⋙":"⋙","𝔾":"𝔾","≥":"≥","⋛":"⋛","≧":"≧","⪢":"⪢","≷":"≷","⩾":"⩾","≳":"≳","𝒢":"𝒢","≫":"≫","Ъ":"Ъ","ˇ":"ˇ","^":"^","Ĥ":"Ĥ","ℌ":"ℌ","ℋ":"ℋ","ℍ":"ℍ","─":"─","ℋ":"ℋ","Ħ":"Ħ","≎":"≎","≏":"≏","Е":"Е","IJ":"IJ","Ё":"Ё","Í":"Í","Í":"Í","Î":"Î","Î":"Î","И":"И","İ":"İ","ℑ":"ℑ","Ì":"Ì","Ì":"Ì","ℑ":"ℑ","Ī":"Ī","ⅈ":"ⅈ","⇒":"⇒","∬":"∬","∫":"∫","⋂":"⋂","⁣":"","⁢":"","Į":"Į","𝕀":"𝕀","Ι":"Ι","ℐ":"ℐ","Ĩ":"Ĩ","І":"І","Ï":"Ï","Ï":"Ï","Ĵ":"Ĵ","Й":"Й","𝔍":"𝔍","𝕁":"𝕁","𝒥":"𝒥","Ј":"Ј","Є":"Є","Х":"Х","Ќ":"Ќ","Κ":"Κ","Ķ":"Ķ","К":"К","𝔎":"𝔎","𝕂":"𝕂","𝒦":"𝒦","Љ":"Љ","<":"<","<":"<","Ĺ":"Ĺ","Λ":"Λ","⟪":"⟪","ℒ":"ℒ","↞":"↞","Ľ":"Ľ","Ļ":"Ļ","Л":"Л","⟨":"⟨","←":"←","⇤":"⇤","⇆":"⇆","⌈":"⌈","⟦":"⟦","⥡":"⥡","⇃":"⇃","⥙":"⥙","⌊":"⌊","↔":"↔","⥎":"⥎","⊣":"⊣","↤":"↤","⥚":"⥚","⊲":"⊲","⧏":"⧏","⊴":"⊴","⥑":"⥑","⥠":"⥠","↿":"↿","⥘":"⥘","↼":"↼","⥒":"⥒","⇐":"⇐","⇔":"⇔","⋚":"⋚","≦":"≦","≶":"≶","⪡":"⪡","⩽":"⩽","≲":"≲","𝔏":"𝔏","⋘":"⋘","⇚":"⇚","Ŀ":"Ŀ","⟵":"⟵","⟷":"⟷","⟶":"⟶","⟸":"⟸","⟺":"⟺","⟹":"⟹","𝕃":"𝕃","↙":"↙","↘":"↘","ℒ":"ℒ","↰":"↰","Ł":"Ł","≪":"≪","⤅":"⤅","М":"М"," ":" ","ℳ":"ℳ","𝔐":"𝔐","∓":"∓","𝕄":"𝕄","ℳ":"ℳ","Μ":"Μ","Њ":"Њ","Ń":"Ń","Ň":"Ň","Ņ":"Ņ","Н":"Н","​":"","​":"","​":"","​":"","≫":"≫","≪":"≪","
":"\n","𝔑":"𝔑","⁠":""," ":" ","ℕ":"ℕ","⫬":"⫬","≢":"≢","≭":"≭","∦":"∦","∉":"∉","≠":"≠","≂̸":"≂̸","∄":"∄","≯":"≯","≱":"≱","≧̸":"≧̸","≫̸":"≫̸","≹":"≹","⩾̸":"⩾̸","≵":"≵","≎̸":"≎̸","≏̸":"≏̸","⋪":"⋪","⧏̸":"⧏̸","⋬":"⋬","≮":"≮","≰":"≰","≸":"≸","≪̸":"≪̸","⩽̸":"⩽̸","≴":"≴","⪢̸":"⪢̸","⪡̸":"⪡̸","⊀":"⊀","⪯̸":"⪯̸","⋠":"⋠","∌":"∌","⋫":"⋫","⧐̸":"⧐̸","⋭":"⋭","⊏̸":"⊏̸","⋢":"⋢","⊐̸":"⊐̸","⋣":"⋣","⊂⃒":"⊂⃒","⊈":"⊈","⊁":"⊁","⪰̸":"⪰̸","⋡":"⋡","≿̸":"≿̸","⊃⃒":"⊃⃒","⊉":"⊉","≁":"≁","≄":"≄","≇":"≇","≉":"≉","∤":"∤","𝒩":"𝒩","Ñ":"Ñ","Ñ":"Ñ","Ν":"Ν","Œ":"Œ","Ó":"Ó","Ó":"Ó","Ô":"Ô","Ô":"Ô","О":"О","Ő":"Ő","𝔒":"𝔒","Ò":"Ò","Ò":"Ò","Ō":"Ō","Ω":"Ω","Ο":"Ο","𝕆":"𝕆","“":"“","‘":"‘","⩔":"⩔","𝒪":"𝒪","Ø":"Ø","Ø":"Ø","Õ":"Õ","Õ":"Õ","⨷":"⨷","Ö":"Ö","Ö":"Ö","‾":"‾","⏞":"⏞","⎴":"⎴","⏜":"⏜","∂":"∂","П":"П","𝔓":"𝔓","Φ":"Φ","Π":"Π","±":"±","ℌ":"ℌ","ℙ":"ℙ","⪻":"⪻","≺":"≺","⪯":"⪯","≼":"≼","≾":"≾","″":"″","∏":"∏","∷":"∷","∝":"∝","𝒫":"𝒫","Ψ":"Ψ",""":'"',""":'"',"𝔔":"𝔔","ℚ":"ℚ","𝒬":"𝒬","⤐":"⤐","®":"®","®":"®","Ŕ":"Ŕ","⟫":"⟫","↠":"↠","⤖":"⤖","Ř":"Ř","Ŗ":"Ŗ","Р":"Р","ℜ":"ℜ","∋":"∋","⇋":"⇋","⥯":"⥯","ℜ":"ℜ","Ρ":"Ρ","⟩":"⟩","→":"→","⇥":"⇥","⇄":"⇄","⌉":"⌉","⟧":"⟧","⥝":"⥝","⇂":"⇂","⥕":"⥕","⌋":"⌋","⊢":"⊢","↦":"↦","⥛":"⥛","⊳":"⊳","⧐":"⧐","⊵":"⊵","⥏":"⥏","⥜":"⥜","↾":"↾","⥔":"⥔","⇀":"⇀","⥓":"⥓","⇒":"⇒","ℝ":"ℝ","⥰":"⥰","⇛":"⇛","ℛ":"ℛ","↱":"↱","⧴":"⧴","Щ":"Щ","Ш":"Ш","Ь":"Ь","Ś":"Ś","⪼":"⪼","Š":"Š","Ş":"Ş","Ŝ":"Ŝ","С":"С","𝔖":"𝔖","↓":"↓","←":"←","→":"→","↑":"↑","Σ":"Σ","∘":"∘","𝕊":"𝕊","√":"√","□":"□","⊓":"⊓","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊔":"⊔","𝒮":"𝒮","⋆":"⋆","⋐":"⋐","⋐":"⋐","⊆":"⊆","≻":"≻","⪰":"⪰","≽":"≽","≿":"≿","∋":"∋","∑":"∑","⋑":"⋑","⊃":"⊃","⊇":"⊇","⋑":"⋑","Þ":"Þ","Þ":"Þ","™":"™","Ћ":"Ћ","Ц":"Ц","	":"\t","Τ":"Τ","Ť":"Ť","Ţ":"Ţ","Т":"Т","𝔗":"𝔗","∴":"∴","Θ":"Θ","  ":" "," ":" ","∼":"∼","≃":"≃","≅":"≅","≈":"≈","𝕋":"𝕋","⃛":"⃛","𝒯":"𝒯","Ŧ":"Ŧ","Ú":"Ú","Ú":"Ú","↟":"↟","⥉":"⥉","Ў":"Ў","Ŭ":"Ŭ","Û":"Û","Û":"Û","У":"У","Ű":"Ű","𝔘":"𝔘","Ù":"Ù","Ù":"Ù","Ū":"Ū","_":"_","⏟":"⏟","⎵":"⎵","⏝":"⏝","⋃":"⋃","⊎":"⊎","Ų":"Ų","𝕌":"𝕌","↑":"↑","⤒":"⤒","⇅":"⇅","↕":"↕","⥮":"⥮","⊥":"⊥","↥":"↥","⇑":"⇑","⇕":"⇕","↖":"↖","↗":"↗","ϒ":"ϒ","Υ":"Υ","Ů":"Ů","𝒰":"𝒰","Ũ":"Ũ","Ü":"Ü","Ü":"Ü","⊫":"⊫","⫫":"⫫","В":"В","⊩":"⊩","⫦":"⫦","⋁":"⋁","‖":"‖","‖":"‖","∣":"∣","|":"|","❘":"❘","≀":"≀"," ":" ","𝔙":"𝔙","𝕍":"𝕍","𝒱":"𝒱","⊪":"⊪","Ŵ":"Ŵ","⋀":"⋀","𝔚":"𝔚","𝕎":"𝕎","𝒲":"𝒲","𝔛":"𝔛","Ξ":"Ξ","𝕏":"𝕏","𝒳":"𝒳","Я":"Я","Ї":"Ї","Ю":"Ю","Ý":"Ý","Ý":"Ý","Ŷ":"Ŷ","Ы":"Ы","𝔜":"𝔜","𝕐":"𝕐","𝒴":"𝒴","Ÿ":"Ÿ","Ж":"Ж","Ź":"Ź","Ž":"Ž","З":"З","Ż":"Ż","​":"","Ζ":"Ζ","ℨ":"ℨ","ℤ":"ℤ","𝒵":"𝒵","á":"á","á":"á","ă":"ă","∾":"∾","∾̳":"∾̳","∿":"∿","â":"â","â":"â","´":"´","´":"´","а":"а","æ":"æ","æ":"æ","⁡":"","𝔞":"𝔞","à":"à","à":"à","ℵ":"ℵ","ℵ":"ℵ","α":"α","ā":"ā","⨿":"⨿","&":"&","&":"&","∧":"∧","⩕":"⩕","⩜":"⩜","⩘":"⩘","⩚":"⩚","∠":"∠","⦤":"⦤","∠":"∠","∡":"∡","⦨":"⦨","⦩":"⦩","⦪":"⦪","⦫":"⦫","⦬":"⦬","⦭":"⦭","⦮":"⦮","⦯":"⦯","∟":"∟","⊾":"⊾","⦝":"⦝","∢":"∢","Å":"Å","⍼":"⍼","ą":"ą","𝕒":"𝕒","≈":"≈","⩰":"⩰","⩯":"⩯","≊":"≊","≋":"≋","'":"'","≈":"≈","≊":"≊","å":"å","å":"å","𝒶":"𝒶","*":"*","≈":"≈","≍":"≍","ã":"ã","ã":"ã","ä":"ä","ä":"ä","∳":"∳","⨑":"⨑","⫭":"⫭","≌":"≌","϶":"϶","‵":"‵","∽":"∽","⋍":"⋍","⊽":"⊽","⌅":"⌅","⌅":"⌅","⎵":"⎵","⎶":"⎶","≌":"≌","б":"б","„":"„","∵":"∵","∵":"∵","⦰":"⦰","϶":"϶","ℬ":"ℬ","β":"β","ℶ":"ℶ","≬":"≬","𝔟":"𝔟","⋂":"⋂","◯":"◯","⋃":"⋃","⨀":"⨀","⨁":"⨁","⨂":"⨂","⨆":"⨆","★":"★","▽":"▽","△":"△","⨄":"⨄","⋁":"⋁","⋀":"⋀","⤍":"⤍","⧫":"⧫","▪":"▪","▴":"▴","▾":"▾","◂":"◂","▸":"▸","␣":"␣","▒":"▒","░":"░","▓":"▓","█":"█","=⃥":"=⃥","≡⃥":"≡⃥","⌐":"⌐","𝕓":"𝕓","⊥":"⊥","⊥":"⊥","⋈":"⋈","╗":"╗","╔":"╔","╖":"╖","╓":"╓","═":"═","╦":"╦","╩":"╩","╤":"╤","╧":"╧","╝":"╝","╚":"╚","╜":"╜","╙":"╙","║":"║","╬":"╬","╣":"╣","╠":"╠","╫":"╫","╢":"╢","╟":"╟","⧉":"⧉","╕":"╕","╒":"╒","┐":"┐","┌":"┌","─":"─","╥":"╥","╨":"╨","┬":"┬","┴":"┴","⊟":"⊟","⊞":"⊞","⊠":"⊠","╛":"╛","╘":"╘","┘":"┘","└":"└","│":"│","╪":"╪","╡":"╡","╞":"╞","┼":"┼","┤":"┤","├":"├","‵":"‵","˘":"˘","¦":"¦","¦":"¦","𝒷":"𝒷","⁏":"⁏","∽":"∽","⋍":"⋍","\":"\\","⧅":"⧅","⟈":"⟈","•":"•","•":"•","≎":"≎","⪮":"⪮","≏":"≏","≏":"≏","ć":"ć","∩":"∩","⩄":"⩄","⩉":"⩉","⩋":"⩋","⩇":"⩇","⩀":"⩀","∩︀":"∩︀","⁁":"⁁","ˇ":"ˇ","⩍":"⩍","č":"č","ç":"ç","ç":"ç","ĉ":"ĉ","⩌":"⩌","⩐":"⩐","ċ":"ċ","¸":"¸","¸":"¸","⦲":"⦲","¢":"¢","¢":"¢","·":"·","𝔠":"𝔠","ч":"ч","✓":"✓","✓":"✓","χ":"χ","○":"○","⧃":"⧃","ˆ":"ˆ","≗":"≗","↺":"↺","↻":"↻","®":"®","Ⓢ":"Ⓢ","⊛":"⊛","⊚":"⊚","⊝":"⊝","≗":"≗","⨐":"⨐","⫯":"⫯","⧂":"⧂","♣":"♣","♣":"♣",":":":","≔":"≔","≔":"≔",",":",","@":"@","∁":"∁","∘":"∘","∁":"∁","ℂ":"ℂ","≅":"≅","⩭":"⩭","∮":"∮","𝕔":"𝕔","∐":"∐","©":"©","©":"©","℗":"℗","↵":"↵","✗":"✗","𝒸":"𝒸","⫏":"⫏","⫑":"⫑","⫐":"⫐","⫒":"⫒","⋯":"⋯","⤸":"⤸","⤵":"⤵","⋞":"⋞","⋟":"⋟","↶":"↶","⤽":"⤽","∪":"∪","⩈":"⩈","⩆":"⩆","⩊":"⩊","⊍":"⊍","⩅":"⩅","∪︀":"∪︀","↷":"↷","⤼":"⤼","⋞":"⋞","⋟":"⋟","⋎":"⋎","⋏":"⋏","¤":"¤","¤":"¤","↶":"↶","↷":"↷","⋎":"⋎","⋏":"⋏","∲":"∲","∱":"∱","⌭":"⌭","⇓":"⇓","⥥":"⥥","†":"†","ℸ":"ℸ","↓":"↓","‐":"‐","⊣":"⊣","⤏":"⤏","˝":"˝","ď":"ď","д":"д","ⅆ":"ⅆ","‡":"‡","⇊":"⇊","⩷":"⩷","°":"°","°":"°","δ":"δ","⦱":"⦱","⥿":"⥿","𝔡":"𝔡","⇃":"⇃","⇂":"⇂","⋄":"⋄","⋄":"⋄","♦":"♦","♦":"♦","¨":"¨","ϝ":"ϝ","⋲":"⋲","÷":"÷","÷":"÷","÷":"÷","⋇":"⋇","⋇":"⋇","ђ":"ђ","⌞":"⌞","⌍":"⌍","$":"$","𝕕":"𝕕","˙":"˙","≐":"≐","≑":"≑","∸":"∸","∔":"∔","⊡":"⊡","⌆":"⌆","↓":"↓","⇊":"⇊","⇃":"⇃","⇂":"⇂","⤐":"⤐","⌟":"⌟","⌌":"⌌","𝒹":"𝒹","ѕ":"ѕ","⧶":"⧶","đ":"đ","⋱":"⋱","▿":"▿","▾":"▾","⇵":"⇵","⥯":"⥯","⦦":"⦦","џ":"џ","⟿":"⟿","⩷":"⩷","≑":"≑","é":"é","é":"é","⩮":"⩮","ě":"ě","≖":"≖","ê":"ê","ê":"ê","≕":"≕","э":"э","ė":"ė","ⅇ":"ⅇ","≒":"≒","𝔢":"𝔢","⪚":"⪚","è":"è","è":"è","⪖":"⪖","⪘":"⪘","⪙":"⪙","⏧":"⏧","ℓ":"ℓ","⪕":"⪕","⪗":"⪗","ē":"ē","∅":"∅","∅":"∅","∅":"∅"," ":" "," ":" "," ":" ","ŋ":"ŋ"," ":" ","ę":"ę","𝕖":"𝕖","⋕":"⋕","⧣":"⧣","⩱":"⩱","ε":"ε","ε":"ε","ϵ":"ϵ","≖":"≖","≕":"≕","≂":"≂","⪖":"⪖","⪕":"⪕","=":"=","≟":"≟","≡":"≡","⩸":"⩸","⧥":"⧥","≓":"≓","⥱":"⥱","ℯ":"ℯ","≐":"≐","≂":"≂","η":"η","ð":"ð","ð":"ð","ë":"ë","ë":"ë","€":"€","!":"!","∃":"∃","ℰ":"ℰ","ⅇ":"ⅇ","≒":"≒","ф":"ф","♀":"♀","ffi":"ffi","ff":"ff","ffl":"ffl","𝔣":"𝔣","fi":"fi","fj":"fj","♭":"♭","fl":"fl","▱":"▱","ƒ":"ƒ","𝕗":"𝕗","∀":"∀","⋔":"⋔","⫙":"⫙","⨍":"⨍","½":"½","½":"½","⅓":"⅓","¼":"¼","¼":"¼","⅕":"⅕","⅙":"⅙","⅛":"⅛","⅔":"⅔","⅖":"⅖","¾":"¾","¾":"¾","⅗":"⅗","⅜":"⅜","⅘":"⅘","⅚":"⅚","⅝":"⅝","⅞":"⅞","⁄":"⁄","⌢":"⌢","𝒻":"𝒻","≧":"≧","⪌":"⪌","ǵ":"ǵ","γ":"γ","ϝ":"ϝ","⪆":"⪆","ğ":"ğ","ĝ":"ĝ","г":"г","ġ":"ġ","≥":"≥","⋛":"⋛","≥":"≥","≧":"≧","⩾":"⩾","⩾":"⩾","⪩":"⪩","⪀":"⪀","⪂":"⪂","⪄":"⪄","⋛︀":"⋛︀","⪔":"⪔","𝔤":"𝔤","≫":"≫","⋙":"⋙","ℷ":"ℷ","ѓ":"ѓ","≷":"≷","⪒":"⪒","⪥":"⪥","⪤":"⪤","≩":"≩","⪊":"⪊","⪊":"⪊","⪈":"⪈","⪈":"⪈","≩":"≩","⋧":"⋧","𝕘":"𝕘","`":"`","ℊ":"ℊ","≳":"≳","⪎":"⪎","⪐":"⪐",">":">",">":">","⪧":"⪧","⩺":"⩺","⋗":"⋗","⦕":"⦕","⩼":"⩼","⪆":"⪆","⥸":"⥸","⋗":"⋗","⋛":"⋛","⪌":"⪌","≷":"≷","≳":"≳","≩︀":"≩︀","≩︀":"≩︀","⇔":"⇔"," ":" ","½":"½","ℋ":"ℋ","ъ":"ъ","↔":"↔","⥈":"⥈","↭":"↭","ℏ":"ℏ","ĥ":"ĥ","♥":"♥","♥":"♥","…":"…","⊹":"⊹","𝔥":"𝔥","⤥":"⤥","⤦":"⤦","⇿":"⇿","∻":"∻","↩":"↩","↪":"↪","𝕙":"𝕙","―":"―","𝒽":"𝒽","ℏ":"ℏ","ħ":"ħ","⁃":"⁃","‐":"‐","í":"í","í":"í","⁣":"","î":"î","î":"î","и":"и","е":"е","¡":"¡","¡":"¡","⇔":"⇔","𝔦":"𝔦","ì":"ì","ì":"ì","ⅈ":"ⅈ","⨌":"⨌","∭":"∭","⧜":"⧜","℩":"℩","ij":"ij","ī":"ī","ℑ":"ℑ","ℐ":"ℐ","ℑ":"ℑ","ı":"ı","⊷":"⊷","Ƶ":"Ƶ","∈":"∈","℅":"℅","∞":"∞","⧝":"⧝","ı":"ı","∫":"∫","⊺":"⊺","ℤ":"ℤ","⊺":"⊺","⨗":"⨗","⨼":"⨼","ё":"ё","į":"į","𝕚":"𝕚","ι":"ι","⨼":"⨼","¿":"¿","¿":"¿","𝒾":"𝒾","∈":"∈","⋹":"⋹","⋵":"⋵","⋴":"⋴","⋳":"⋳","∈":"∈","⁢":"","ĩ":"ĩ","і":"і","ï":"ï","ï":"ï","ĵ":"ĵ","й":"й","𝔧":"𝔧","ȷ":"ȷ","𝕛":"𝕛","𝒿":"𝒿","ј":"ј","є":"є","κ":"κ","ϰ":"ϰ","ķ":"ķ","к":"к","𝔨":"𝔨","ĸ":"ĸ","х":"х","ќ":"ќ","𝕜":"𝕜","𝓀":"𝓀","⇚":"⇚","⇐":"⇐","⤛":"⤛","⤎":"⤎","≦":"≦","⪋":"⪋","⥢":"⥢","ĺ":"ĺ","⦴":"⦴","ℒ":"ℒ","λ":"λ","⟨":"⟨","⦑":"⦑","⟨":"⟨","⪅":"⪅","«":"«","«":"«","←":"←","⇤":"⇤","⤟":"⤟","⤝":"⤝","↩":"↩","↫":"↫","⤹":"⤹","⥳":"⥳","↢":"↢","⪫":"⪫","⤙":"⤙","⪭":"⪭","⪭︀":"⪭︀","⤌":"⤌","❲":"❲","{":"{","[":"[","⦋":"⦋","⦏":"⦏","⦍":"⦍","ľ":"ľ","ļ":"ļ","⌈":"⌈","{":"{","л":"л","⤶":"⤶","“":"“","„":"„","⥧":"⥧","⥋":"⥋","↲":"↲","≤":"≤","←":"←","↢":"↢","↽":"↽","↼":"↼","⇇":"⇇","↔":"↔","⇆":"⇆","⇋":"⇋","↭":"↭","⋋":"⋋","⋚":"⋚","≤":"≤","≦":"≦","⩽":"⩽","⩽":"⩽","⪨":"⪨","⩿":"⩿","⪁":"⪁","⪃":"⪃","⋚︀":"⋚︀","⪓":"⪓","⪅":"⪅","⋖":"⋖","⋚":"⋚","⪋":"⪋","≶":"≶","≲":"≲","⥼":"⥼","⌊":"⌊","𝔩":"𝔩","≶":"≶","⪑":"⪑","↽":"↽","↼":"↼","⥪":"⥪","▄":"▄","љ":"љ","≪":"≪","⇇":"⇇","⌞":"⌞","⥫":"⥫","◺":"◺","ŀ":"ŀ","⎰":"⎰","⎰":"⎰","≨":"≨","⪉":"⪉","⪉":"⪉","⪇":"⪇","⪇":"⪇","≨":"≨","⋦":"⋦","⟬":"⟬","⇽":"⇽","⟦":"⟦","⟵":"⟵","⟷":"⟷","⟼":"⟼","⟶":"⟶","↫":"↫","↬":"↬","⦅":"⦅","𝕝":"𝕝","⨭":"⨭","⨴":"⨴","∗":"∗","_":"_","◊":"◊","◊":"◊","⧫":"⧫","(":"(","⦓":"⦓","⇆":"⇆","⌟":"⌟","⇋":"⇋","⥭":"⥭","‎":"","⊿":"⊿","‹":"‹","𝓁":"𝓁","↰":"↰","≲":"≲","⪍":"⪍","⪏":"⪏","[":"[","‘":"‘","‚":"‚","ł":"ł","<":"<","<":"<","⪦":"⪦","⩹":"⩹","⋖":"⋖","⋋":"⋋","⋉":"⋉","⥶":"⥶","⩻":"⩻","⦖":"⦖","◃":"◃","⊴":"⊴","◂":"◂","⥊":"⥊","⥦":"⥦","≨︀":"≨︀","≨︀":"≨︀","∺":"∺","¯":"¯","¯":"¯","♂":"♂","✠":"✠","✠":"✠","↦":"↦","↦":"↦","↧":"↧","↤":"↤","↥":"↥","▮":"▮","⨩":"⨩","м":"м","—":"—","∡":"∡","𝔪":"𝔪","℧":"℧","µ":"µ","µ":"µ","∣":"∣","*":"*","⫰":"⫰","·":"·","·":"·","−":"−","⊟":"⊟","∸":"∸","⨪":"⨪","⫛":"⫛","…":"…","∓":"∓","⊧":"⊧","𝕞":"𝕞","∓":"∓","𝓂":"𝓂","∾":"∾","μ":"μ","⊸":"⊸","⊸":"⊸","⋙̸":"⋙̸","≫⃒":"≫⃒","≫̸":"≫̸","⇍":"⇍","⇎":"⇎","⋘̸":"⋘̸","≪⃒":"≪⃒","≪̸":"≪̸","⇏":"⇏","⊯":"⊯","⊮":"⊮","∇":"∇","ń":"ń","∠⃒":"∠⃒","≉":"≉","⩰̸":"⩰̸","≋̸":"≋̸","ʼn":"ʼn","≉":"≉","♮":"♮","♮":"♮","ℕ":"ℕ"," ":" "," ":" ","≎̸":"≎̸","≏̸":"≏̸","⩃":"⩃","ň":"ň","ņ":"ņ","≇":"≇","⩭̸":"⩭̸","⩂":"⩂","н":"н","–":"–","≠":"≠","⇗":"⇗","⤤":"⤤","↗":"↗","↗":"↗","≐̸":"≐̸","≢":"≢","⤨":"⤨","≂̸":"≂̸","∄":"∄","∄":"∄","𝔫":"𝔫","≧̸":"≧̸","≱":"≱","≱":"≱","≧̸":"≧̸","⩾̸":"⩾̸","⩾̸":"⩾̸","≵":"≵","≯":"≯","≯":"≯","⇎":"⇎","↮":"↮","⫲":"⫲","∋":"∋","⋼":"⋼","⋺":"⋺","∋":"∋","њ":"њ","⇍":"⇍","≦̸":"≦̸","↚":"↚","‥":"‥","≰":"≰","↚":"↚","↮":"↮","≰":"≰","≦̸":"≦̸","⩽̸":"⩽̸","⩽̸":"⩽̸","≮":"≮","≴":"≴","≮":"≮","⋪":"⋪","⋬":"⋬","∤":"∤","𝕟":"𝕟","¬":"¬","¬":"¬","∉":"∉","⋹̸":"⋹̸","⋵̸":"⋵̸","∉":"∉","⋷":"⋷","⋶":"⋶","∌":"∌","∌":"∌","⋾":"⋾","⋽":"⋽","∦":"∦","∦":"∦","⫽⃥":"⫽⃥","∂̸":"∂̸","⨔":"⨔","⊀":"⊀","⋠":"⋠","⪯̸":"⪯̸","⊀":"⊀","⪯̸":"⪯̸","⇏":"⇏","↛":"↛","⤳̸":"⤳̸","↝̸":"↝̸","↛":"↛","⋫":"⋫","⋭":"⋭","⊁":"⊁","⋡":"⋡","⪰̸":"⪰̸","𝓃":"𝓃","∤":"∤","∦":"∦","≁":"≁","≄":"≄","≄":"≄","∤":"∤","∦":"∦","⋢":"⋢","⋣":"⋣","⊄":"⊄","⫅̸":"⫅̸","⊈":"⊈","⊂⃒":"⊂⃒","⊈":"⊈","⫅̸":"⫅̸","⊁":"⊁","⪰̸":"⪰̸","⊅":"⊅","⫆̸":"⫆̸","⊉":"⊉","⊃⃒":"⊃⃒","⊉":"⊉","⫆̸":"⫆̸","≹":"≹","ñ":"ñ","ñ":"ñ","≸":"≸","⋪":"⋪","⋬":"⋬","⋫":"⋫","⋭":"⋭","ν":"ν","#":"#","№":"№"," ":" ","⊭":"⊭","⤄":"⤄","≍⃒":"≍⃒","⊬":"⊬","≥⃒":"≥⃒",">⃒":">⃒","⧞":"⧞","⤂":"⤂","≤⃒":"≤⃒","<⃒":"<⃒","⊴⃒":"⊴⃒","⤃":"⤃","⊵⃒":"⊵⃒","∼⃒":"∼⃒","⇖":"⇖","⤣":"⤣","↖":"↖","↖":"↖","⤧":"⤧","Ⓢ":"Ⓢ","ó":"ó","ó":"ó","⊛":"⊛","⊚":"⊚","ô":"ô","ô":"ô","о":"о","⊝":"⊝","ő":"ő","⨸":"⨸","⊙":"⊙","⦼":"⦼","œ":"œ","⦿":"⦿","𝔬":"𝔬","˛":"˛","ò":"ò","ò":"ò","⧁":"⧁","⦵":"⦵","Ω":"Ω","∮":"∮","↺":"↺","⦾":"⦾","⦻":"⦻","‾":"‾","⧀":"⧀","ō":"ō","ω":"ω","ο":"ο","⦶":"⦶","⊖":"⊖","𝕠":"𝕠","⦷":"⦷","⦹":"⦹","⊕":"⊕","∨":"∨","↻":"↻","⩝":"⩝","ℴ":"ℴ","ℴ":"ℴ","ª":"ª","ª":"ª","º":"º","º":"º","⊶":"⊶","⩖":"⩖","⩗":"⩗","⩛":"⩛","ℴ":"ℴ","ø":"ø","ø":"ø","⊘":"⊘","õ":"õ","õ":"õ","⊗":"⊗","⨶":"⨶","ö":"ö","ö":"ö","⌽":"⌽","∥":"∥","¶":"¶","¶":"¶","∥":"∥","⫳":"⫳","⫽":"⫽","∂":"∂","п":"п","%":"%",".":".","‰":"‰","⊥":"⊥","‱":"‱","𝔭":"𝔭","φ":"φ","ϕ":"ϕ","ℳ":"ℳ","☎":"☎","π":"π","⋔":"⋔","ϖ":"ϖ","ℏ":"ℏ","ℎ":"ℎ","ℏ":"ℏ","+":"+","⨣":"⨣","⊞":"⊞","⨢":"⨢","∔":"∔","⨥":"⨥","⩲":"⩲","±":"±","±":"±","⨦":"⨦","⨧":"⨧","±":"±","⨕":"⨕","𝕡":"𝕡","£":"£","£":"£","≺":"≺","⪳":"⪳","⪷":"⪷","≼":"≼","⪯":"⪯","≺":"≺","⪷":"⪷","≼":"≼","⪯":"⪯","⪹":"⪹","⪵":"⪵","⋨":"⋨","≾":"≾","′":"′","ℙ":"ℙ","⪵":"⪵","⪹":"⪹","⋨":"⋨","∏":"∏","⌮":"⌮","⌒":"⌒","⌓":"⌓","∝":"∝","∝":"∝","≾":"≾","⊰":"⊰","𝓅":"𝓅","ψ":"ψ"," ":" ","𝔮":"𝔮","⨌":"⨌","𝕢":"𝕢","⁗":"⁗","𝓆":"𝓆","ℍ":"ℍ","⨖":"⨖","?":"?","≟":"≟",""":'"',""":'"',"⇛":"⇛","⇒":"⇒","⤜":"⤜","⤏":"⤏","⥤":"⥤","∽̱":"∽̱","ŕ":"ŕ","√":"√","⦳":"⦳","⟩":"⟩","⦒":"⦒","⦥":"⦥","⟩":"⟩","»":"»","»":"»","→":"→","⥵":"⥵","⇥":"⇥","⤠":"⤠","⤳":"⤳","⤞":"⤞","↪":"↪","↬":"↬","⥅":"⥅","⥴":"⥴","↣":"↣","↝":"↝","⤚":"⤚","∶":"∶","ℚ":"ℚ","⤍":"⤍","❳":"❳","}":"}","]":"]","⦌":"⦌","⦎":"⦎","⦐":"⦐","ř":"ř","ŗ":"ŗ","⌉":"⌉","}":"}","р":"р","⤷":"⤷","⥩":"⥩","”":"”","”":"”","↳":"↳","ℜ":"ℜ","ℛ":"ℛ","ℜ":"ℜ","ℝ":"ℝ","▭":"▭","®":"®","®":"®","⥽":"⥽","⌋":"⌋","𝔯":"𝔯","⇁":"⇁","⇀":"⇀","⥬":"⥬","ρ":"ρ","ϱ":"ϱ","→":"→","↣":"↣","⇁":"⇁","⇀":"⇀","⇄":"⇄","⇌":"⇌","⇉":"⇉","↝":"↝","⋌":"⋌","˚":"˚","≓":"≓","⇄":"⇄","⇌":"⇌","‏":"","⎱":"⎱","⎱":"⎱","⫮":"⫮","⟭":"⟭","⇾":"⇾","⟧":"⟧","⦆":"⦆","𝕣":"𝕣","⨮":"⨮","⨵":"⨵",")":")","⦔":"⦔","⨒":"⨒","⇉":"⇉","›":"›","𝓇":"𝓇","↱":"↱","]":"]","’":"’","’":"’","⋌":"⋌","⋊":"⋊","▹":"▹","⊵":"⊵","▸":"▸","⧎":"⧎","⥨":"⥨","℞":"℞","ś":"ś","‚":"‚","≻":"≻","⪴":"⪴","⪸":"⪸","š":"š","≽":"≽","⪰":"⪰","ş":"ş","ŝ":"ŝ","⪶":"⪶","⪺":"⪺","⋩":"⋩","⨓":"⨓","≿":"≿","с":"с","⋅":"⋅","⊡":"⊡","⩦":"⩦","⇘":"⇘","⤥":"⤥","↘":"↘","↘":"↘","§":"§","§":"§",";":";","⤩":"⤩","∖":"∖","∖":"∖","✶":"✶","𝔰":"𝔰","⌢":"⌢","♯":"♯","щ":"щ","ш":"ш","∣":"∣","∥":"∥","­":"","­":"","σ":"σ","ς":"ς","ς":"ς","∼":"∼","⩪":"⩪","≃":"≃","≃":"≃","⪞":"⪞","⪠":"⪠","⪝":"⪝","⪟":"⪟","≆":"≆","⨤":"⨤","⥲":"⥲","←":"←","∖":"∖","⨳":"⨳","⧤":"⧤","∣":"∣","⌣":"⌣","⪪":"⪪","⪬":"⪬","⪬︀":"⪬︀","ь":"ь","/":"/","⧄":"⧄","⌿":"⌿","𝕤":"𝕤","♠":"♠","♠":"♠","∥":"∥","⊓":"⊓","⊓︀":"⊓︀","⊔":"⊔","⊔︀":"⊔︀","⊏":"⊏","⊑":"⊑","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊐":"⊐","⊒":"⊒","□":"□","□":"□","▪":"▪","▪":"▪","→":"→","𝓈":"𝓈","∖":"∖","⌣":"⌣","⋆":"⋆","☆":"☆","★":"★","ϵ":"ϵ","ϕ":"ϕ","¯":"¯","⊂":"⊂","⫅":"⫅","⪽":"⪽","⊆":"⊆","⫃":"⫃","⫁":"⫁","⫋":"⫋","⊊":"⊊","⪿":"⪿","⥹":"⥹","⊂":"⊂","⊆":"⊆","⫅":"⫅","⊊":"⊊","⫋":"⫋","⫇":"⫇","⫕":"⫕","⫓":"⫓","≻":"≻","⪸":"⪸","≽":"≽","⪰":"⪰","⪺":"⪺","⪶":"⪶","⋩":"⋩","≿":"≿","∑":"∑","♪":"♪","¹":"¹","¹":"¹","²":"²","²":"²","³":"³","³":"³","⊃":"⊃","⫆":"⫆","⪾":"⪾","⫘":"⫘","⊇":"⊇","⫄":"⫄","⟉":"⟉","⫗":"⫗","⥻":"⥻","⫂":"⫂","⫌":"⫌","⊋":"⊋","⫀":"⫀","⊃":"⊃","⊇":"⊇","⫆":"⫆","⊋":"⊋","⫌":"⫌","⫈":"⫈","⫔":"⫔","⫖":"⫖","⇙":"⇙","⤦":"⤦","↙":"↙","↙":"↙","⤪":"⤪","ß":"ß","ß":"ß","⌖":"⌖","τ":"τ","⎴":"⎴","ť":"ť","ţ":"ţ","т":"т","⃛":"⃛","⌕":"⌕","𝔱":"𝔱","∴":"∴","∴":"∴","θ":"θ","ϑ":"ϑ","ϑ":"ϑ","≈":"≈","∼":"∼"," ":" ","≈":"≈","∼":"∼","þ":"þ","þ":"þ","˜":"˜","×":"×","×":"×","⊠":"⊠","⨱":"⨱","⨰":"⨰","∭":"∭","⤨":"⤨","⊤":"⊤","⌶":"⌶","⫱":"⫱","𝕥":"𝕥","⫚":"⫚","⤩":"⤩","‴":"‴","™":"™","▵":"▵","▿":"▿","◃":"◃","⊴":"⊴","≜":"≜","▹":"▹","⊵":"⊵","◬":"◬","≜":"≜","⨺":"⨺","⨹":"⨹","⧍":"⧍","⨻":"⨻","⏢":"⏢","𝓉":"𝓉","ц":"ц","ћ":"ћ","ŧ":"ŧ","≬":"≬","↞":"↞","↠":"↠","⇑":"⇑","⥣":"⥣","ú":"ú","ú":"ú","↑":"↑","ў":"ў","ŭ":"ŭ","û":"û","û":"û","у":"у","⇅":"⇅","ű":"ű","⥮":"⥮","⥾":"⥾","𝔲":"𝔲","ù":"ù","ù":"ù","↿":"↿","↾":"↾","▀":"▀","⌜":"⌜","⌜":"⌜","⌏":"⌏","◸":"◸","ū":"ū","¨":"¨","¨":"¨","ų":"ų","𝕦":"𝕦","↑":"↑","↕":"↕","↿":"↿","↾":"↾","⊎":"⊎","υ":"υ","ϒ":"ϒ","υ":"υ","⇈":"⇈","⌝":"⌝","⌝":"⌝","⌎":"⌎","ů":"ů","◹":"◹","𝓊":"𝓊","⋰":"⋰","ũ":"ũ","▵":"▵","▴":"▴","⇈":"⇈","ü":"ü","ü":"ü","⦧":"⦧","⇕":"⇕","⫨":"⫨","⫩":"⫩","⊨":"⊨","⦜":"⦜","ϵ":"ϵ","ϰ":"ϰ","∅":"∅","ϕ":"ϕ","ϖ":"ϖ","∝":"∝","↕":"↕","ϱ":"ϱ","ς":"ς","⊊︀":"⊊︀","⫋︀":"⫋︀","⊋︀":"⊋︀","⫌︀":"⫌︀","ϑ":"ϑ","⊲":"⊲","⊳":"⊳","в":"в","⊢":"⊢","∨":"∨","⊻":"⊻","≚":"≚","⋮":"⋮","|":"|","|":"|","𝔳":"𝔳","⊲":"⊲","⊂⃒":"⊂⃒","⊃⃒":"⊃⃒","𝕧":"𝕧","∝":"∝","⊳":"⊳","𝓋":"𝓋","⫋︀":"⫋︀","⊊︀":"⊊︀","⫌︀":"⫌︀","⊋︀":"⊋︀","⦚":"⦚","ŵ":"ŵ","⩟":"⩟","∧":"∧","≙":"≙","℘":"℘","𝔴":"𝔴","𝕨":"𝕨","℘":"℘","≀":"≀","≀":"≀","𝓌":"𝓌","⋂":"⋂","◯":"◯","⋃":"⋃","▽":"▽","𝔵":"𝔵","⟺":"⟺","⟷":"⟷","ξ":"ξ","⟸":"⟸","⟵":"⟵","⟼":"⟼","⋻":"⋻","⨀":"⨀","𝕩":"𝕩","⨁":"⨁","⨂":"⨂","⟹":"⟹","⟶":"⟶","𝓍":"𝓍","⨆":"⨆","⨄":"⨄","△":"△","⋁":"⋁","⋀":"⋀","ý":"ý","ý":"ý","я":"я","ŷ":"ŷ","ы":"ы","¥":"¥","¥":"¥","𝔶":"𝔶","ї":"ї","𝕪":"𝕪","𝓎":"𝓎","ю":"ю","ÿ":"ÿ","ÿ":"ÿ","ź":"ź","ž":"ž","з":"з","ż":"ż","ℨ":"ℨ","ζ":"ζ","𝔷":"𝔷","ж":"ж","⇝":"⇝","𝕫":"𝕫","𝓏":"𝓏","‍":"","‌":""};function B(e){return e.trim().replace(/[<>"'?&]/g,(e=>{let t=e.charCodeAt(0).toString(16);return t.length<2&&(t="0"+t),"&#x"+t.toUpperCase()+";"}))}function C(e){return[].concat(e.name||[]).concat(e.name?`<${e.address}>`:e.address).join(" ")}function I(e){let t=[],r=(e,i)=>{if(i&&t.push(", "),e.group){let i=";";t.push(`${e.name}:`),e.group.forEach(r),t.push(i)}else t.push(C(e))};return e.forEach(r),t.join("")}function V(e){return`<a href="mailto:${B(e.address)}" class="postal-email-address">${B(e.name||`<${e.address}>`)}</a>`}function j(e){let t=[],r=(e,i)=>{if(i&&t.push('<span class="postal-email-address-separator">, </span>'),e.group){let i=`<span class="postal-email-address-group">${B(e.name)}:</span>`,s='<span class="postal-email-address-group">;</span>';t.push(i),e.group.forEach(r),t.push(s)}else t.push(V(e))};return e.forEach(r),t.join(" ")}function $(e){let t=[];if(e.from&&t.push({key:"From",val:C(e.from)}),e.subject&&t.push({key:"Subject",val:e.subject}),e.date){let r="undefined"==typeof Intl?e.date:new Intl.DateTimeFormat("default",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1}).format(new Date(e.date));t.push({key:"Date",val:r})}e.to&&e.to.length&&t.push({key:"To",val:I(e.to)}),e.cc&&e.cc.length&&t.push({key:"Cc",val:I(e.cc)}),e.bcc&&e.bcc.length&&t.push({key:"Bcc",val:I(e.bcc)});let r=t.map((e=>e.key.length)).reduce(((e,t)=>t>e?t:e),0);t=t.flatMap((e=>{let t=r-e.key.length,i=`${e.key}: ${" ".repeat(t)}`,s=`${" ".repeat(e.key.length+1)} ${" ".repeat(t)}`;return function(e,t){t=t||76;let r,i,s=0,a=(e=(e||"").toString()).length,o="";for(;s<a;){if(r=e.substr(s,t),r.length<t){o+=r;break}(i=r.match(/^[^\n\r]*(\r?\n|\r)/))?(r=i[0],o+=r,s+=r.length):((i=r.match(/(\s+)[^\s]*$/))&&i[0].length-(i[1]||"").length<r.length?r=r.substr(0,r.length-(i[0].length-(i[1]||"").length)):(i=e.substr(s+r.length).match(/^[^\s]+(\s*)/))&&(r+=i[0].substr(0,i[0].length-0)),o+=r,s+=r.length,s<a&&(o+="\r\n"))}return o}(e.val,80).split(/\r?\n/).map((e=>e.trim())).map(((e,t)=>`${t?s:i}${e}`))}));let i=t.map((e=>e.length)).reduce(((e,t)=>t>e?t:e),0),s="-".repeat(i);return`\n${s}\n${t.join("\n")}\n${s}\n`}function z(e){let t=[];if(e.from&&t.push(`<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${V(e.from)}</div>`),e.subject&&t.push(`<div class="postal-email-header-key">Subject</div><div class="postal-email-header-value postal-email-header-subject">${B(e.subject)}</div>`),e.date){let r="undefined"==typeof Intl?e.date:new Intl.DateTimeFormat("default",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1}).format(new Date(e.date));t.push(`<div class="postal-email-header-key">Date</div><div class="postal-email-header-value postal-email-header-date" data-date="${B(e.date)}">${B(r)}</div>`)}return e.to&&e.to.length&&t.push(`<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${j(e.to)}</div>`),e.cc&&e.cc.length&&t.push(`<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${j(e.cc)}</div>`),e.bcc&&e.bcc.length&&t.push(`<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${j(e.bcc)}</div>`),`<div class="postal-email-header">${t.length?'<div class="postal-email-header-row">':""}${t.join('</div>\n<div class="postal-email-header-row">')}${t.length?"</div>":""}</div>`}class O{constructor(e){this.str=(e||"").toString(),this.operatorCurrent="",this.operatorExpecting="",this.node=null,this.escaped=!1,this.list=[],this.operators={'"':'"',"(":")","<":">",",":"",":":";",";":""}}tokenize(){let e=[];for(let e=0,t=this.str.length;e<t;e++){let r=this.str.charAt(e),i=e<t-1?this.str.charAt(e+1):null;this.checkChar(r,i)}return this.list.forEach((t=>{t.value=(t.value||"").toString().trim(),t.value&&e.push(t)})),e}checkChar(e,t){if(this.escaped);else{if(e===this.operatorExpecting)return this.node={type:"operator",value:e},t&&![" ","\t","\r","\n",",",";"].includes(t)&&(this.node.noBreak=!0),this.list.push(this.node),this.node=null,this.operatorExpecting="",void(this.escaped=!1);if(!this.operatorExpecting&&e in this.operators)return this.node={type:"operator",value:e},this.list.push(this.node),this.node=null,this.operatorExpecting=this.operators[e],void(this.escaped=!1);if('"'===this.operatorExpecting&&"\\"===e)return void(this.escaped=!0)}this.node||(this.node={type:"text",value:""},this.list.push(this.node)),"\n"===e&&(e=" "),(e.charCodeAt(0)>=33||[" ","\t"].includes(e))&&(this.node.value+=e),this.escaped=!1}}function G(e,t){let r=(t=t||{})._depth||0;if(r>50)return[];let i=new O(e).tokenize(),s=[],a=[],o=[];if(i.forEach((e=>{"operator"!==e.type||","!==e.value&&";"!==e.value?a.push(e):(a.length&&s.push(a),a=[])})),a.length&&s.push(a),s.forEach((e=>{e=function(e,t){let r,i,s,a=!1,o="text",n=[],l={address:[],comment:[],group:[],text:[],textWasQuoted:[]},c=!1;for(i=0,s=e.length;i<s;i++){let t=e[i],r=i?e[i-1]:null;if("operator"===t.type)switch(t.value){case"<":o="address",c=!1;break;case"(":o="comment",c=!1;break;case":":o="group",a=!0,c=!1;break;case'"':c=!c,o="text";break;default:o="text",c=!1}else t.value&&("address"===o&&(t.value=t.value.replace(/^[^<]*<\s*/,"")),r&&r.noBreak&&l[o].length?(l[o][l[o].length-1]+=t.value,"text"===o&&c&&(l.textWasQuoted[l.textWasQuoted.length-1]=!0)):(l[o].push(t.value),"text"===o&&l.textWasQuoted.push(c)))}if(!l.text.length&&l.comment.length&&(l.text=l.comment,l.comment=[]),a){l.text=l.text.join(" ");let e=[];l.group.length&&G(l.group.join(","),{_depth:t+1}).forEach((t=>{t.group?e=e.concat(t.group):e.push(t)})),n.push({name:x(l.text||r&&r.name),group:e})}else{if(!l.address.length&&l.text.length){for(i=l.text.length-1;i>=0;i--)if(!l.textWasQuoted[i]&&l.text[i].match(/^[^@\s]+@[^@\s]+$/)){l.address=l.text.splice(i,1),l.textWasQuoted.splice(i,1);break}let e=function(e){return l.address.length?e:(l.address=[e.trim()]," ")};if(!l.address.length)for(i=l.text.length-1;i>=0&&(l.textWasQuoted[i]||(l.text[i]=l.text[i].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/,e).trim(),!l.address.length));i--);}if(!l.text.length&&l.comment.length&&(l.text=l.comment,l.comment=[]),l.address.length>1&&(l.text=l.text.concat(l.address.splice(1))),l.text=l.text.join(" "),l.address=l.address.join(" "),!l.address&&/^=\?[^=]+?=$/.test(l.text.trim())){const e=x(l.text);if(/<[^<>]+@[^<>]+>/.test(e)){const t=G(e);if(t&&t.length)return t}return[{address:"",name:e}]}r={address:l.address||l.text||"",name:x(l.text||l.address||"")},r.address===r.name&&((r.address||"").match(/@/)?r.name="":r.address=""),n.push(r)}return n}(e,r),e.length&&(o=o.concat(e))})),t.flatten){let e=[],t=r=>{r.forEach((r=>{if(r.group)return t(r.group);e.push(r)}))};return t(o),e}return o}function H(e){for(var t,r="",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=new Uint8Array(e),a=s.byteLength,o=a%3,n=a-o,l=0;l<n;l+=3)r+=i[(16515072&(t=s[l]<<16|s[l+1]<<8|s[l+2]))>>18]+i[(258048&t)>>12]+i[(4032&t)>>6]+i[63&t];return 1==o?r+=i[(252&(t=s[n]))>>2]+i[(3&t)<<4]+"==":2==o&&(r+=i[(64512&(t=s[n]<<8|s[n+1]))>>10]+i[(1008&t)>>4]+i[(15&t)<<2]+"="),r}function P(e){return e.replace(/-(.)/g,((e,t)=>t.toUpperCase()))}class F{static parse(e,t){return new F(t).parse(e)}constructor(e){this.options=e||{},this.mimeOptions={maxNestingDepth:this.options.maxNestingDepth||256,maxHeadersSize:this.options.maxHeadersSize||2097152},this.root=this.currentNode=new R({postalMime:this,...this.mimeOptions}),this.boundaries=[],this.textContent={},this.attachments=[],this.attachmentEncoding=(this.options.attachmentEncoding||"").toString().replace(/[-_\s]/g,"").trim().toLowerCase()||"arraybuffer",this.started=!1}async finalize(){await this.root.finalize()}async processLine(e,t){let r=this.boundaries;if(r.length&&e.length>2&&45===e[0]&&45===e[1])for(let i=r.length-1;i>=0;i--){let s=r[i];if(e.length<s.value.length+2)continue;let a=!0;for(let t=0;t<s.value.length;t++)if(e[t+2]!==s.value[t]){a=!1;break}if(!a)continue;let o=s.value.length+2,n=!1;e.length>=s.value.length+4&&45===e[s.value.length+2]&&45===e[s.value.length+3]&&(n=!0,o=s.value.length+4);let l=!0;for(let t=o;t<e.length;t++)if(32!==e[t]&&9!==e[t]){l=!1;break}if(l)return n?(await s.node.finalize(),this.currentNode=s.node.parentNode||this.root):(await s.node.finalizeChildNodes(),this.currentNode=new R({postalMime:this,parentNode:s.node,parentMultipartType:s.node.contentType.multipart,...this.mimeOptions})),t?this.finalize():void 0}if(this.currentNode.feed(e),t)return this.finalize()}readLine(){let e=this.readPos,t=this.readPos;for(;this.readPos<this.av.length;){const r=this.av[this.readPos++];if(13!==r&&10!==r&&(t=this.readPos),10===r)return{bytes:new Uint8Array(this.buf,e,t-e),done:this.readPos>=this.av.length}}return{bytes:new Uint8Array(this.buf,e,t-e),done:this.readPos>=this.av.length}}async processNodeTree(){let e={},t=new Set,r=this.textMap=new Map,i=this.forceRfc822Attachments(),s=async(e,a,o)=>{if(a=a||!1,o=o||!1,e.contentType.multipart)"alternative"===e.contentType.multipart?a=e:"related"===e.contentType.multipart&&(o=e);else if(this.isInlineMessageRfc822(e)&&!i){const i=new F;e.subMessage=await i.parse(e.content),r.has(e)||r.set(e,{});let s=r.get(e);!e.subMessage.text&&e.subMessage.html||(s.plain=s.plain||[],s.plain.push({type:"subMessage",value:e.subMessage}),t.add("plain")),e.subMessage.html&&(s.html=s.html||[],s.html.push({type:"subMessage",value:e.subMessage}),t.add("html")),i.textMap&&i.textMap.forEach(((e,t)=>{r.set(t,e)}));for(let t of e.subMessage.attachments||[])this.attachments.push(t)}else if(this.isInlineTextNode(e)){let i=e.contentType.parsed.value.substr(e.contentType.parsed.value.indexOf("/")+1),s=a||e;r.has(s)||r.set(s,{});let o=r.get(s);o[i]=o[i]||[],o[i].push({type:"text",value:e.getTextContent()}),t.add(i)}else if(e.content){const t=e.contentDisposition?.parsed?.params?.filename||e.contentType.parsed.params.name||null,r={filename:t?x(t):null,mimeType:e.contentType.parsed.value,disposition:e.contentDisposition?.parsed?.value||null};switch(o&&e.contentId&&(r.related=!0),e.contentDescription&&(r.description=e.contentDescription),e.contentId&&(r.contentId=e.contentId),e.contentType.parsed.value){case"text/calendar":case"application/ics":{e.contentType.parsed.params.method&&(r.method=e.contentType.parsed.params.method.toString().toUpperCase().trim());const t=e.getTextContent().replace(/\r?\n/g,"\n").replace(/\n*$/,"\n");r.content=m.encode(t);break}default:r.content=e.content}this.attachments.push(r)}for(let t of e.childNodes)await s(t,a,o)};await s(this.root,!1,!1),r.forEach((r=>{t.forEach((t=>{if(e[t]||(e[t]=[]),r[t])r[t].forEach((r=>{switch(r.type){case"text":e[t].push(r.value);break;case"subMessage":switch(t){case"html":e[t].push(z(r.value));break;case"plain":e[t].push($(r.value))}}}));else{let i;switch(t){case"html":i="plain";break;case"plain":i="html"}(r[i]||[]).forEach((r=>{switch(r.type){case"text":switch(t){case"html":e[t].push("<div>"+B(r.value).replace(/\n/g,"<br />")+"</div>");break;case"plain":e[t].push(function(e){return e.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,((e,t)=>{if("string"==typeof U[e])return U[e];if("#"!==t.charAt(0)||";"!==e.charAt(e.length-1))return e;let r;r="x"===t.charAt(1)?parseInt(t.substr(2),16):parseInt(t.substr(1),10);let i="";return r>=55296&&r<=57343||r>1114111?"�":(r>65535&&(r-=65536,i+=String.fromCharCode(r>>>10&1023|55296),r=56320|1023&r),i+=String.fromCharCode(r),i)}))}(r.value.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/<br\b[^>]*>/gi,"\n").replace(/<\/?(p|div|table|tr|td|th)\b[^>]*>/gi,"\n\n").replace(/<script\b[^>]*>.*?<\/script\b[^>]*>/gi," ").replace(/^.*<body\b[^>]*>/i,"").replace(/^.*<\/head\b[^>]*>/i,"").replace(/^.*<\!doctype\b[^>]*>/i,"").replace(/<\/body\b[^>]*>.*$/i,"").replace(/<\/html\b[^>]*>.*$/i,"").replace(/<a\b[^>]*href\s*=\s*["']?([^\s"']+)[^>]*>/gi," ($1) ").replace(/<\/?(span|em|i|strong|b|u|a)\b[^>]*>/gi,"").replace(/<li\b[^>]*>[\n\u0001\s]*/gi,"* ").replace(/<hr\b[^>]*>/g,"\n-------------\n").replace(/<[^>]*>/g," ").replace(/\u0001/g,"\n").replace(/[ \t]+/g," ").replace(/^\s+$/gm,"").replace(/\n\n+/g,"\n\n").replace(/^\n+/,"\n").replace(/\n+$/,"\n")))}break;case"subMessage":switch(t){case"html":e[t].push(z(r.value));break;case"plain":e[t].push($(r.value))}}}))}}))})),Object.keys(e).forEach((t=>{e[t]=e[t].join("\n")})),this.textContent=e}isInlineTextNode(e){if("attachment"===e.contentDisposition?.parsed?.value)return!1;switch(e.contentType.parsed?.value){case"text/html":case"text/plain":return!0;default:return!1}}isInlineMessageRfc822(e){return"message/rfc822"===e.contentType.parsed?.value&&"inline"===(e.contentDisposition?.parsed?.value||(this.options.rfc822Attachments?"attachment":"inline"))}forceRfc822Attachments(){if(this.options.forceRfc822Attachments)return!0;let e=!1,t=r=>{r.contentType.multipart||r.contentType.parsed&&["message/delivery-status","message/feedback-report"].includes(r.contentType.parsed.value)&&(e=!0);for(let e of r.childNodes)t(e)};return t(this.root),e}async resolveStream(e){let t=0,r=[];const i=e.getReader();for(;;){const{done:e,value:s}=await i.read();if(e)break;r.push(s),t+=s.length}const s=new Uint8Array(t);let a=0;for(let e of r)s.set(e,a),a+=e.length;return s}async parse(e){if(this.started)throw new Error("Can not reuse parser, create a new PostalMime object");for(this.started=!0,e&&"function"==typeof e.getReader&&(e=await this.resolveStream(e)),"string"==typeof(e=e||new ArrayBuffer(0))&&(e=m.encode(e)),(e instanceof Blob||"[object Blob]"===Object.prototype.toString.call(e))&&(e=await w(e)),e.buffer instanceof ArrayBuffer&&(e=new Uint8Array(e).buffer),this.buf=e,this.av=new Uint8Array(e),this.readPos=0;this.readPos<this.av.length;){const e=this.readLine();await this.processLine(e.bytes,e.done)}await this.processNodeTree();const t={headers:this.root.headers.map((e=>({key:e.key,originalKey:e.originalKey,value:e.value}))).reverse()};for(const e of["from","sender"]){const r=this.root.headers.find((t=>t.key===e));if(r&&r.value){const i=G(r.value);i&&i.length&&(t[e]=i[0])}}for(const e of["delivered-to","return-path"]){const r=this.root.headers.find((t=>t.key===e));if(r&&r.value){const i=G(r.value);i&&i.length&&i[0].address&&(t[P(e)]=i[0].address)}}for(const e of["to","cc","bcc","reply-to"]){const r=this.root.headers.filter((t=>t.key===e));let i=[];r.filter((e=>e&&e.value)).map((e=>G(e.value))).forEach((e=>i=i.concat(e||[]))),i&&i.length&&(t[P(e)]=i)}for(const e of["subject","message-id","in-reply-to","references"]){const r=this.root.headers.find((t=>t.key===e));r&&r.value&&(t[P(e)]=x(r.value))}let r=this.root.headers.find((e=>"date"===e.key));if(r){let e=new Date(r.value);e="Invalid Date"===e.toString()?r.value:e.toISOString(),t.date=e}switch(this.textContent?.html&&(t.html=this.textContent.html),this.textContent?.plain&&(t.text=this.textContent.plain),t.attachments=this.attachments,t.headerLines=(this.root.rawHeaderLines||[]).slice().reverse(),this.attachmentEncoding){case"arraybuffer":break;case"base64":for(let e of t.attachments||[])e?.content&&(e.content=H(e.content),e.encoding="base64");break;case"utf8":let e=new TextDecoder("utf8");for(let r of t.attachments||[])r?.content&&(r.content=e.decode(r.content),r.encoding="utf8");break;default:throw new Error("Unknown attachment encoding")}return t}}var M,_,J,Q,Y,Z,K;const W=new Set(["image/png","image/jpeg","image/jpg","image/gif","image/webp","image/bmp","image/x-icon","image/vnd.microsoft.icon"]);const X=null!==(_=null===(M=o.protocols)||void 0===M?void 0:M.src)&&void 0!==_?_:[],ee=Object.assign(Object.assign({},o),{clobberPrefix:"",protocols:Object.assign(Object.assign({},o.protocols),{src:[...X,"data"]}),attributes:Object.assign(Object.assign({},o.attributes),{table:[...null!==(J=o.attributes.table)&&void 0!==J?J:[],"cellPadding","cellSpacing","border","dir","width","height"],font:["color","size","face"],meta:["charset","content","name"],colgroup:[...null!==(Q=o.attributes.colgroup)&&void 0!==Q?Q:[],"span"],col:[...null!==(Y=o.attributes.col)&&void 0!==Y?Y:[],"width","span"],"*":[...null!==(Z=o.attributes["*"])&&void 0!==Z?Z:[],"style","className","id","dataRemoteSrc"]}),tagNames:[...null!==(K=o.tagNames)&&void 0!==K?K:[],"html","head","body","title","meta","style","colgroup","col","center","font"]});function te(e){const t=[/behavior\s*:/gi,/expression\s*\(/gi,/-moz-binding\s*:/gi,/vbscript\s*:/gi,/javascript\s*:/gi];let r=e;for(const e of t)r=r.replaceAll(e,"");return r=r.replaceAll(/@import\s+(?:url\([^)]{0,2000}\)|[^;]{0,2000});?/gi,""),r=r.replaceAll(/url\(\s{0,50}(?:"([^"]{0,2000})"|'([^']{0,2000})'|([^"')\s]{1,2000}))\s{0,50}\)/gi,((e,t,r,i)=>{var s,a;return(e=>{const t=e.trim().toLowerCase();return!!(t.startsWith("data:")||t.startsWith("cid:")||t.startsWith("#"))||!t.startsWith("//")&&!/^[a-z][a-z0-9+.-]*:/i.test(t)})((null!==(a=null!==(s=null!=t?t:r)&&void 0!==s?s:i)&&void 0!==a?a:"").trim())?e:'url("")'})),r}async function re(e){const t=await async function(e){try{const t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch email (${t.status} ${t.statusText})`);return await t.arrayBuffer()}catch(t){const r=t instanceof Error?t.message:String(t);throw new Error(`Failed to load email from ${e}: ${r}`)}}(e),r=await async function(e,t){try{return await F.parse(t,{attachmentEncoding:"arraybuffer"})}catch(t){const r=t instanceof Error?t.message:String(t);throw new Error(`Failed to parse email from ${e}: ${r}`)}}(e,t),i={subject:r.subject||void 0,from:he(r.from),to:ue(r.to),cc:ue(r.cc),date:ie(r,"date")||r.date||void 0},{attachments:s,cidUrlById:a}=function(e){const t=[],r=new Map;for(const s of e.attachments||[]){const e=se(s.contentId),a=Boolean(e)&&"attachment"!==s.disposition||s.related||"inline"===s.disposition,o=(i=s.content)instanceof ArrayBuffer?new Uint8Array(i):ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):void 0;if(!a){t.push({filename:s.filename||void 0,mimeType:s.mimeType||void 0,size:null==o?void 0:o.byteLength});continue}const n=Boolean(o);if(!e||!n){t.push({filename:s.filename||void 0,mimeType:s.mimeType||"application/octet-stream",size:null==o?void 0:o.byteLength});continue}const l=oe(s.mimeType,o,s.filename),c=ae(o);r.set(e,`data:${l};base64,${c}`)}var i;return{attachments:t,cidUrlById:r}}(r);return s.length>0&&(i.attachments=s),await async function(e,t,r){const i=(t.html||"").trim();if(i){const t=function(e,t){return 0===t.size?e:e.replaceAll(/(src\s*=\s*["']?)cid:([^"'\s>]+)(["']?)/gi,((e,r,i,s)=>{const a=se(function(e){try{return decodeURIComponent(e)}catch(t){return e}}(i)),o=t.get(a);return o?`${r}${o}${s}`:e}))}(i,r);e.bodyHtml=await async function(e){const t=await n().use(l).use(c,ee).use((()=>e=>{u(e,"element",(e=>{!function(e){var t;if((null==e?void 0:e.tagName)&&((null===(t=e.properties)||void 0===t?void 0:t.style)&&"string"==typeof e.properties.style&&(e.properties.style=te(e.properties.style)),"style"===e.tagName&&Array.isArray(e.children)))for(const t of e.children)"text"===(null==t?void 0:t.type)&&"string"==typeof t.value&&(t.value=te(t.value))}(e),function(e){var t;if(!(null==e?void 0:e.tagName)||"img"!==e.tagName)return;const r=null===(t=e.properties)||void 0===t?void 0:t.src;if("string"!=typeof r)return;const i=function(e){const t=e.trim();if(!t)return;if(!t.toLowerCase().startsWith("data:"))return;const r=function(e){var t;const r=/^data:([^;,]+)(?:;charset=[^;,]+)?(?:;base64)?,/i.exec(e);return(null===(t=null==r?void 0:r[1])||void 0===t?void 0:t.toLowerCase())||void 0}(t);return r&&W.has(r)?t:void 0}(r);if(i)return e.properties.src=i,void delete e.properties.dataRemoteSrc;const s=function(e){const t=e.trim(),r=t.toLowerCase();if(r.startsWith("http://")||r.startsWith("https://"))return t}(r);if(s)return e.properties.dataRemoteSrc=s,void delete e.properties.src;delete e.properties.src}(e)}))})).use(h).process(e);return t.toString()}(t)}else e.bodyText=(t.text||"").trim()||void 0}(i,r,a),i}function ie(e,t){const r=(e.headers||[]).find((e=>e.key===t.toLowerCase()));return(null==r?void 0:r.value)||void 0}function se(e){if(!e)return"";let t=e.trim();return t.toLowerCase().startsWith("cid:")&&(t=t.slice(4).trim()),t.startsWith("<")&&(t=t.slice(1)),t.endsWith(">")&&(t=t.slice(0,-1)),t.trim()}function ae(e){if("function"==typeof btoa){let t="";for(const r of e)t+=String.fromCharCode(r);return btoa(t)}return globalThis.Buffer.from(e).toString("base64")}function oe(e,t,r){const i="string"==typeof e?e.trim().toLowerCase():"",s=function(e){var t,r,i,s,a;return null!==(a=null!==(s=null!==(i=null!==(r=null!==(t=function(e){if(ne(e,[137,80,78,71,13,10,26,10]))return"image/png"}(e))&&void 0!==t?t:function(e){if(ne(e,[255,216,255]))return"image/jpeg"}(e))&&void 0!==r?r:function(e){const t=le(e,0,6);if("GIF87a"===t||"GIF89a"===t)return"image/gif"}(e))&&void 0!==i?i:function(e){const t=le(e,0,4),r=le(e,8,12);if("RIFF"===t&&"WEBP"===r)return"image/webp"}(e))&&void 0!==s?s:function(e){if(ne(e,[0,0,1,0]))return"image/x-icon"}(e))&&void 0!==a?a:function(e){if(e.length<5)return;const t=new TextDecoder("utf8",{fatal:!1}).decode(e.slice(0,Math.min(e.length,256))).trimStart().toLowerCase();return t.startsWith("<svg")||t.startsWith("<?xml")&&t.includes("<svg")?"image/svg+xml":void 0}(e)}(t);if(i.startsWith("image/")){if(a=i,!(o=s)||a===o||"image/jpg"===a&&"image/jpeg"===o||"image/vnd.microsoft.icon"===a&&"image/x-icon"===o)return i;if(s)return s}var a,o;if(s)return s;const n=function(e){const t=null==e?void 0:e.trim().toLowerCase();if(!t||!t.includes("."))return;return{png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",ico:"image/x-icon",bmp:"image/bmp"}[t.slice(t.lastIndexOf(".")+1)]}(r);return n||i||"application/octet-stream"}function ne(e,t){return!(e.length<t.length)&&t.every(((t,r)=>e[r]===t))}function le(e,t,r){return e.length<r?"":String.fromCodePoint(...e.slice(t,r))}function ce(e){return"string"==typeof e&&e.length>0}function ue(e){if(!e)return;const t=(Array.isArray(e)?e:[e]).map((e=>he(e))).filter(ce);return t.length>0?t.join(", "):void 0}function he(e){if(!e)return;if(Array.isArray(e))return ue(e);if(e.group&&Array.isArray(e.group)){const t=(e.name||"").trim(),r=e.group.map((e=>he(e))).filter(ce).join(", ");return t&&r?`${t}: ${r}`:t||r||void 0}const t=(e.name||"").trim(),r=(e.address||"").trim();if(t&&r){const e=function(e){if(!e)return"";if(!e.includes(",")&&!e.includes('"'))return e;return`"${e.replaceAll("\\","\\\\").replaceAll('"','\\"')}"`}(t);return`${e} <${r}>`}return t||r||void 0}const pe=class{constructor(s){e(this,s),this.action=t(this,"action"),this.allowFullscreen=!1,this.allowOpenInNewTab=!1,this.allowDownload=!1,this.language="en",this.officeViewer="microsoft-office",this.isFullscreen=!1,this.loading=!0,this.fileUrl="",this.renderPdf=()=>[r("div",{class:"action-menu-for-pdf-files"},this.renderActionMenu()),r("iframe",{src:this.sanitizeUrl(this.fileUrl),loading:"lazy"})],this.renderImage=()=>{var e;return r(i,null,this.renderButtons(),r(p,{image:{src:this.sanitizeUrl(this.fileUrl),alt:null!==(e=this.alt)&&void 0!==e?e:"",referrerpolicy:"no-referrer"}}))},this.renderVideo=()=>r("video",{controls:!0},r("source",{src:this.sanitizeUrl(this.fileUrl)})),this.renderAudio=()=>r("audio",{controls:!0},r("source",{src:this.sanitizeUrl(this.fileUrl)})),this.renderText=()=>{const e=[this.renderNoFileSupportMessage(!1)];return[this.renderButtons(),r("object",{data:this.sanitizeUrl(this.fileUrl),type:"text/plain"},e)]},this.renderEmail=()=>this.email?[this.renderButtons(),r("limel-email-viewer",{email:this.email,fallbackUrl:this.sanitizeUrl(this.fileUrl),language:this.language},r("div",{slot:"fallback"},this.renderNoFileSupportMessage(!1)))]:this.renderFileNotFoundMessage(),this.renderOffice=()=>[r("div",{class:"action-menu-for-office-files"},this.renderActionMenu()),r("iframe",{src:this.getOfficeViewerUrl()+encodeURIComponent(this.sanitizeUrl(this.fileUrl))+"&embedded=true",loading:"lazy"})],this.isOfficeFileAccessibleViaURL=()=>"office"===this.fileType&&!(this.fileUrl.startsWith("http://")||this.fileUrl.startsWith("https://")),this.getOfficeViewerUrl=()=>({"microsoft-office":"https://view.officeapps.live.com/op/embed.aspx?src=","google-drive":"https://docs.google.com/gview?url="}[this.officeViewer]),this.renderNoFileSupportMessage=(e=!0)=>r("div",{class:"no-support",role:"alert"},r("h1",null,"⚠️"),r("p",null,this.getTranslation("file-viewer.message.unsupported-filetype")),r("p",{style:{textAlign:"center",margin:"0 auto"}},this.getTranslation("file-viewer.message.try-other-options")),e&&this.renderDownloadButton()),this.renderFileNotFoundMessage=()=>r("div",{class:"no-support",role:"alert"},r("h1",null,"⚠️"),r("p",null,this.getTranslation("file-viewer.message.file-not-found"))),this.renderButtons=()=>r("div",{class:"buttons"},this.renderActionMenu(),this.renderToggleFullscreenButton(),this.renderDownloadButton(),this.renderOpenInNewTabButton()),this.renderToggleFullscreenButton=()=>{if(!this.allowFullscreen||!this.fullscreen.isSupported())return;const e=this.isFullscreen?"multiply":"fit_to_width",t=this.getTranslation(this.isFullscreen?"file-viewer.exit-fullscreen":"file-viewer.open-in-fullscreen");return[r("button",{class:"button--toggle-fullscreen",id:"tooltip-toggle-fullscreen",role:"button",onClick:this.handleToggleFullscreen},r("limel-icon",{name:e}),r("limel-tooltip",{label:t,elementId:"tooltip-toggle-fullscreen",openDirection:"left"}))]},this.renderDownloadButton=()=>{var e;if(this.allowDownload&&!this.isFullscreen)return r("a",{class:"button--download",id:"tooltip-download",role:"button",download:null!==(e=this.filename)&&void 0!==e?e:"",href:this.sanitizeUrl(this.fileUrl),target:"_blank"},r("limel-icon",{name:"download_2"}),r("limel-tooltip",{label:this.getTranslation("file-viewer.download"),elementId:"tooltip-download",openDirection:"left"}))},this.renderOpenInNewTabButton=()=>{if(this.allowOpenInNewTab&&!this.isFullscreen)return r("a",{class:"button--new-tab",id:"tooltip-new-tab",role:"button",href:this.sanitizeUrl(this.fileUrl),target:"_blank",rel:"noopener noreferrer"},r("limel-icon",{name:"external_link"}),r("limel-tooltip",{label:this.getTranslation("file-viewer.open-in-new-tab"),elementId:"tooltip-new-tab",openDirection:"left"}))},this.renderActionMenu=()=>{if(this.actions&&!this.isFullscreen)return r("limel-menu",{class:"action-menu",items:this.actions,onSelect:this.emitOnAction,"open-direction":"left"},r("button",{class:"button--action",id:"tooltip-more",role:"button",slot:"trigger"},r("limel-icon",{name:"menu_2"}),r("limel-tooltip",{label:this.getTranslation("file-viewer.more-actions"),elementId:"tooltip-more",openDirection:"left"})))},this.createURL=async e=>{this.revokePdfBlobUrl();const t={pdf:this.loadPdf,email:this.loadEmail}[e]||this.loadDefault;try{await t()}finally{this.loading=!1}},this.loadPdf=async()=>{const e=await fetch(this.url);if(!e.ok)throw new Error(`Failed to load PDF (${e.status} ${e.statusText})`);const t=await e.blob();this.fileUrl=URL.createObjectURL(t),this.pdfBlobUrl=this.fileUrl},this.loadEmail=async()=>{try{this.email=await re(this.url),this.fileUrl=this.url}catch(e){this.email=void 0,this.fileUrl=""}},this.loadDefault=async()=>{this.fileUrl=this.url},this.handleToggleFullscreen=()=>{this.fullscreen.isSupported()&&(this.fullscreen.toggle(),this.isFullscreen=!this.isFullscreen)},this.emitOnAction=e=>{e.stopPropagation(),this.action.emit(e.detail)},this.fullscreen=new f(this.HostElement)}disconnectedCallback(){void 0!==this.revokeAnimationFrame&&cancelAnimationFrame(this.revokeAnimationFrame),this.revokeAnimationFrame=requestAnimationFrame((()=>{this.revokePdfBlobUrl(),this.revokeAnimationFrame=void 0}))}connectedCallback(){void 0!==this.revokeAnimationFrame&&(cancelAnimationFrame(this.revokeAnimationFrame),this.revokeAnimationFrame=void 0)}async componentWillLoad(){this.fileType=d(this.filename,this.url),await this.createURL(this.fileType)}render(){return this.isOfficeFileAccessibleViaURL?this.loading?r("limel-spinner",{size:"x-small",limeBranded:!1}):this.renderFileViewer():this.renderNoFileSupportMessage()}async watchUrl(e,t){e!==t&&(this.loading=!0,this.fileType=d(this.filename,this.fileUrl),await this.createURL(this.fileType))}renderFileViewer(){return({pdf:this.renderPdf,image:this.renderImage,video:this.renderVideo,audio:this.renderAudio,text:this.renderText,email:this.renderEmail,office:this.renderOffice}[this.fileType]||this.renderNoFileSupportMessage)()}revokePdfBlobUrl(){this.pdfBlobUrl&&(URL.revokeObjectURL(this.pdfBlobUrl),this.pdfBlobUrl=void 0)}sanitizeUrl(e){if(!(null==e?void 0:e.trim()))return"";try{const t=new URL(e,window.location.href);return["http:","https:","blob:"].includes(t.protocol)?t.href:""}catch(e){return""}}getTranslation(e){return a.get(e,this.language)}get HostElement(){return s(this)}static get watchers(){return{url:[{watchUrl:0}]}}};pe.style='@charset "UTF-8";.buttons{position:absolute;z-index:1;bottom:0.25rem;right:0.25rem;display:flex;flex-direction:column;gap:0.25rem}@media (pointer: coarse){.buttons{gap:0.5rem}}.no-support{display:flex;flex-direction:column;gap:0.5rem;align-items:center;border:1px dashed rgb(var(--contrast-600));border-radius:0.5rem;padding:1.25rem}.no-support h1,.no-support p{margin:0}[class^=button--]{all:unset;transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-normal)}[class^=button--]:hover,[class^=button--]:focus,[class^=button--]:focus-visible{will-change:color, background-color, box-shadow, transform}[class^=button--]:hover,[class^=button--]:focus-visible{transform:translate3d(0, -0.04rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}[class^=button--]:active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}[class^=button--]:hover,[class^=button--]:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}[class^=button--]:focus{outline:none}[class^=button--]:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}[class^=button--]{display:flex;align-items:center;justify-content:center;border-radius:50%;width:var(--limel-file-viewer-size-of-buttons);height:var(--limel-file-viewer-size-of-buttons);background-color:rgba(var(--contrast-100), 0.8);backdrop-filter:blur(0.25rem);-webkit-backdrop-filter:blur(0.25rem)}[class^=button--] limel-icon{transition:color 0.2s ease;width:1.25rem;color:rgb(var(--contrast-1200))}[class^=button--]:hover limel-icon{color:rgb(var(--contrast-1400))}.action-menu-for-pdf-files,.action-menu-for-office-files{position:absolute;right:0.75rem}.action-menu-for-pdf-files{bottom:0.75rem}.action-menu-for-office-files{top:0.75rem}:host{--limel-file-viewer-size-of-buttons:2rem;isolation:isolate;position:relative;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;height:100%}*{box-sizing:border-box}img,video,audio,object,iframe{max-height:100%;max-width:100%;box-sizing:border-box}iframe{border:none;width:100%;height:100%;min-height:20rem}img{min-width:7rem;object-fit:contain}video{width:100%;height:auto}audio{width:100%}object{width:100%;height:100%}object[type="application/pdf"]{min-height:20rem}object[type="text/plain"]{border-radius:0.25rem;padding-right:var(--limel-file-viewer-size-of-buttons);overflow-y:auto}:host(:fullscreen){background-color:rgb(var(--color-gray-darker))}:host(:fullscreen) object[type="text/plain"]{max-width:50rem;max-height:calc(100% - 2rem)}:host(:-webkit-full-screen){background-color:rgb(var(--color-gray-darker))}:host(:-webkit-full-screen) object[type="text/plain"]{max-width:50rem;max-height:calc(100% - 2rem)}';export{pe as limel_file_viewer}
|