dash-button-web 0.0.21 → 0.0.23-beta.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/dist/cjs/app-globals-cd54EKuF.js +15 -0
- package/dist/cjs/dash-button.cjs.entry.js +2189 -2074
- package/dist/cjs/index-BfwSK14n.js +1507 -0
- package/dist/cjs/index.cjs.js +0 -2
- package/dist/cjs/loader.cjs.js +5 -7
- package/dist/cjs/web-compnont.cjs.js +15 -15
- package/dist/collection/collection-manifest.json +5 -3
- package/dist/collection/components/my-component/dash-button.js +134 -38
- package/dist/collection/global/app.js +7 -0
- package/dist/collection/index.js +0 -1
- package/dist/collection/services/config.js +2 -1
- package/dist/collection/services/menu.js +18 -5
- package/dist/components/dash-button.js +1 -4233
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -3
- package/dist/esm/app-globals-B2hgy9FG.js +13 -0
- package/dist/esm/dash-button.entry.js +2189 -2072
- package/dist/esm/index-6_Ga3Eox.js +1499 -0
- package/dist/esm/index.js +0 -2
- package/dist/esm/loader.js +6 -6
- package/dist/esm/web-compnont.js +15 -14
- package/dist/types/components/my-component/dash-button.d.ts +3 -0
- package/dist/types/components.d.ts +75 -3
- package/dist/types/global/app.d.ts +2 -0
- package/dist/types/services/config.d.ts +2 -0
- package/dist/types/stencil-public-runtime.d.ts +268 -70
- package/dist/web-compnont/index.esm.js +0 -2
- package/dist/web-compnont/p-39949e8a.entry.js +1 -0
- package/dist/web-compnont/p-6_Ga3Eox.js +3 -0
- package/dist/web-compnont/p-DiU1T8CW.js +1 -0
- package/dist/web-compnont/web-compnont.esm.js +1 -2
- package/loader/cdn.js +1 -3
- package/loader/index.cjs.js +1 -3
- package/loader/index.d.ts +4 -1
- package/loader/index.es2017.js +1 -3
- package/loader/index.js +1 -3
- package/package.json +3 -2
- package/readme.md +43 -19
- package/dist/cjs/dash-button.cjs.entry.js.map +0 -1
- package/dist/cjs/index-87d4993d.js +0 -1793
- package/dist/cjs/index-87d4993d.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/web-compnont.cjs.js.map +0 -1
- package/dist/collection/components/my-component/dash-button.e2e.js +0 -26
- package/dist/collection/components/my-component/dash-button.e2e.js.map +0 -1
- package/dist/collection/components/my-component/dash-button.js.map +0 -1
- package/dist/collection/components/my-component/dash-button.spec.js +0 -35
- package/dist/collection/components/my-component/dash-button.spec.js.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/services/config.js.map +0 -1
- package/dist/collection/services/menu.js.map +0 -1
- package/dist/components/dash-button.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/esm/dash-button.entry.js.map +0 -1
- package/dist/esm/index-e3df5eaf.js +0 -1766
- package/dist/esm/index-e3df5eaf.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/polyfills/core-js.js +0 -11
- package/dist/esm/polyfills/dom.js +0 -79
- package/dist/esm/polyfills/es5-html-element.js +0 -1
- package/dist/esm/polyfills/index.js +0 -34
- package/dist/esm/polyfills/system.js +0 -6
- package/dist/esm/web-compnont.js.map +0 -1
- package/dist/web-compnont/index.esm.js.map +0 -1
- package/dist/web-compnont/p-c1ec12fe.js +0 -3
- package/dist/web-compnont/p-c1ec12fe.js.map +0 -1
- package/dist/web-compnont/p-fc02a292.entry.js +0 -10
- package/dist/web-compnont/p-fc02a292.entry.js.map +0 -1
- package/dist/web-compnont/web-compnont.esm.js.map +0 -1
- package/loader/package.json +0 -11
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const index = require('./index-87d4993d.js');
|
|
3
|
+
var index = require('./index-BfwSK14n.js');
|
|
6
4
|
|
|
7
5
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
8
6
|
|
|
7
|
+
function getDefaultExportFromCjs (x) {
|
|
8
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
9
|
+
}
|
|
10
|
+
|
|
9
11
|
function getAugmentedNamespace(n) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
if (n.__esModule) return n;
|
|
13
|
+
var f = n.default;
|
|
14
|
+
if (typeof f == "function") {
|
|
15
|
+
var a = function a () {
|
|
16
|
+
if (this instanceof a) {
|
|
17
|
+
return Reflect.construct(f, arguments, this.constructor);
|
|
18
|
+
}
|
|
19
|
+
return f.apply(this, arguments);
|
|
20
|
+
};
|
|
21
|
+
a.prototype = f.prototype;
|
|
22
|
+
} else a = {};
|
|
23
|
+
Object.defineProperty(a, '__esModule', {value: true});
|
|
12
24
|
Object.keys(n).forEach(function (k) {
|
|
13
25
|
var d = Object.getOwnPropertyDescriptor(n, k);
|
|
14
26
|
Object.defineProperty(a, k, d.get ? d : {
|
|
@@ -23,165 +35,176 @@ function getAugmentedNamespace(n) {
|
|
|
23
35
|
|
|
24
36
|
var base64Js = {};
|
|
25
37
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
revLookup[
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
38
|
+
var hasRequiredBase64Js;
|
|
39
|
+
|
|
40
|
+
function requireBase64Js () {
|
|
41
|
+
if (hasRequiredBase64Js) return base64Js;
|
|
42
|
+
hasRequiredBase64Js = 1;
|
|
43
|
+
|
|
44
|
+
base64Js.byteLength = byteLength;
|
|
45
|
+
base64Js.toByteArray = toByteArray;
|
|
46
|
+
base64Js.fromByteArray = fromByteArray;
|
|
47
|
+
|
|
48
|
+
var lookup = [];
|
|
49
|
+
var revLookup = [];
|
|
50
|
+
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
|
|
51
|
+
|
|
52
|
+
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
53
|
+
for (var i = 0, len = code.length; i < len; ++i) {
|
|
54
|
+
lookup[i] = code[i];
|
|
55
|
+
revLookup[code.charCodeAt(i)] = i;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Support decoding URL-safe base64 strings, as Node.js does.
|
|
59
|
+
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
|
|
60
|
+
revLookup['-'.charCodeAt(0)] = 62;
|
|
61
|
+
revLookup['_'.charCodeAt(0)] = 63;
|
|
62
|
+
|
|
63
|
+
function getLens (b64) {
|
|
64
|
+
var len = b64.length;
|
|
65
|
+
|
|
66
|
+
if (len % 4 > 0) {
|
|
67
|
+
throw new Error('Invalid string. Length must be a multiple of 4')
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Trim off extra bytes after placeholder bytes are found
|
|
71
|
+
// See: https://github.com/beatgammit/base64-js/issues/42
|
|
72
|
+
var validLen = b64.indexOf('=');
|
|
73
|
+
if (validLen === -1) validLen = len;
|
|
74
|
+
|
|
75
|
+
var placeHoldersLen = validLen === len
|
|
76
|
+
? 0
|
|
77
|
+
: 4 - (validLen % 4);
|
|
78
|
+
|
|
79
|
+
return [validLen, placeHoldersLen]
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// base64 is 4/3 + up to two characters of the original data
|
|
83
|
+
function byteLength (b64) {
|
|
84
|
+
var lens = getLens(b64);
|
|
85
|
+
var validLen = lens[0];
|
|
86
|
+
var placeHoldersLen = lens[1];
|
|
87
|
+
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function _byteLength (b64, validLen, placeHoldersLen) {
|
|
91
|
+
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function toByteArray (b64) {
|
|
95
|
+
var tmp;
|
|
96
|
+
var lens = getLens(b64);
|
|
97
|
+
var validLen = lens[0];
|
|
98
|
+
var placeHoldersLen = lens[1];
|
|
99
|
+
|
|
100
|
+
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
|
|
101
|
+
|
|
102
|
+
var curByte = 0;
|
|
103
|
+
|
|
104
|
+
// if there are placeholders, only get up to the last complete 4 chars
|
|
105
|
+
var len = placeHoldersLen > 0
|
|
106
|
+
? validLen - 4
|
|
107
|
+
: validLen;
|
|
108
|
+
|
|
109
|
+
var i;
|
|
110
|
+
for (i = 0; i < len; i += 4) {
|
|
111
|
+
tmp =
|
|
112
|
+
(revLookup[b64.charCodeAt(i)] << 18) |
|
|
113
|
+
(revLookup[b64.charCodeAt(i + 1)] << 12) |
|
|
114
|
+
(revLookup[b64.charCodeAt(i + 2)] << 6) |
|
|
115
|
+
revLookup[b64.charCodeAt(i + 3)];
|
|
116
|
+
arr[curByte++] = (tmp >> 16) & 0xFF;
|
|
117
|
+
arr[curByte++] = (tmp >> 8) & 0xFF;
|
|
118
|
+
arr[curByte++] = tmp & 0xFF;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (placeHoldersLen === 2) {
|
|
122
|
+
tmp =
|
|
123
|
+
(revLookup[b64.charCodeAt(i)] << 2) |
|
|
124
|
+
(revLookup[b64.charCodeAt(i + 1)] >> 4);
|
|
125
|
+
arr[curByte++] = tmp & 0xFF;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (placeHoldersLen === 1) {
|
|
129
|
+
tmp =
|
|
130
|
+
(revLookup[b64.charCodeAt(i)] << 10) |
|
|
131
|
+
(revLookup[b64.charCodeAt(i + 1)] << 4) |
|
|
132
|
+
(revLookup[b64.charCodeAt(i + 2)] >> 2);
|
|
133
|
+
arr[curByte++] = (tmp >> 8) & 0xFF;
|
|
134
|
+
arr[curByte++] = tmp & 0xFF;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return arr
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function tripletToBase64 (num) {
|
|
141
|
+
return lookup[num >> 18 & 0x3F] +
|
|
142
|
+
lookup[num >> 12 & 0x3F] +
|
|
143
|
+
lookup[num >> 6 & 0x3F] +
|
|
144
|
+
lookup[num & 0x3F]
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function encodeChunk (uint8, start, end) {
|
|
148
|
+
var tmp;
|
|
149
|
+
var output = [];
|
|
150
|
+
for (var i = start; i < end; i += 3) {
|
|
151
|
+
tmp =
|
|
152
|
+
((uint8[i] << 16) & 0xFF0000) +
|
|
153
|
+
((uint8[i + 1] << 8) & 0xFF00) +
|
|
154
|
+
(uint8[i + 2] & 0xFF);
|
|
155
|
+
output.push(tripletToBase64(tmp));
|
|
156
|
+
}
|
|
157
|
+
return output.join('')
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function fromByteArray (uint8) {
|
|
161
|
+
var tmp;
|
|
162
|
+
var len = uint8.length;
|
|
163
|
+
var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
|
|
164
|
+
var parts = [];
|
|
165
|
+
var maxChunkLength = 16383; // must be multiple of 3
|
|
166
|
+
|
|
167
|
+
// go through the array every three bytes, we'll deal with trailing stuff later
|
|
168
|
+
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
|
169
|
+
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// pad the end with zeros, but make sure to not forget the extra bytes
|
|
173
|
+
if (extraBytes === 1) {
|
|
174
|
+
tmp = uint8[len - 1];
|
|
175
|
+
parts.push(
|
|
176
|
+
lookup[tmp >> 2] +
|
|
177
|
+
lookup[(tmp << 4) & 0x3F] +
|
|
178
|
+
'=='
|
|
179
|
+
);
|
|
180
|
+
} else if (extraBytes === 2) {
|
|
181
|
+
tmp = (uint8[len - 2] << 8) + uint8[len - 1];
|
|
182
|
+
parts.push(
|
|
183
|
+
lookup[tmp >> 10] +
|
|
184
|
+
lookup[(tmp >> 4) & 0x3F] +
|
|
185
|
+
lookup[(tmp << 2) & 0x3F] +
|
|
186
|
+
'='
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return parts.join('')
|
|
191
|
+
}
|
|
192
|
+
return base64Js;
|
|
140
193
|
}
|
|
141
194
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
var len = uint8.length;
|
|
145
|
-
var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
|
|
146
|
-
var parts = [];
|
|
147
|
-
var maxChunkLength = 16383; // must be multiple of 3
|
|
148
|
-
|
|
149
|
-
// go through the array every three bytes, we'll deal with trailing stuff later
|
|
150
|
-
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
|
151
|
-
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// pad the end with zeros, but make sure to not forget the extra bytes
|
|
155
|
-
if (extraBytes === 1) {
|
|
156
|
-
tmp = uint8[len - 1];
|
|
157
|
-
parts.push(
|
|
158
|
-
lookup[tmp >> 2] +
|
|
159
|
-
lookup[(tmp << 4) & 0x3F] +
|
|
160
|
-
'=='
|
|
161
|
-
);
|
|
162
|
-
} else if (extraBytes === 2) {
|
|
163
|
-
tmp = (uint8[len - 2] << 8) + uint8[len - 1];
|
|
164
|
-
parts.push(
|
|
165
|
-
lookup[tmp >> 10] +
|
|
166
|
-
lookup[(tmp >> 4) & 0x3F] +
|
|
167
|
-
lookup[(tmp << 2) & 0x3F] +
|
|
168
|
-
'='
|
|
169
|
-
);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
return parts.join('')
|
|
173
|
-
}
|
|
195
|
+
var base64JsExports = requireBase64Js();
|
|
196
|
+
var base64 = /*@__PURE__*/getDefaultExportFromCjs(base64JsExports);
|
|
174
197
|
|
|
175
198
|
var sha256$1 = {exports: {}};
|
|
176
199
|
|
|
177
|
-
|
|
200
|
+
var _nodeResolve_empty = {};
|
|
178
201
|
|
|
179
|
-
|
|
202
|
+
var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({
|
|
180
203
|
__proto__: null,
|
|
181
|
-
|
|
204
|
+
default: _nodeResolve_empty
|
|
182
205
|
});
|
|
183
206
|
|
|
184
|
-
|
|
207
|
+
var require$$1 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
|
|
185
208
|
|
|
186
209
|
/**
|
|
187
210
|
* [js-sha256]{@link https://github.com/emn178/js-sha256}
|
|
@@ -192,522 +215,530 @@ const require$$1 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
|
|
|
192
215
|
* @license MIT
|
|
193
216
|
*/
|
|
194
217
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
}
|
|
218
|
+
var hasRequiredSha256;
|
|
219
|
+
|
|
220
|
+
function requireSha256 () {
|
|
221
|
+
if (hasRequiredSha256) return sha256$1.exports;
|
|
222
|
+
hasRequiredSha256 = 1;
|
|
223
|
+
(function (module) {
|
|
224
|
+
/*jslint bitwise: true */
|
|
225
|
+
(function () {
|
|
226
|
+
|
|
227
|
+
var ERROR = 'input is invalid type';
|
|
228
|
+
var WINDOW = typeof window === 'object';
|
|
229
|
+
var root = WINDOW ? window : {};
|
|
230
|
+
if (root.JS_SHA256_NO_WINDOW) {
|
|
231
|
+
WINDOW = false;
|
|
232
|
+
}
|
|
233
|
+
var WEB_WORKER = !WINDOW && typeof self === 'object';
|
|
234
|
+
var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
|
|
235
|
+
if (NODE_JS) {
|
|
236
|
+
root = commonjsGlobal;
|
|
237
|
+
} else if (WEB_WORKER) {
|
|
238
|
+
root = self;
|
|
239
|
+
}
|
|
240
|
+
var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && 'object' === 'object' && module.exports;
|
|
241
|
+
var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
|
|
242
|
+
var HEX_CHARS = '0123456789abcdef'.split('');
|
|
243
|
+
var EXTRA = [-2147483648, 8388608, 32768, 128];
|
|
244
|
+
var SHIFT = [24, 16, 8, 0];
|
|
245
|
+
var K = [
|
|
246
|
+
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
247
|
+
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
248
|
+
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
249
|
+
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
250
|
+
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
251
|
+
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
252
|
+
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
253
|
+
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
|
254
|
+
];
|
|
255
|
+
var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];
|
|
256
|
+
|
|
257
|
+
var blocks = [];
|
|
258
|
+
|
|
259
|
+
if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {
|
|
260
|
+
Array.isArray = function (obj) {
|
|
261
|
+
return Object.prototype.toString.call(obj) === '[object Array]';
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
|
|
266
|
+
ArrayBuffer.isView = function (obj) {
|
|
267
|
+
return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
var createOutputMethod = function (outputType, is224) {
|
|
272
|
+
return function (message) {
|
|
273
|
+
return new Sha256(is224, true).update(message)[outputType]();
|
|
274
|
+
};
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
var createMethod = function (is224) {
|
|
278
|
+
var method = createOutputMethod('hex', is224);
|
|
279
|
+
if (NODE_JS) {
|
|
280
|
+
method = nodeWrap(method, is224);
|
|
281
|
+
}
|
|
282
|
+
method.create = function () {
|
|
283
|
+
return new Sha256(is224);
|
|
284
|
+
};
|
|
285
|
+
method.update = function (message) {
|
|
286
|
+
return method.create().update(message);
|
|
287
|
+
};
|
|
288
|
+
for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
|
|
289
|
+
var type = OUTPUT_TYPES[i];
|
|
290
|
+
method[type] = createOutputMethod(type, is224);
|
|
291
|
+
}
|
|
292
|
+
return method;
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
var nodeWrap = function (method, is224) {
|
|
296
|
+
var crypto = require$$1;
|
|
297
|
+
var Buffer = require$$1.Buffer;
|
|
298
|
+
var algorithm = is224 ? 'sha224' : 'sha256';
|
|
299
|
+
var bufferFrom;
|
|
300
|
+
if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {
|
|
301
|
+
bufferFrom = Buffer.from;
|
|
302
|
+
} else {
|
|
303
|
+
bufferFrom = function (message) {
|
|
304
|
+
return new Buffer(message);
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
var nodeMethod = function (message) {
|
|
308
|
+
if (typeof message === 'string') {
|
|
309
|
+
return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');
|
|
310
|
+
} else {
|
|
311
|
+
if (message === null || message === undefined) {
|
|
312
|
+
throw new Error(ERROR);
|
|
313
|
+
} else if (message.constructor === ArrayBuffer) {
|
|
314
|
+
message = new Uint8Array(message);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (Array.isArray(message) || ArrayBuffer.isView(message) ||
|
|
318
|
+
message.constructor === Buffer) {
|
|
319
|
+
return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');
|
|
320
|
+
} else {
|
|
321
|
+
return method(message);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
return nodeMethod;
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
var createHmacOutputMethod = function (outputType, is224) {
|
|
328
|
+
return function (key, message) {
|
|
329
|
+
return new HmacSha256(key, is224, true).update(message)[outputType]();
|
|
330
|
+
};
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
var createHmacMethod = function (is224) {
|
|
334
|
+
var method = createHmacOutputMethod('hex', is224);
|
|
335
|
+
method.create = function (key) {
|
|
336
|
+
return new HmacSha256(key, is224);
|
|
337
|
+
};
|
|
338
|
+
method.update = function (key, message) {
|
|
339
|
+
return method.create(key).update(message);
|
|
340
|
+
};
|
|
341
|
+
for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
|
|
342
|
+
var type = OUTPUT_TYPES[i];
|
|
343
|
+
method[type] = createHmacOutputMethod(type, is224);
|
|
344
|
+
}
|
|
345
|
+
return method;
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
function Sha256(is224, sharedMemory) {
|
|
349
|
+
if (sharedMemory) {
|
|
350
|
+
blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
|
351
|
+
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
|
352
|
+
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
|
353
|
+
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
|
354
|
+
this.blocks = blocks;
|
|
355
|
+
} else {
|
|
356
|
+
this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
if (is224) {
|
|
360
|
+
this.h0 = 0xc1059ed8;
|
|
361
|
+
this.h1 = 0x367cd507;
|
|
362
|
+
this.h2 = 0x3070dd17;
|
|
363
|
+
this.h3 = 0xf70e5939;
|
|
364
|
+
this.h4 = 0xffc00b31;
|
|
365
|
+
this.h5 = 0x68581511;
|
|
366
|
+
this.h6 = 0x64f98fa7;
|
|
367
|
+
this.h7 = 0xbefa4fa4;
|
|
368
|
+
} else { // 256
|
|
369
|
+
this.h0 = 0x6a09e667;
|
|
370
|
+
this.h1 = 0xbb67ae85;
|
|
371
|
+
this.h2 = 0x3c6ef372;
|
|
372
|
+
this.h3 = 0xa54ff53a;
|
|
373
|
+
this.h4 = 0x510e527f;
|
|
374
|
+
this.h5 = 0x9b05688c;
|
|
375
|
+
this.h6 = 0x1f83d9ab;
|
|
376
|
+
this.h7 = 0x5be0cd19;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
this.block = this.start = this.bytes = this.hBytes = 0;
|
|
380
|
+
this.finalized = this.hashed = false;
|
|
381
|
+
this.first = true;
|
|
382
|
+
this.is224 = is224;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
Sha256.prototype.update = function (message) {
|
|
386
|
+
if (this.finalized) {
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
var notString, type = typeof message;
|
|
390
|
+
if (type !== 'string') {
|
|
391
|
+
if (type === 'object') {
|
|
392
|
+
if (message === null) {
|
|
393
|
+
throw new Error(ERROR);
|
|
394
|
+
} else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
|
|
395
|
+
message = new Uint8Array(message);
|
|
396
|
+
} else if (!Array.isArray(message)) {
|
|
397
|
+
if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
|
|
398
|
+
throw new Error(ERROR);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
} else {
|
|
402
|
+
throw new Error(ERROR);
|
|
403
|
+
}
|
|
404
|
+
notString = true;
|
|
405
|
+
}
|
|
406
|
+
var code, index = 0, i, length = message.length, blocks = this.blocks;
|
|
407
|
+
|
|
408
|
+
while (index < length) {
|
|
409
|
+
if (this.hashed) {
|
|
410
|
+
this.hashed = false;
|
|
411
|
+
blocks[0] = this.block;
|
|
412
|
+
blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
|
413
|
+
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
|
414
|
+
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
|
415
|
+
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if (notString) {
|
|
419
|
+
for (i = this.start; index < length && i < 64; ++index) {
|
|
420
|
+
blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
|
|
421
|
+
}
|
|
422
|
+
} else {
|
|
423
|
+
for (i = this.start; index < length && i < 64; ++index) {
|
|
424
|
+
code = message.charCodeAt(index);
|
|
425
|
+
if (code < 0x80) {
|
|
426
|
+
blocks[i >> 2] |= code << SHIFT[i++ & 3];
|
|
427
|
+
} else if (code < 0x800) {
|
|
428
|
+
blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
|
|
429
|
+
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
|
|
430
|
+
} else if (code < 0xd800 || code >= 0xe000) {
|
|
431
|
+
blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
|
|
432
|
+
blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
|
|
433
|
+
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
|
|
434
|
+
} else {
|
|
435
|
+
code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
|
|
436
|
+
blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
|
|
437
|
+
blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
|
|
438
|
+
blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
|
|
439
|
+
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
this.lastByteIndex = i;
|
|
445
|
+
this.bytes += i - this.start;
|
|
446
|
+
if (i >= 64) {
|
|
447
|
+
this.block = blocks[16];
|
|
448
|
+
this.start = i - 64;
|
|
449
|
+
this.hash();
|
|
450
|
+
this.hashed = true;
|
|
451
|
+
} else {
|
|
452
|
+
this.start = i;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
if (this.bytes > 4294967295) {
|
|
456
|
+
this.hBytes += this.bytes / 4294967296 << 0;
|
|
457
|
+
this.bytes = this.bytes % 4294967296;
|
|
458
|
+
}
|
|
459
|
+
return this;
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
Sha256.prototype.finalize = function () {
|
|
463
|
+
if (this.finalized) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
this.finalized = true;
|
|
467
|
+
var blocks = this.blocks, i = this.lastByteIndex;
|
|
468
|
+
blocks[16] = this.block;
|
|
469
|
+
blocks[i >> 2] |= EXTRA[i & 3];
|
|
470
|
+
this.block = blocks[16];
|
|
471
|
+
if (i >= 56) {
|
|
472
|
+
if (!this.hashed) {
|
|
473
|
+
this.hash();
|
|
474
|
+
}
|
|
475
|
+
blocks[0] = this.block;
|
|
476
|
+
blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
|
477
|
+
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
|
478
|
+
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
|
479
|
+
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
|
480
|
+
}
|
|
481
|
+
blocks[14] = this.hBytes << 3 | this.bytes >>> 29;
|
|
482
|
+
blocks[15] = this.bytes << 3;
|
|
483
|
+
this.hash();
|
|
484
|
+
};
|
|
485
|
+
|
|
486
|
+
Sha256.prototype.hash = function () {
|
|
487
|
+
var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,
|
|
488
|
+
h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;
|
|
489
|
+
|
|
490
|
+
for (j = 16; j < 64; ++j) {
|
|
491
|
+
// rightrotate
|
|
492
|
+
t1 = blocks[j - 15];
|
|
493
|
+
s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);
|
|
494
|
+
t1 = blocks[j - 2];
|
|
495
|
+
s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);
|
|
496
|
+
blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
bc = b & c;
|
|
500
|
+
for (j = 0; j < 64; j += 4) {
|
|
501
|
+
if (this.first) {
|
|
502
|
+
if (this.is224) {
|
|
503
|
+
ab = 300032;
|
|
504
|
+
t1 = blocks[0] - 1413257819;
|
|
505
|
+
h = t1 - 150054599 << 0;
|
|
506
|
+
d = t1 + 24177077 << 0;
|
|
507
|
+
} else {
|
|
508
|
+
ab = 704751109;
|
|
509
|
+
t1 = blocks[0] - 210244248;
|
|
510
|
+
h = t1 - 1521486534 << 0;
|
|
511
|
+
d = t1 + 143694565 << 0;
|
|
512
|
+
}
|
|
513
|
+
this.first = false;
|
|
514
|
+
} else {
|
|
515
|
+
s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));
|
|
516
|
+
s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));
|
|
517
|
+
ab = a & b;
|
|
518
|
+
maj = ab ^ (a & c) ^ bc;
|
|
519
|
+
ch = (e & f) ^ (~e & g);
|
|
520
|
+
t1 = h + s1 + ch + K[j] + blocks[j];
|
|
521
|
+
t2 = s0 + maj;
|
|
522
|
+
h = d + t1 << 0;
|
|
523
|
+
d = t1 + t2 << 0;
|
|
524
|
+
}
|
|
525
|
+
s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));
|
|
526
|
+
s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));
|
|
527
|
+
da = d & a;
|
|
528
|
+
maj = da ^ (d & b) ^ ab;
|
|
529
|
+
ch = (h & e) ^ (~h & f);
|
|
530
|
+
t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];
|
|
531
|
+
t2 = s0 + maj;
|
|
532
|
+
g = c + t1 << 0;
|
|
533
|
+
c = t1 + t2 << 0;
|
|
534
|
+
s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));
|
|
535
|
+
s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));
|
|
536
|
+
cd = c & d;
|
|
537
|
+
maj = cd ^ (c & a) ^ da;
|
|
538
|
+
ch = (g & h) ^ (~g & e);
|
|
539
|
+
t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];
|
|
540
|
+
t2 = s0 + maj;
|
|
541
|
+
f = b + t1 << 0;
|
|
542
|
+
b = t1 + t2 << 0;
|
|
543
|
+
s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));
|
|
544
|
+
s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));
|
|
545
|
+
bc = b & c;
|
|
546
|
+
maj = bc ^ (b & d) ^ cd;
|
|
547
|
+
ch = (f & g) ^ (~f & h);
|
|
548
|
+
t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];
|
|
549
|
+
t2 = s0 + maj;
|
|
550
|
+
e = a + t1 << 0;
|
|
551
|
+
a = t1 + t2 << 0;
|
|
552
|
+
this.chromeBugWorkAround = true;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
this.h0 = this.h0 + a << 0;
|
|
556
|
+
this.h1 = this.h1 + b << 0;
|
|
557
|
+
this.h2 = this.h2 + c << 0;
|
|
558
|
+
this.h3 = this.h3 + d << 0;
|
|
559
|
+
this.h4 = this.h4 + e << 0;
|
|
560
|
+
this.h5 = this.h5 + f << 0;
|
|
561
|
+
this.h6 = this.h6 + g << 0;
|
|
562
|
+
this.h7 = this.h7 + h << 0;
|
|
563
|
+
};
|
|
564
|
+
|
|
565
|
+
Sha256.prototype.hex = function () {
|
|
566
|
+
this.finalize();
|
|
567
|
+
|
|
568
|
+
var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,
|
|
569
|
+
h6 = this.h6, h7 = this.h7;
|
|
570
|
+
|
|
571
|
+
var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +
|
|
572
|
+
HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +
|
|
573
|
+
HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +
|
|
574
|
+
HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +
|
|
575
|
+
HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +
|
|
576
|
+
HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +
|
|
577
|
+
HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +
|
|
578
|
+
HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +
|
|
579
|
+
HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +
|
|
580
|
+
HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +
|
|
581
|
+
HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +
|
|
582
|
+
HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +
|
|
583
|
+
HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +
|
|
584
|
+
HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +
|
|
585
|
+
HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +
|
|
586
|
+
HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +
|
|
587
|
+
HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +
|
|
588
|
+
HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +
|
|
589
|
+
HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +
|
|
590
|
+
HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +
|
|
591
|
+
HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +
|
|
592
|
+
HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +
|
|
593
|
+
HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +
|
|
594
|
+
HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +
|
|
595
|
+
HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +
|
|
596
|
+
HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +
|
|
597
|
+
HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +
|
|
598
|
+
HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];
|
|
599
|
+
if (!this.is224) {
|
|
600
|
+
hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +
|
|
601
|
+
HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +
|
|
602
|
+
HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +
|
|
603
|
+
HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];
|
|
604
|
+
}
|
|
605
|
+
return hex;
|
|
606
|
+
};
|
|
607
|
+
|
|
608
|
+
Sha256.prototype.toString = Sha256.prototype.hex;
|
|
609
|
+
|
|
610
|
+
Sha256.prototype.digest = function () {
|
|
611
|
+
this.finalize();
|
|
612
|
+
|
|
613
|
+
var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,
|
|
614
|
+
h6 = this.h6, h7 = this.h7;
|
|
615
|
+
|
|
616
|
+
var arr = [
|
|
617
|
+
(h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,
|
|
618
|
+
(h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,
|
|
619
|
+
(h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,
|
|
620
|
+
(h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,
|
|
621
|
+
(h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,
|
|
622
|
+
(h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,
|
|
623
|
+
(h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF
|
|
624
|
+
];
|
|
625
|
+
if (!this.is224) {
|
|
626
|
+
arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);
|
|
627
|
+
}
|
|
628
|
+
return arr;
|
|
629
|
+
};
|
|
630
|
+
|
|
631
|
+
Sha256.prototype.array = Sha256.prototype.digest;
|
|
632
|
+
|
|
633
|
+
Sha256.prototype.arrayBuffer = function () {
|
|
634
|
+
this.finalize();
|
|
635
|
+
|
|
636
|
+
var buffer = new ArrayBuffer(this.is224 ? 28 : 32);
|
|
637
|
+
var dataView = new DataView(buffer);
|
|
638
|
+
dataView.setUint32(0, this.h0);
|
|
639
|
+
dataView.setUint32(4, this.h1);
|
|
640
|
+
dataView.setUint32(8, this.h2);
|
|
641
|
+
dataView.setUint32(12, this.h3);
|
|
642
|
+
dataView.setUint32(16, this.h4);
|
|
643
|
+
dataView.setUint32(20, this.h5);
|
|
644
|
+
dataView.setUint32(24, this.h6);
|
|
645
|
+
if (!this.is224) {
|
|
646
|
+
dataView.setUint32(28, this.h7);
|
|
647
|
+
}
|
|
648
|
+
return buffer;
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
function HmacSha256(key, is224, sharedMemory) {
|
|
652
|
+
var i, type = typeof key;
|
|
653
|
+
if (type === 'string') {
|
|
654
|
+
var bytes = [], length = key.length, index = 0, code;
|
|
655
|
+
for (i = 0; i < length; ++i) {
|
|
656
|
+
code = key.charCodeAt(i);
|
|
657
|
+
if (code < 0x80) {
|
|
658
|
+
bytes[index++] = code;
|
|
659
|
+
} else if (code < 0x800) {
|
|
660
|
+
bytes[index++] = (0xc0 | (code >> 6));
|
|
661
|
+
bytes[index++] = (0x80 | (code & 0x3f));
|
|
662
|
+
} else if (code < 0xd800 || code >= 0xe000) {
|
|
663
|
+
bytes[index++] = (0xe0 | (code >> 12));
|
|
664
|
+
bytes[index++] = (0x80 | ((code >> 6) & 0x3f));
|
|
665
|
+
bytes[index++] = (0x80 | (code & 0x3f));
|
|
666
|
+
} else {
|
|
667
|
+
code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));
|
|
668
|
+
bytes[index++] = (0xf0 | (code >> 18));
|
|
669
|
+
bytes[index++] = (0x80 | ((code >> 12) & 0x3f));
|
|
670
|
+
bytes[index++] = (0x80 | ((code >> 6) & 0x3f));
|
|
671
|
+
bytes[index++] = (0x80 | (code & 0x3f));
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
key = bytes;
|
|
675
|
+
} else {
|
|
676
|
+
if (type === 'object') {
|
|
677
|
+
if (key === null) {
|
|
678
|
+
throw new Error(ERROR);
|
|
679
|
+
} else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {
|
|
680
|
+
key = new Uint8Array(key);
|
|
681
|
+
} else if (!Array.isArray(key)) {
|
|
682
|
+
if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {
|
|
683
|
+
throw new Error(ERROR);
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
} else {
|
|
687
|
+
throw new Error(ERROR);
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
if (key.length > 64) {
|
|
692
|
+
key = (new Sha256(is224, true)).update(key).array();
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
var oKeyPad = [], iKeyPad = [];
|
|
696
|
+
for (i = 0; i < 64; ++i) {
|
|
697
|
+
var b = key[i] || 0;
|
|
698
|
+
oKeyPad[i] = 0x5c ^ b;
|
|
699
|
+
iKeyPad[i] = 0x36 ^ b;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
Sha256.call(this, is224, sharedMemory);
|
|
703
|
+
|
|
704
|
+
this.update(iKeyPad);
|
|
705
|
+
this.oKeyPad = oKeyPad;
|
|
706
|
+
this.inner = true;
|
|
707
|
+
this.sharedMemory = sharedMemory;
|
|
708
|
+
}
|
|
709
|
+
HmacSha256.prototype = new Sha256();
|
|
710
|
+
|
|
711
|
+
HmacSha256.prototype.finalize = function () {
|
|
712
|
+
Sha256.prototype.finalize.call(this);
|
|
713
|
+
if (this.inner) {
|
|
714
|
+
this.inner = false;
|
|
715
|
+
var innerHash = this.array();
|
|
716
|
+
Sha256.call(this, this.is224, this.sharedMemory);
|
|
717
|
+
this.update(this.oKeyPad);
|
|
718
|
+
this.update(innerHash);
|
|
719
|
+
Sha256.prototype.finalize.call(this);
|
|
720
|
+
}
|
|
721
|
+
};
|
|
722
|
+
|
|
723
|
+
var exports = createMethod();
|
|
724
|
+
exports.sha256 = exports;
|
|
725
|
+
exports.sha224 = createMethod(true);
|
|
726
|
+
exports.sha256.hmac = createHmacMethod();
|
|
727
|
+
exports.sha224.hmac = createHmacMethod(true);
|
|
728
|
+
|
|
729
|
+
if (COMMON_JS) {
|
|
730
|
+
module.exports = exports;
|
|
731
|
+
} else {
|
|
732
|
+
root.sha256 = exports.sha256;
|
|
733
|
+
root.sha224 = exports.sha224;
|
|
734
|
+
}
|
|
735
|
+
})();
|
|
736
|
+
} (sha256$1));
|
|
737
|
+
return sha256$1.exports;
|
|
738
|
+
}
|
|
709
739
|
|
|
710
|
-
|
|
740
|
+
var sha256Exports = requireSha256();
|
|
741
|
+
var sha256 = /*@__PURE__*/getDefaultExportFromCjs(sha256Exports);
|
|
711
742
|
|
|
712
743
|
class InvalidTokenError extends Error {
|
|
713
744
|
}
|
|
@@ -1140,7 +1171,7 @@ function Keycloak (config) {
|
|
|
1140
1171
|
case "S256":
|
|
1141
1172
|
// hash codeVerifier, then encode as url-safe base64 without padding
|
|
1142
1173
|
var hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier));
|
|
1143
|
-
var encodedHash =
|
|
1174
|
+
var encodedHash = base64.fromByteArray(hashBytes)
|
|
1144
1175
|
.replace(/\+/g, '-')
|
|
1145
1176
|
.replace(/\//g, '_')
|
|
1146
1177
|
.replace(/\=/g, '');
|
|
@@ -1926,7 +1957,7 @@ function Keycloak (config) {
|
|
|
1926
1957
|
var timeoutHandle = null;
|
|
1927
1958
|
var timeoutPromise = new Promise(function (resolve, reject) {
|
|
1928
1959
|
timeoutHandle = setTimeout(function () {
|
|
1929
|
-
reject({ "error": errorMessage
|
|
1960
|
+
reject({ "error": errorMessage });
|
|
1930
1961
|
}, timeout);
|
|
1931
1962
|
});
|
|
1932
1963
|
|
|
@@ -2506,1374 +2537,1386 @@ function Keycloak (config) {
|
|
|
2506
2537
|
* SOFTWARE.
|
|
2507
2538
|
*/
|
|
2508
2539
|
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
}
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
//
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
}
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
}
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
/**
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
Graphics__prototype
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
}
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
*
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3285
|
-
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
};
|
|
3358
|
-
|
|
3359
|
-
/**
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
};
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
var
|
|
3403
|
-
|
|
3404
|
-
var
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
|
|
3417
|
-
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3454
|
-
|
|
3455
|
-
|
|
3456
|
-
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
function
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
|
|
3507
|
-
|
|
3508
|
-
|
|
3509
|
-
|
|
3510
|
-
|
|
3511
|
-
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
|
|
3515
|
-
|
|
3516
|
-
|
|
3517
|
-
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
/**
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
SvgRenderer__prototype.
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
SvgRenderer__prototype.
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
}
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
}
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
SvgWriter__prototype
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
}
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
SvgWriter__prototype.
|
|
3633
|
-
|
|
3634
|
-
};
|
|
3635
|
-
|
|
3636
|
-
/**
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
3643
|
-
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
|
|
3651
|
-
|
|
3652
|
-
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
|
|
3667
|
-
|
|
3668
|
-
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
SvgElement__prototype
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
|
|
3721
|
-
|
|
3722
|
-
|
|
3723
|
-
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
}
|
|
3732
|
-
|
|
3733
|
-
|
|
3734
|
-
|
|
3735
|
-
|
|
3736
|
-
|
|
3737
|
-
|
|
3738
|
-
|
|
3739
|
-
|
|
3740
|
-
|
|
3741
|
-
|
|
3742
|
-
|
|
3743
|
-
|
|
3744
|
-
|
|
3745
|
-
|
|
3746
|
-
|
|
3747
|
-
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
|
|
3760
|
-
|
|
3761
|
-
|
|
3762
|
-
|
|
3763
|
-
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
|
|
3767
|
-
|
|
3768
|
-
|
|
3769
|
-
|
|
3770
|
-
|
|
3771
|
-
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
|
|
3775
|
-
|
|
3776
|
-
|
|
3777
|
-
|
|
3778
|
-
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
|
|
3803
|
-
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3822
|
-
|
|
3823
|
-
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
3831
|
-
|
|
3832
|
-
|
|
3833
|
-
|
|
3834
|
-
|
|
3835
|
-
|
|
3836
|
-
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
2540
|
+
var jdenticonModule;
|
|
2541
|
+
var hasRequiredJdenticonModule;
|
|
2542
|
+
|
|
2543
|
+
function requireJdenticonModule () {
|
|
2544
|
+
if (hasRequiredJdenticonModule) return jdenticonModule;
|
|
2545
|
+
hasRequiredJdenticonModule = 1;
|
|
2546
|
+
|
|
2547
|
+
/**
|
|
2548
|
+
* Parses a substring of the hash as a number.
|
|
2549
|
+
* @param {number} startPosition
|
|
2550
|
+
* @param {number=} octets
|
|
2551
|
+
*/
|
|
2552
|
+
function parseHex(hash, startPosition, octets) {
|
|
2553
|
+
return parseInt(hash.substr(startPosition, octets), 16);
|
|
2554
|
+
}
|
|
2555
|
+
|
|
2556
|
+
function decToHex(v) {
|
|
2557
|
+
v |= 0; // Ensure integer value
|
|
2558
|
+
return v < 0 ? "00" :
|
|
2559
|
+
v < 16 ? "0" + v.toString(16) :
|
|
2560
|
+
v < 256 ? v.toString(16) :
|
|
2561
|
+
"ff";
|
|
2562
|
+
}
|
|
2563
|
+
|
|
2564
|
+
function hueToRgb(m1, m2, h) {
|
|
2565
|
+
h = h < 0 ? h + 6 : h > 6 ? h - 6 : h;
|
|
2566
|
+
return decToHex(255 * (
|
|
2567
|
+
h < 1 ? m1 + (m2 - m1) * h :
|
|
2568
|
+
h < 3 ? m2 :
|
|
2569
|
+
h < 4 ? m1 + (m2 - m1) * (4 - h) :
|
|
2570
|
+
m1));
|
|
2571
|
+
}
|
|
2572
|
+
|
|
2573
|
+
/**
|
|
2574
|
+
* @param {string} color Color value to parse. Currently hexadecimal strings on the format #rgb[a] and #rrggbb[aa] are supported.
|
|
2575
|
+
* @returns {string}
|
|
2576
|
+
*/
|
|
2577
|
+
function parseColor(color) {
|
|
2578
|
+
if (/^#[0-9a-f]{3,8}$/i.test(color)) {
|
|
2579
|
+
var result;
|
|
2580
|
+
var colorLength = color.length;
|
|
2581
|
+
|
|
2582
|
+
if (colorLength < 6) {
|
|
2583
|
+
var r = color[1],
|
|
2584
|
+
g = color[2],
|
|
2585
|
+
b = color[3],
|
|
2586
|
+
a = color[4] || "";
|
|
2587
|
+
result = "#" + r + r + g + g + b + b + a + a;
|
|
2588
|
+
}
|
|
2589
|
+
if (colorLength == 7 || colorLength > 8) {
|
|
2590
|
+
result = color;
|
|
2591
|
+
}
|
|
2592
|
+
|
|
2593
|
+
return result;
|
|
2594
|
+
}
|
|
2595
|
+
}
|
|
2596
|
+
|
|
2597
|
+
/**
|
|
2598
|
+
* Converts a hexadecimal color to a CSS3 compatible color.
|
|
2599
|
+
* @param {string} hexColor Color on the format "#RRGGBB" or "#RRGGBBAA"
|
|
2600
|
+
* @returns {string}
|
|
2601
|
+
*/
|
|
2602
|
+
function toCss3Color(hexColor) {
|
|
2603
|
+
var a = parseHex(hexColor, 7, 2);
|
|
2604
|
+
var result;
|
|
2605
|
+
|
|
2606
|
+
if (isNaN(a)) {
|
|
2607
|
+
result = hexColor;
|
|
2608
|
+
} else {
|
|
2609
|
+
var r = parseHex(hexColor, 1, 2),
|
|
2610
|
+
g = parseHex(hexColor, 3, 2),
|
|
2611
|
+
b = parseHex(hexColor, 5, 2);
|
|
2612
|
+
result = "rgba(" + r + "," + g + "," + b + "," + (a / 255).toFixed(2) + ")";
|
|
2613
|
+
}
|
|
2614
|
+
|
|
2615
|
+
return result;
|
|
2616
|
+
}
|
|
2617
|
+
|
|
2618
|
+
/**
|
|
2619
|
+
* Converts an HSL color to a hexadecimal RGB color.
|
|
2620
|
+
* @param {number} hue Hue in range [0, 1]
|
|
2621
|
+
* @param {number} saturation Saturation in range [0, 1]
|
|
2622
|
+
* @param {number} lightness Lightness in range [0, 1]
|
|
2623
|
+
* @returns {string}
|
|
2624
|
+
*/
|
|
2625
|
+
function hsl(hue, saturation, lightness) {
|
|
2626
|
+
// Based on http://www.w3.org/TR/2011/REC-css3-color-20110607/#hsl-color
|
|
2627
|
+
var result;
|
|
2628
|
+
|
|
2629
|
+
if (saturation == 0) {
|
|
2630
|
+
var partialHex = decToHex(lightness * 255);
|
|
2631
|
+
result = partialHex + partialHex + partialHex;
|
|
2632
|
+
}
|
|
2633
|
+
else {
|
|
2634
|
+
var m2 = lightness <= 0.5 ? lightness * (saturation + 1) : lightness + saturation - lightness * saturation,
|
|
2635
|
+
m1 = lightness * 2 - m2;
|
|
2636
|
+
result =
|
|
2637
|
+
hueToRgb(m1, m2, hue * 6 + 2) +
|
|
2638
|
+
hueToRgb(m1, m2, hue * 6) +
|
|
2639
|
+
hueToRgb(m1, m2, hue * 6 - 2);
|
|
2640
|
+
}
|
|
2641
|
+
|
|
2642
|
+
return "#" + result;
|
|
2643
|
+
}
|
|
2644
|
+
|
|
2645
|
+
/**
|
|
2646
|
+
* Converts an HSL color to a hexadecimal RGB color. This function will correct the lightness for the "dark" hues
|
|
2647
|
+
* @param {number} hue Hue in range [0, 1]
|
|
2648
|
+
* @param {number} saturation Saturation in range [0, 1]
|
|
2649
|
+
* @param {number} lightness Lightness in range [0, 1]
|
|
2650
|
+
* @returns {string}
|
|
2651
|
+
*/
|
|
2652
|
+
function correctedHsl(hue, saturation, lightness) {
|
|
2653
|
+
// The corrector specifies the perceived middle lightness for each hue
|
|
2654
|
+
var correctors = [ 0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55 ],
|
|
2655
|
+
corrector = correctors[(hue * 6 + 0.5) | 0];
|
|
2656
|
+
|
|
2657
|
+
// Adjust the input lightness relative to the corrector
|
|
2658
|
+
lightness = lightness < 0.5 ? lightness * corrector * 2 : corrector + (lightness - 0.5) * (1 - corrector) * 2;
|
|
2659
|
+
|
|
2660
|
+
return hsl(hue, saturation, lightness);
|
|
2661
|
+
}
|
|
2662
|
+
|
|
2663
|
+
// In the future we can replace `GLOBAL` with `globalThis`, but for now use the old school global detection for
|
|
2664
|
+
// backward compatibility.
|
|
2665
|
+
|
|
2666
|
+
var GLOBAL =
|
|
2667
|
+
typeof window !== "undefined" ? window :
|
|
2668
|
+
typeof self !== "undefined" ? self :
|
|
2669
|
+
typeof commonjsGlobal !== "undefined" ? commonjsGlobal :
|
|
2670
|
+
{};
|
|
2671
|
+
|
|
2672
|
+
/**
|
|
2673
|
+
* @typedef {Object} ParsedConfiguration
|
|
2674
|
+
* @property {number} colorSaturation
|
|
2675
|
+
* @property {number} grayscaleSaturation
|
|
2676
|
+
* @property {string} backColor
|
|
2677
|
+
* @property {number} iconPadding
|
|
2678
|
+
* @property {function(number):number} hue
|
|
2679
|
+
* @property {function(number):number} colorLightness
|
|
2680
|
+
* @property {function(number):number} grayscaleLightness
|
|
2681
|
+
*/
|
|
2682
|
+
|
|
2683
|
+
var CONFIG_PROPERTIES = {
|
|
2684
|
+
W/*GLOBAL*/: "jdenticon_config",
|
|
2685
|
+
n/*MODULE*/: "config",
|
|
2686
|
+
};
|
|
2687
|
+
|
|
2688
|
+
var rootConfigurationHolder = {};
|
|
2689
|
+
|
|
2690
|
+
/**
|
|
2691
|
+
* Defines the deprecated `config` property on the root Jdenticon object without printing a warning in the console
|
|
2692
|
+
* when it is being used.
|
|
2693
|
+
* @param {!Object} rootObject
|
|
2694
|
+
*/
|
|
2695
|
+
function defineConfigProperty(rootObject) {
|
|
2696
|
+
rootConfigurationHolder = rootObject;
|
|
2697
|
+
}
|
|
2698
|
+
|
|
2699
|
+
/**
|
|
2700
|
+
* Sets a new icon style configuration. The new configuration is not merged with the previous one. *
|
|
2701
|
+
* @param {Object} newConfiguration - New configuration object.
|
|
2702
|
+
*/
|
|
2703
|
+
function configure(newConfiguration) {
|
|
2704
|
+
if (arguments.length) {
|
|
2705
|
+
rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] = newConfiguration;
|
|
2706
|
+
}
|
|
2707
|
+
return rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/];
|
|
2708
|
+
}
|
|
2709
|
+
|
|
2710
|
+
/**
|
|
2711
|
+
* Gets the normalized current Jdenticon color configuration. Missing fields have default values.
|
|
2712
|
+
* @param {Object|number|undefined} paddingOrLocalConfig - Configuration passed to the called API method. A
|
|
2713
|
+
* local configuration overrides the global configuration in it entirety. This parameter can for backward
|
|
2714
|
+
* compatibility also contain a padding value. A padding value only overrides the global padding, not the
|
|
2715
|
+
* entire global configuration.
|
|
2716
|
+
* @param {number} defaultPadding - Padding used if no padding is specified in neither the configuration nor
|
|
2717
|
+
* explicitly to the API method.
|
|
2718
|
+
* @returns {ParsedConfiguration}
|
|
2719
|
+
*/
|
|
2720
|
+
function getConfiguration(paddingOrLocalConfig, defaultPadding) {
|
|
2721
|
+
var configObject =
|
|
2722
|
+
typeof paddingOrLocalConfig == "object" && paddingOrLocalConfig ||
|
|
2723
|
+
rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] ||
|
|
2724
|
+
GLOBAL[CONFIG_PROPERTIES.W/*GLOBAL*/] ||
|
|
2725
|
+
{ },
|
|
2726
|
+
|
|
2727
|
+
lightnessConfig = configObject["lightness"] || { },
|
|
2728
|
+
|
|
2729
|
+
// In versions < 2.1.0 there was no grayscale saturation -
|
|
2730
|
+
// saturation was the color saturation.
|
|
2731
|
+
saturation = configObject["saturation"] || { },
|
|
2732
|
+
colorSaturation = "color" in saturation ? saturation["color"] : saturation,
|
|
2733
|
+
grayscaleSaturation = saturation["grayscale"],
|
|
2734
|
+
|
|
2735
|
+
backColor = configObject["backColor"],
|
|
2736
|
+
padding = configObject["padding"];
|
|
2737
|
+
|
|
2738
|
+
/**
|
|
2739
|
+
* Creates a lightness range.
|
|
2740
|
+
*/
|
|
2741
|
+
function lightness(configName, defaultRange) {
|
|
2742
|
+
var range = lightnessConfig[configName];
|
|
2743
|
+
|
|
2744
|
+
// Check if the lightness range is an array-like object. This way we ensure the
|
|
2745
|
+
// array contain two values at the same time.
|
|
2746
|
+
if (!(range && range.length > 1)) {
|
|
2747
|
+
range = defaultRange;
|
|
2748
|
+
}
|
|
2749
|
+
|
|
2750
|
+
/**
|
|
2751
|
+
* Gets a lightness relative the specified value in the specified lightness range.
|
|
2752
|
+
*/
|
|
2753
|
+
return function (value) {
|
|
2754
|
+
value = range[0] + value * (range[1] - range[0]);
|
|
2755
|
+
return value < 0 ? 0 : value > 1 ? 1 : value;
|
|
2756
|
+
};
|
|
2757
|
+
}
|
|
2758
|
+
|
|
2759
|
+
/**
|
|
2760
|
+
* Gets a hue allowed by the configured hue restriction,
|
|
2761
|
+
* provided the originally computed hue.
|
|
2762
|
+
*/
|
|
2763
|
+
function hueFunction(originalHue) {
|
|
2764
|
+
var hueConfig = configObject["hues"];
|
|
2765
|
+
var hue;
|
|
2766
|
+
|
|
2767
|
+
// Check if 'hues' is an array-like object. This way we also ensure that
|
|
2768
|
+
// the array is not empty, which would mean no hue restriction.
|
|
2769
|
+
if (hueConfig && hueConfig.length > 0) {
|
|
2770
|
+
// originalHue is in the range [0, 1]
|
|
2771
|
+
// Multiply with 0.999 to change the range to [0, 1) and then truncate the index.
|
|
2772
|
+
hue = hueConfig[0 | (0.999 * originalHue * hueConfig.length)];
|
|
2773
|
+
}
|
|
2774
|
+
|
|
2775
|
+
return typeof hue == "number" ?
|
|
2776
|
+
|
|
2777
|
+
// A hue was specified. We need to convert the hue from
|
|
2778
|
+
// degrees on any turn - e.g. 746° is a perfectly valid hue -
|
|
2779
|
+
// to turns in the range [0, 1).
|
|
2780
|
+
((((hue / 360) % 1) + 1) % 1) :
|
|
2781
|
+
|
|
2782
|
+
// No hue configured => use original hue
|
|
2783
|
+
originalHue;
|
|
2784
|
+
}
|
|
2785
|
+
|
|
2786
|
+
return {
|
|
2787
|
+
X/*hue*/: hueFunction,
|
|
2788
|
+
o/*colorSaturation*/: typeof colorSaturation == "number" ? colorSaturation : 0.5,
|
|
2789
|
+
F/*grayscaleSaturation*/: typeof grayscaleSaturation == "number" ? grayscaleSaturation : 0,
|
|
2790
|
+
p/*colorLightness*/: lightness("color", [0.4, 0.8]),
|
|
2791
|
+
G/*grayscaleLightness*/: lightness("grayscale", [0.3, 0.9]),
|
|
2792
|
+
H/*backColor*/: parseColor(backColor),
|
|
2793
|
+
Y/*iconPadding*/:
|
|
2794
|
+
typeof paddingOrLocalConfig == "number" ? paddingOrLocalConfig :
|
|
2795
|
+
typeof padding == "number" ? padding :
|
|
2796
|
+
defaultPadding
|
|
2797
|
+
}
|
|
2798
|
+
}
|
|
2799
|
+
|
|
2800
|
+
/**
|
|
2801
|
+
* Represents a point.
|
|
2802
|
+
*/
|
|
2803
|
+
function Point(x, y) {
|
|
2804
|
+
this.x = x;
|
|
2805
|
+
this.y = y;
|
|
2806
|
+
}
|
|
2807
|
+
|
|
2808
|
+
/**
|
|
2809
|
+
* Translates and rotates a point before being passed on to the canvas context. This was previously done by the canvas context itself,
|
|
2810
|
+
* but this caused a rendering issue in Chrome on sizes > 256 where the rotation transformation of inverted paths was not done properly.
|
|
2811
|
+
*/
|
|
2812
|
+
function Transform(x, y, size, rotation) {
|
|
2813
|
+
this.q/*_x*/ = x;
|
|
2814
|
+
this.t/*_y*/ = y;
|
|
2815
|
+
this.I/*_size*/ = size;
|
|
2816
|
+
this.Z/*_rotation*/ = rotation;
|
|
2817
|
+
}
|
|
2818
|
+
|
|
2819
|
+
/**
|
|
2820
|
+
* Transforms the specified point based on the translation and rotation specification for this Transform.
|
|
2821
|
+
* @param {number} x x-coordinate
|
|
2822
|
+
* @param {number} y y-coordinate
|
|
2823
|
+
* @param {number=} w The width of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.
|
|
2824
|
+
* @param {number=} h The height of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.
|
|
2825
|
+
*/
|
|
2826
|
+
Transform.prototype.J/*transformIconPoint*/ = function transformIconPoint (x, y, w, h) {
|
|
2827
|
+
var right = this.q/*_x*/ + this.I/*_size*/,
|
|
2828
|
+
bottom = this.t/*_y*/ + this.I/*_size*/,
|
|
2829
|
+
rotation = this.Z/*_rotation*/;
|
|
2830
|
+
return rotation === 1 ? new Point(right - y - (h || 0), this.t/*_y*/ + x) :
|
|
2831
|
+
rotation === 2 ? new Point(right - x - (w || 0), bottom - y - (h || 0)) :
|
|
2832
|
+
rotation === 3 ? new Point(this.q/*_x*/ + y, bottom - x - (w || 0)) :
|
|
2833
|
+
new Point(this.q/*_x*/ + x, this.t/*_y*/ + y);
|
|
2834
|
+
};
|
|
2835
|
+
|
|
2836
|
+
var NO_TRANSFORM = new Transform(0, 0, 0, 0);
|
|
2837
|
+
|
|
2838
|
+
|
|
2839
|
+
|
|
2840
|
+
/**
|
|
2841
|
+
* Provides helper functions for rendering common basic shapes.
|
|
2842
|
+
*/
|
|
2843
|
+
function Graphics(renderer) {
|
|
2844
|
+
/**
|
|
2845
|
+
* @type {Renderer}
|
|
2846
|
+
* @private
|
|
2847
|
+
*/
|
|
2848
|
+
this.K/*_renderer*/ = renderer;
|
|
2849
|
+
|
|
2850
|
+
/**
|
|
2851
|
+
* @type {Transform}
|
|
2852
|
+
*/
|
|
2853
|
+
this.u/*currentTransform*/ = NO_TRANSFORM;
|
|
2854
|
+
}
|
|
2855
|
+
var Graphics__prototype = Graphics.prototype;
|
|
2856
|
+
|
|
2857
|
+
/**
|
|
2858
|
+
* Adds a polygon to the underlying renderer.
|
|
2859
|
+
* @param {Array<number>} points The points of the polygon clockwise on the format [ x0, y0, x1, y1, ..., xn, yn ]
|
|
2860
|
+
* @param {boolean=} invert Specifies if the polygon will be inverted.
|
|
2861
|
+
*/
|
|
2862
|
+
Graphics__prototype.g/*addPolygon*/ = function addPolygon (points, invert) {
|
|
2863
|
+
var this$1$1 = this;
|
|
2864
|
+
|
|
2865
|
+
var di = invert ? -2 : 2,
|
|
2866
|
+
transformedPoints = [];
|
|
2867
|
+
|
|
2868
|
+
for (var i = invert ? points.length - 2 : 0; i < points.length && i >= 0; i += di) {
|
|
2869
|
+
transformedPoints.push(this$1$1.u/*currentTransform*/.J/*transformIconPoint*/(points[i], points[i + 1]));
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2872
|
+
this.K/*_renderer*/.g/*addPolygon*/(transformedPoints);
|
|
2873
|
+
};
|
|
2874
|
+
|
|
2875
|
+
/**
|
|
2876
|
+
* Adds a polygon to the underlying renderer.
|
|
2877
|
+
* Source: http://stackoverflow.com/a/2173084
|
|
2878
|
+
* @param {number} x The x-coordinate of the upper left corner of the rectangle holding the entire ellipse.
|
|
2879
|
+
* @param {number} y The y-coordinate of the upper left corner of the rectangle holding the entire ellipse.
|
|
2880
|
+
* @param {number} size The size of the ellipse.
|
|
2881
|
+
* @param {boolean=} invert Specifies if the ellipse will be inverted.
|
|
2882
|
+
*/
|
|
2883
|
+
Graphics__prototype.h/*addCircle*/ = function addCircle (x, y, size, invert) {
|
|
2884
|
+
var p = this.u/*currentTransform*/.J/*transformIconPoint*/(x, y, size, size);
|
|
2885
|
+
this.K/*_renderer*/.h/*addCircle*/(p, size, invert);
|
|
2886
|
+
};
|
|
2887
|
+
|
|
2888
|
+
/**
|
|
2889
|
+
* Adds a rectangle to the underlying renderer.
|
|
2890
|
+
* @param {number} x The x-coordinate of the upper left corner of the rectangle.
|
|
2891
|
+
* @param {number} y The y-coordinate of the upper left corner of the rectangle.
|
|
2892
|
+
* @param {number} w The width of the rectangle.
|
|
2893
|
+
* @param {number} h The height of the rectangle.
|
|
2894
|
+
* @param {boolean=} invert Specifies if the rectangle will be inverted.
|
|
2895
|
+
*/
|
|
2896
|
+
Graphics__prototype.i/*addRectangle*/ = function addRectangle (x, y, w, h, invert) {
|
|
2897
|
+
this.g/*addPolygon*/([
|
|
2898
|
+
x, y,
|
|
2899
|
+
x + w, y,
|
|
2900
|
+
x + w, y + h,
|
|
2901
|
+
x, y + h
|
|
2902
|
+
], invert);
|
|
2903
|
+
};
|
|
2904
|
+
|
|
2905
|
+
/**
|
|
2906
|
+
* Adds a right triangle to the underlying renderer.
|
|
2907
|
+
* @param {number} x The x-coordinate of the upper left corner of the rectangle holding the triangle.
|
|
2908
|
+
* @param {number} y The y-coordinate of the upper left corner of the rectangle holding the triangle.
|
|
2909
|
+
* @param {number} w The width of the triangle.
|
|
2910
|
+
* @param {number} h The height of the triangle.
|
|
2911
|
+
* @param {number} r The rotation of the triangle (clockwise). 0 = right corner of the triangle in the lower left corner of the bounding rectangle.
|
|
2912
|
+
* @param {boolean=} invert Specifies if the triangle will be inverted.
|
|
2913
|
+
*/
|
|
2914
|
+
Graphics__prototype.j/*addTriangle*/ = function addTriangle (x, y, w, h, r, invert) {
|
|
2915
|
+
var points = [
|
|
2916
|
+
x + w, y,
|
|
2917
|
+
x + w, y + h,
|
|
2918
|
+
x, y + h,
|
|
2919
|
+
x, y
|
|
2920
|
+
];
|
|
2921
|
+
points.splice(((r || 0) % 4) * 2, 2);
|
|
2922
|
+
this.g/*addPolygon*/(points, invert);
|
|
2923
|
+
};
|
|
2924
|
+
|
|
2925
|
+
/**
|
|
2926
|
+
* Adds a rhombus to the underlying renderer.
|
|
2927
|
+
* @param {number} x The x-coordinate of the upper left corner of the rectangle holding the rhombus.
|
|
2928
|
+
* @param {number} y The y-coordinate of the upper left corner of the rectangle holding the rhombus.
|
|
2929
|
+
* @param {number} w The width of the rhombus.
|
|
2930
|
+
* @param {number} h The height of the rhombus.
|
|
2931
|
+
* @param {boolean=} invert Specifies if the rhombus will be inverted.
|
|
2932
|
+
*/
|
|
2933
|
+
Graphics__prototype.L/*addRhombus*/ = function addRhombus (x, y, w, h, invert) {
|
|
2934
|
+
this.g/*addPolygon*/([
|
|
2935
|
+
x + w / 2, y,
|
|
2936
|
+
x + w, y + h / 2,
|
|
2937
|
+
x + w / 2, y + h,
|
|
2938
|
+
x, y + h / 2
|
|
2939
|
+
], invert);
|
|
2940
|
+
};
|
|
2941
|
+
|
|
2942
|
+
/**
|
|
2943
|
+
* @param {number} index
|
|
2944
|
+
* @param {Graphics} g
|
|
2945
|
+
* @param {number} cell
|
|
2946
|
+
* @param {number} positionIndex
|
|
2947
|
+
*/
|
|
2948
|
+
function centerShape(index, g, cell, positionIndex) {
|
|
2949
|
+
index = index % 14;
|
|
2950
|
+
|
|
2951
|
+
var k, m, w, h, inner, outer;
|
|
2952
|
+
|
|
2953
|
+
!index ? (
|
|
2954
|
+
k = cell * 0.42,
|
|
2955
|
+
g.g/*addPolygon*/([
|
|
2956
|
+
0, 0,
|
|
2957
|
+
cell, 0,
|
|
2958
|
+
cell, cell - k * 2,
|
|
2959
|
+
cell - k, cell,
|
|
2960
|
+
0, cell
|
|
2961
|
+
])) :
|
|
2962
|
+
|
|
2963
|
+
index == 1 ? (
|
|
2964
|
+
w = 0 | (cell * 0.5),
|
|
2965
|
+
h = 0 | (cell * 0.8),
|
|
2966
|
+
|
|
2967
|
+
g.j/*addTriangle*/(cell - w, 0, w, h, 2)) :
|
|
2968
|
+
|
|
2969
|
+
index == 2 ? (
|
|
2970
|
+
w = 0 | (cell / 3),
|
|
2971
|
+
g.i/*addRectangle*/(w, w, cell - w, cell - w)) :
|
|
2972
|
+
|
|
2973
|
+
index == 3 ? (
|
|
2974
|
+
inner = cell * 0.1,
|
|
2975
|
+
// Use fixed outer border widths in small icons to ensure the border is drawn
|
|
2976
|
+
outer =
|
|
2977
|
+
cell < 6 ? 1 :
|
|
2978
|
+
cell < 8 ? 2 :
|
|
2979
|
+
(0 | (cell * 0.25)),
|
|
2980
|
+
|
|
2981
|
+
inner =
|
|
2982
|
+
inner > 1 ? (0 | inner) : // large icon => truncate decimals
|
|
2983
|
+
inner > 0.5 ? 1 : // medium size icon => fixed width
|
|
2984
|
+
inner, // small icon => anti-aliased border
|
|
2985
|
+
|
|
2986
|
+
g.i/*addRectangle*/(outer, outer, cell - inner - outer, cell - inner - outer)) :
|
|
2987
|
+
|
|
2988
|
+
index == 4 ? (
|
|
2989
|
+
m = 0 | (cell * 0.15),
|
|
2990
|
+
w = 0 | (cell * 0.5),
|
|
2991
|
+
g.h/*addCircle*/(cell - w - m, cell - w - m, w)) :
|
|
2992
|
+
|
|
2993
|
+
index == 5 ? (
|
|
2994
|
+
inner = cell * 0.1,
|
|
2995
|
+
outer = inner * 4,
|
|
2996
|
+
|
|
2997
|
+
// Align edge to nearest pixel in large icons
|
|
2998
|
+
outer > 3 && (outer = 0 | outer),
|
|
2999
|
+
|
|
3000
|
+
g.i/*addRectangle*/(0, 0, cell, cell),
|
|
3001
|
+
g.g/*addPolygon*/([
|
|
3002
|
+
outer, outer,
|
|
3003
|
+
cell - inner, outer,
|
|
3004
|
+
outer + (cell - outer - inner) / 2, cell - inner
|
|
3005
|
+
], true)) :
|
|
3006
|
+
|
|
3007
|
+
index == 6 ?
|
|
3008
|
+
g.g/*addPolygon*/([
|
|
3009
|
+
0, 0,
|
|
3010
|
+
cell, 0,
|
|
3011
|
+
cell, cell * 0.7,
|
|
3012
|
+
cell * 0.4, cell * 0.4,
|
|
3013
|
+
cell * 0.7, cell,
|
|
3014
|
+
0, cell
|
|
3015
|
+
]) :
|
|
3016
|
+
|
|
3017
|
+
index == 7 ?
|
|
3018
|
+
g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :
|
|
3019
|
+
|
|
3020
|
+
index == 8 ? (
|
|
3021
|
+
g.i/*addRectangle*/(0, 0, cell, cell / 2),
|
|
3022
|
+
g.i/*addRectangle*/(0, cell / 2, cell / 2, cell / 2),
|
|
3023
|
+
g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 1)) :
|
|
3024
|
+
|
|
3025
|
+
index == 9 ? (
|
|
3026
|
+
inner = cell * 0.14,
|
|
3027
|
+
// Use fixed outer border widths in small icons to ensure the border is drawn
|
|
3028
|
+
outer =
|
|
3029
|
+
cell < 4 ? 1 :
|
|
3030
|
+
cell < 6 ? 2 :
|
|
3031
|
+
(0 | (cell * 0.35)),
|
|
3032
|
+
|
|
3033
|
+
inner =
|
|
3034
|
+
cell < 8 ? inner : // small icon => anti-aliased border
|
|
3035
|
+
(0 | inner), // large icon => truncate decimals
|
|
3036
|
+
|
|
3037
|
+
g.i/*addRectangle*/(0, 0, cell, cell),
|
|
3038
|
+
g.i/*addRectangle*/(outer, outer, cell - outer - inner, cell - outer - inner, true)) :
|
|
3039
|
+
|
|
3040
|
+
index == 10 ? (
|
|
3041
|
+
inner = cell * 0.12,
|
|
3042
|
+
outer = inner * 3,
|
|
3043
|
+
|
|
3044
|
+
g.i/*addRectangle*/(0, 0, cell, cell),
|
|
3045
|
+
g.h/*addCircle*/(outer, outer, cell - inner - outer, true)) :
|
|
3046
|
+
|
|
3047
|
+
index == 11 ?
|
|
3048
|
+
g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :
|
|
3049
|
+
|
|
3050
|
+
index == 12 ? (
|
|
3051
|
+
m = cell * 0.25,
|
|
3052
|
+
g.i/*addRectangle*/(0, 0, cell, cell),
|
|
3053
|
+
g.L/*addRhombus*/(m, m, cell - m, cell - m, true)) :
|
|
3054
|
+
|
|
3055
|
+
// 13
|
|
3056
|
+
(
|
|
3057
|
+
!positionIndex && (
|
|
3058
|
+
m = cell * 0.4, w = cell * 1.2,
|
|
3059
|
+
g.h/*addCircle*/(m, m, w)
|
|
3060
|
+
)
|
|
3061
|
+
);
|
|
3062
|
+
}
|
|
3063
|
+
|
|
3064
|
+
/**
|
|
3065
|
+
* @param {number} index
|
|
3066
|
+
* @param {Graphics} g
|
|
3067
|
+
* @param {number} cell
|
|
3068
|
+
*/
|
|
3069
|
+
function outerShape(index, g, cell) {
|
|
3070
|
+
index = index % 4;
|
|
3071
|
+
|
|
3072
|
+
var m;
|
|
3073
|
+
|
|
3074
|
+
!index ?
|
|
3075
|
+
g.j/*addTriangle*/(0, 0, cell, cell, 0) :
|
|
3076
|
+
|
|
3077
|
+
index == 1 ?
|
|
3078
|
+
g.j/*addTriangle*/(0, cell / 2, cell, cell / 2, 0) :
|
|
3079
|
+
|
|
3080
|
+
index == 2 ?
|
|
3081
|
+
g.L/*addRhombus*/(0, 0, cell, cell) :
|
|
3082
|
+
|
|
3083
|
+
// 3
|
|
3084
|
+
(
|
|
3085
|
+
m = cell / 6,
|
|
3086
|
+
g.h/*addCircle*/(m, m, cell - 2 * m)
|
|
3087
|
+
);
|
|
3088
|
+
}
|
|
3089
|
+
|
|
3090
|
+
/**
|
|
3091
|
+
* Gets a set of identicon color candidates for a specified hue and config.
|
|
3092
|
+
* @param {number} hue
|
|
3093
|
+
* @param {ParsedConfiguration} config
|
|
3094
|
+
*/
|
|
3095
|
+
function colorTheme(hue, config) {
|
|
3096
|
+
hue = config.X/*hue*/(hue);
|
|
3097
|
+
return [
|
|
3098
|
+
// Dark gray
|
|
3099
|
+
correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(0)),
|
|
3100
|
+
// Mid color
|
|
3101
|
+
correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0.5)),
|
|
3102
|
+
// Light gray
|
|
3103
|
+
correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(1)),
|
|
3104
|
+
// Light color
|
|
3105
|
+
correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(1)),
|
|
3106
|
+
// Dark color
|
|
3107
|
+
correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0))
|
|
3108
|
+
];
|
|
3109
|
+
}
|
|
3110
|
+
|
|
3111
|
+
/**
|
|
3112
|
+
* Draws an identicon to a specified renderer.
|
|
3113
|
+
* @param {Renderer} renderer
|
|
3114
|
+
* @param {string} hash
|
|
3115
|
+
* @param {Object|number=} config
|
|
3116
|
+
*/
|
|
3117
|
+
function iconGenerator(renderer, hash, config) {
|
|
3118
|
+
var parsedConfig = getConfiguration(config, 0.08);
|
|
3119
|
+
|
|
3120
|
+
// Set background color
|
|
3121
|
+
if (parsedConfig.H/*backColor*/) {
|
|
3122
|
+
renderer.m/*setBackground*/(parsedConfig.H/*backColor*/);
|
|
3123
|
+
}
|
|
3124
|
+
|
|
3125
|
+
// Calculate padding and round to nearest integer
|
|
3126
|
+
var size = renderer.k/*iconSize*/;
|
|
3127
|
+
var padding = (0.5 + size * parsedConfig.Y/*iconPadding*/) | 0;
|
|
3128
|
+
size -= padding * 2;
|
|
3129
|
+
|
|
3130
|
+
var graphics = new Graphics(renderer);
|
|
3131
|
+
|
|
3132
|
+
// Calculate cell size and ensure it is an integer
|
|
3133
|
+
var cell = 0 | (size / 4);
|
|
3134
|
+
|
|
3135
|
+
// Since the cell size is integer based, the actual icon will be slightly smaller than specified => center icon
|
|
3136
|
+
var x = 0 | (padding + size / 2 - cell * 2);
|
|
3137
|
+
var y = 0 | (padding + size / 2 - cell * 2);
|
|
3138
|
+
|
|
3139
|
+
function renderShape(colorIndex, shapes, index, rotationIndex, positions) {
|
|
3140
|
+
var shapeIndex = parseHex(hash, index, 1);
|
|
3141
|
+
var r = rotationIndex ? parseHex(hash, rotationIndex, 1) : 0;
|
|
3142
|
+
|
|
3143
|
+
renderer.M/*beginShape*/(availableColors[selectedColorIndexes[colorIndex]]);
|
|
3144
|
+
|
|
3145
|
+
for (var i = 0; i < positions.length; i++) {
|
|
3146
|
+
graphics.u/*currentTransform*/ = new Transform(x + positions[i][0] * cell, y + positions[i][1] * cell, cell, r++ % 4);
|
|
3147
|
+
shapes(shapeIndex, graphics, cell, i);
|
|
3148
|
+
}
|
|
3149
|
+
|
|
3150
|
+
renderer.N/*endShape*/();
|
|
3151
|
+
}
|
|
3152
|
+
|
|
3153
|
+
// AVAILABLE COLORS
|
|
3154
|
+
var hue = parseHex(hash, -7) / 0xfffffff,
|
|
3155
|
+
|
|
3156
|
+
// Available colors for this icon
|
|
3157
|
+
availableColors = colorTheme(hue, parsedConfig),
|
|
3158
|
+
|
|
3159
|
+
// The index of the selected colors
|
|
3160
|
+
selectedColorIndexes = [];
|
|
3161
|
+
|
|
3162
|
+
var index;
|
|
3163
|
+
|
|
3164
|
+
function isDuplicate(values) {
|
|
3165
|
+
if (values.indexOf(index) >= 0) {
|
|
3166
|
+
for (var i = 0; i < values.length; i++) {
|
|
3167
|
+
if (selectedColorIndexes.indexOf(values[i]) >= 0) {
|
|
3168
|
+
return true;
|
|
3169
|
+
}
|
|
3170
|
+
}
|
|
3171
|
+
}
|
|
3172
|
+
}
|
|
3173
|
+
|
|
3174
|
+
for (var i = 0; i < 3; i++) {
|
|
3175
|
+
index = parseHex(hash, 8 + i, 1) % availableColors.length;
|
|
3176
|
+
if (isDuplicate([0, 4]) || // Disallow dark gray and dark color combo
|
|
3177
|
+
isDuplicate([2, 3])) { // Disallow light gray and light color combo
|
|
3178
|
+
index = 1;
|
|
3179
|
+
}
|
|
3180
|
+
selectedColorIndexes.push(index);
|
|
3181
|
+
}
|
|
3182
|
+
|
|
3183
|
+
// ACTUAL RENDERING
|
|
3184
|
+
// Sides
|
|
3185
|
+
renderShape(0, outerShape, 2, 3, [[1, 0], [2, 0], [2, 3], [1, 3], [0, 1], [3, 1], [3, 2], [0, 2]]);
|
|
3186
|
+
// Corners
|
|
3187
|
+
renderShape(1, outerShape, 4, 5, [[0, 0], [3, 0], [3, 3], [0, 3]]);
|
|
3188
|
+
// Center
|
|
3189
|
+
renderShape(2, centerShape, 1, null, [[1, 1], [2, 1], [2, 2], [1, 2]]);
|
|
3190
|
+
|
|
3191
|
+
renderer.finish();
|
|
3192
|
+
}
|
|
3193
|
+
|
|
3194
|
+
/**
|
|
3195
|
+
* Computes a SHA1 hash for any value and returns it as a hexadecimal string.
|
|
3196
|
+
*
|
|
3197
|
+
* This function is optimized for minimal code size and rather short messages.
|
|
3198
|
+
*
|
|
3199
|
+
* @param {string} message
|
|
3200
|
+
*/
|
|
3201
|
+
function sha1(message) {
|
|
3202
|
+
var HASH_SIZE_HALF_BYTES = 40;
|
|
3203
|
+
var BLOCK_SIZE_WORDS = 16;
|
|
3204
|
+
|
|
3205
|
+
// Variables
|
|
3206
|
+
// `var` is used to be able to minimize the number of `var` keywords.
|
|
3207
|
+
var i = 0,
|
|
3208
|
+
f = 0,
|
|
3209
|
+
|
|
3210
|
+
// Use `encodeURI` to UTF8 encode the message without any additional libraries
|
|
3211
|
+
// We could use `unescape` + `encodeURI` to minimize the code, but that would be slightly risky
|
|
3212
|
+
// since `unescape` is deprecated.
|
|
3213
|
+
urlEncodedMessage = encodeURI(message) + "%80", // trailing '1' bit padding
|
|
3214
|
+
|
|
3215
|
+
// This can be changed to a preallocated Uint32Array array for greater performance and larger code size
|
|
3216
|
+
data = [],
|
|
3217
|
+
dataSize,
|
|
3218
|
+
|
|
3219
|
+
hashBuffer = [],
|
|
3220
|
+
|
|
3221
|
+
a = 0x67452301,
|
|
3222
|
+
b = 0xefcdab89,
|
|
3223
|
+
c = ~a,
|
|
3224
|
+
d = ~b,
|
|
3225
|
+
e = 0xc3d2e1f0,
|
|
3226
|
+
hash = [a, b, c, d, e],
|
|
3227
|
+
|
|
3228
|
+
blockStartIndex = 0,
|
|
3229
|
+
hexHash = "";
|
|
3230
|
+
|
|
3231
|
+
/**
|
|
3232
|
+
* Rotates the value a specified number of bits to the left.
|
|
3233
|
+
* @param {number} value Value to rotate
|
|
3234
|
+
* @param {number} shift Bit count to shift.
|
|
3235
|
+
*/
|
|
3236
|
+
function rotl(value, shift) {
|
|
3237
|
+
return (value << shift) | (value >>> (32 - shift));
|
|
3238
|
+
}
|
|
3239
|
+
|
|
3240
|
+
// Message data
|
|
3241
|
+
for ( ; i < urlEncodedMessage.length; f++) {
|
|
3242
|
+
data[f >> 2] = data[f >> 2] |
|
|
3243
|
+
(
|
|
3244
|
+
(
|
|
3245
|
+
urlEncodedMessage[i] == "%"
|
|
3246
|
+
// Percent encoded byte
|
|
3247
|
+
? parseInt(urlEncodedMessage.substring(i + 1, i += 3), 16)
|
|
3248
|
+
// Unencoded byte
|
|
3249
|
+
: urlEncodedMessage.charCodeAt(i++)
|
|
3250
|
+
)
|
|
3251
|
+
|
|
3252
|
+
// Read bytes in reverse order (big endian words)
|
|
3253
|
+
<< ((3 - (f & 3)) * 8)
|
|
3254
|
+
);
|
|
3255
|
+
}
|
|
3256
|
+
|
|
3257
|
+
// f is now the length of the utf8 encoded message
|
|
3258
|
+
// 7 = 8 bytes (64 bit) for message size, -1 to round down
|
|
3259
|
+
// >> 6 = integer division with block size
|
|
3260
|
+
dataSize = (((f + 7) >> 6) + 1) * BLOCK_SIZE_WORDS;
|
|
3261
|
+
|
|
3262
|
+
// Message size in bits.
|
|
3263
|
+
// SHA1 uses a 64 bit integer to represent the size, but since we only support short messages only the least
|
|
3264
|
+
// significant 32 bits are set. -8 is for the '1' bit padding byte.
|
|
3265
|
+
data[dataSize - 1] = f * 8 - 8;
|
|
3266
|
+
|
|
3267
|
+
// Compute hash
|
|
3268
|
+
for ( ; blockStartIndex < dataSize; blockStartIndex += BLOCK_SIZE_WORDS) {
|
|
3269
|
+
for (i = 0; i < 80; i++) {
|
|
3270
|
+
f = rotl(a, 5) + e + (
|
|
3271
|
+
// Ch
|
|
3272
|
+
i < 20 ? ((b & c) ^ ((~b) & d)) + 0x5a827999 :
|
|
3273
|
+
|
|
3274
|
+
// Parity
|
|
3275
|
+
i < 40 ? (b ^ c ^ d) + 0x6ed9eba1 :
|
|
3276
|
+
|
|
3277
|
+
// Maj
|
|
3278
|
+
i < 60 ? ((b & c) ^ (b & d) ^ (c & d)) + 0x8f1bbcdc :
|
|
3279
|
+
|
|
3280
|
+
// Parity
|
|
3281
|
+
(b ^ c ^ d) + 0xca62c1d6
|
|
3282
|
+
) + (
|
|
3283
|
+
hashBuffer[i] = i < BLOCK_SIZE_WORDS
|
|
3284
|
+
// Bitwise OR is used to coerse `undefined` to 0
|
|
3285
|
+
? (data[blockStartIndex + i] | 0)
|
|
3286
|
+
: rotl(hashBuffer[i - 3] ^ hashBuffer[i - 8] ^ hashBuffer[i - 14] ^ hashBuffer[i - 16], 1)
|
|
3287
|
+
);
|
|
3288
|
+
|
|
3289
|
+
e = d;
|
|
3290
|
+
d = c;
|
|
3291
|
+
c = rotl(b, 30);
|
|
3292
|
+
b = a;
|
|
3293
|
+
a = f;
|
|
3294
|
+
}
|
|
3295
|
+
|
|
3296
|
+
hash[0] = a = ((hash[0] + a) | 0);
|
|
3297
|
+
hash[1] = b = ((hash[1] + b) | 0);
|
|
3298
|
+
hash[2] = c = ((hash[2] + c) | 0);
|
|
3299
|
+
hash[3] = d = ((hash[3] + d) | 0);
|
|
3300
|
+
hash[4] = e = ((hash[4] + e) | 0);
|
|
3301
|
+
}
|
|
3302
|
+
|
|
3303
|
+
// Format hex hash
|
|
3304
|
+
for (i = 0; i < HASH_SIZE_HALF_BYTES; i++) {
|
|
3305
|
+
hexHash += (
|
|
3306
|
+
(
|
|
3307
|
+
// Get word (2^3 half-bytes per word)
|
|
3308
|
+
hash[i >> 3] >>>
|
|
3309
|
+
|
|
3310
|
+
// Append half-bytes in reverse order
|
|
3311
|
+
((7 - (i & 7)) * 4)
|
|
3312
|
+
)
|
|
3313
|
+
// Clamp to half-byte
|
|
3314
|
+
& 0xf
|
|
3315
|
+
).toString(16);
|
|
3316
|
+
}
|
|
3317
|
+
|
|
3318
|
+
return hexHash;
|
|
3319
|
+
}
|
|
3320
|
+
|
|
3321
|
+
/**
|
|
3322
|
+
* Inputs a value that might be a valid hash string for Jdenticon and returns it
|
|
3323
|
+
* if it is determined valid, otherwise a falsy value is returned.
|
|
3324
|
+
*/
|
|
3325
|
+
function isValidHash(hashCandidate) {
|
|
3326
|
+
return /^[0-9a-f]{11,}$/i.test(hashCandidate) && hashCandidate;
|
|
3327
|
+
}
|
|
3328
|
+
|
|
3329
|
+
/**
|
|
3330
|
+
* Computes a hash for the specified value. Currently SHA1 is used. This function
|
|
3331
|
+
* always returns a valid hash.
|
|
3332
|
+
*/
|
|
3333
|
+
function computeHash(value) {
|
|
3334
|
+
return sha1(value == null ? "" : "" + value);
|
|
3335
|
+
}
|
|
3336
|
+
|
|
3337
|
+
|
|
3338
|
+
|
|
3339
|
+
/**
|
|
3340
|
+
* Renderer redirecting drawing commands to a canvas context.
|
|
3341
|
+
* @implements {Renderer}
|
|
3342
|
+
*/
|
|
3343
|
+
function CanvasRenderer(ctx, iconSize) {
|
|
3344
|
+
var canvas = ctx.canvas;
|
|
3345
|
+
var width = canvas.width;
|
|
3346
|
+
var height = canvas.height;
|
|
3347
|
+
|
|
3348
|
+
ctx.save();
|
|
3349
|
+
|
|
3350
|
+
if (!iconSize) {
|
|
3351
|
+
iconSize = Math.min(width, height);
|
|
3352
|
+
|
|
3353
|
+
ctx.translate(
|
|
3354
|
+
((width - iconSize) / 2) | 0,
|
|
3355
|
+
((height - iconSize) / 2) | 0);
|
|
3356
|
+
}
|
|
3357
|
+
|
|
3358
|
+
/**
|
|
3359
|
+
* @private
|
|
3360
|
+
*/
|
|
3361
|
+
this.l/*_ctx*/ = ctx;
|
|
3362
|
+
this.k/*iconSize*/ = iconSize;
|
|
3363
|
+
|
|
3364
|
+
ctx.clearRect(0, 0, iconSize, iconSize);
|
|
3365
|
+
}
|
|
3366
|
+
var CanvasRenderer__prototype = CanvasRenderer.prototype;
|
|
3367
|
+
|
|
3368
|
+
/**
|
|
3369
|
+
* Fills the background with the specified color.
|
|
3370
|
+
* @param {string} fillColor Fill color on the format #rrggbb[aa].
|
|
3371
|
+
*/
|
|
3372
|
+
CanvasRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {
|
|
3373
|
+
var ctx = this.l/*_ctx*/;
|
|
3374
|
+
var iconSize = this.k/*iconSize*/;
|
|
3375
|
+
|
|
3376
|
+
ctx.fillStyle = toCss3Color(fillColor);
|
|
3377
|
+
ctx.fillRect(0, 0, iconSize, iconSize);
|
|
3378
|
+
};
|
|
3379
|
+
|
|
3380
|
+
/**
|
|
3381
|
+
* Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.
|
|
3382
|
+
* @param {string} fillColor Fill color on format #rrggbb[aa].
|
|
3383
|
+
*/
|
|
3384
|
+
CanvasRenderer__prototype.M/*beginShape*/ = function beginShape (fillColor) {
|
|
3385
|
+
var ctx = this.l/*_ctx*/;
|
|
3386
|
+
ctx.fillStyle = toCss3Color(fillColor);
|
|
3387
|
+
ctx.beginPath();
|
|
3388
|
+
};
|
|
3389
|
+
|
|
3390
|
+
/**
|
|
3391
|
+
* Marks the end of the currently drawn shape. This causes the queued paths to be rendered on the canvas.
|
|
3392
|
+
*/
|
|
3393
|
+
CanvasRenderer__prototype.N/*endShape*/ = function endShape () {
|
|
3394
|
+
this.l/*_ctx*/.fill();
|
|
3395
|
+
};
|
|
3396
|
+
|
|
3397
|
+
/**
|
|
3398
|
+
* Adds a polygon to the rendering queue.
|
|
3399
|
+
* @param points An array of Point objects.
|
|
3400
|
+
*/
|
|
3401
|
+
CanvasRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {
|
|
3402
|
+
var ctx = this.l/*_ctx*/;
|
|
3403
|
+
ctx.moveTo(points[0].x, points[0].y);
|
|
3404
|
+
for (var i = 1; i < points.length; i++) {
|
|
3405
|
+
ctx.lineTo(points[i].x, points[i].y);
|
|
3406
|
+
}
|
|
3407
|
+
ctx.closePath();
|
|
3408
|
+
};
|
|
3409
|
+
|
|
3410
|
+
/**
|
|
3411
|
+
* Adds a circle to the rendering queue.
|
|
3412
|
+
* @param {Point} point The upper left corner of the circle bounding box.
|
|
3413
|
+
* @param {number} diameter The diameter of the circle.
|
|
3414
|
+
* @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
|
|
3415
|
+
*/
|
|
3416
|
+
CanvasRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
|
|
3417
|
+
var ctx = this.l/*_ctx*/,
|
|
3418
|
+
radius = diameter / 2;
|
|
3419
|
+
ctx.moveTo(point.x + radius, point.y + radius);
|
|
3420
|
+
ctx.arc(point.x + radius, point.y + radius, radius, 0, Math.PI * 2, counterClockwise);
|
|
3421
|
+
ctx.closePath();
|
|
3422
|
+
};
|
|
3423
|
+
|
|
3424
|
+
/**
|
|
3425
|
+
* Called when the icon has been completely drawn.
|
|
3426
|
+
*/
|
|
3427
|
+
CanvasRenderer__prototype.finish = function finish () {
|
|
3428
|
+
this.l/*_ctx*/.restore();
|
|
3429
|
+
};
|
|
3430
|
+
|
|
3431
|
+
var ICON_TYPE_SVG = 1;
|
|
3432
|
+
|
|
3433
|
+
var ICON_TYPE_CANVAS = 2;
|
|
3434
|
+
|
|
3435
|
+
var ATTRIBUTES = {
|
|
3436
|
+
O/*HASH*/: "data-jdenticon-hash",
|
|
3437
|
+
v/*VALUE*/: "data-jdenticon-value"
|
|
3438
|
+
};
|
|
3439
|
+
|
|
3440
|
+
var IS_RENDERED_PROPERTY = "jdenticonRendered";
|
|
3441
|
+
|
|
3442
|
+
var ICON_SELECTOR = "[" + ATTRIBUTES.O/*HASH*/ +"],[" + ATTRIBUTES.v/*VALUE*/ +"]";
|
|
3443
|
+
|
|
3444
|
+
var documentQuerySelectorAll = /** @type {!Function} */ (
|
|
3445
|
+
typeof document !== "undefined" && document.querySelectorAll.bind(document));
|
|
3446
|
+
|
|
3447
|
+
function getIdenticonType(el) {
|
|
3448
|
+
if (el) {
|
|
3449
|
+
var tagName = el["tagName"];
|
|
3450
|
+
|
|
3451
|
+
if (/^svg$/i.test(tagName)) {
|
|
3452
|
+
return ICON_TYPE_SVG;
|
|
3453
|
+
}
|
|
3454
|
+
|
|
3455
|
+
if (/^canvas$/i.test(tagName) && "getContext" in el) {
|
|
3456
|
+
return ICON_TYPE_CANVAS;
|
|
3457
|
+
}
|
|
3458
|
+
}
|
|
3459
|
+
}
|
|
3460
|
+
|
|
3461
|
+
/**
|
|
3462
|
+
* Draws an identicon to a context.
|
|
3463
|
+
* @param {CanvasRenderingContext2D} ctx - Canvas context on which the icon will be drawn at location (0, 0).
|
|
3464
|
+
* @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.
|
|
3465
|
+
* @param {number} size - Icon size in pixels.
|
|
3466
|
+
* @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
|
|
3467
|
+
* global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
|
|
3468
|
+
* specified in place of a configuration object.
|
|
3469
|
+
*/
|
|
3470
|
+
function drawIcon(ctx, hashOrValue, size, config) {
|
|
3471
|
+
if (!ctx) {
|
|
3472
|
+
throw new Error("No canvas specified.");
|
|
3473
|
+
}
|
|
3474
|
+
|
|
3475
|
+
iconGenerator(new CanvasRenderer(ctx, size),
|
|
3476
|
+
isValidHash(hashOrValue) || computeHash(hashOrValue),
|
|
3477
|
+
config);
|
|
3478
|
+
|
|
3479
|
+
var canvas = ctx.canvas;
|
|
3480
|
+
if (canvas) {
|
|
3481
|
+
canvas[IS_RENDERED_PROPERTY] = true;
|
|
3482
|
+
}
|
|
3483
|
+
}
|
|
3484
|
+
|
|
3485
|
+
/**
|
|
3486
|
+
* Prepares a measure to be used as a measure in an SVG path, by
|
|
3487
|
+
* rounding the measure to a single decimal. This reduces the file
|
|
3488
|
+
* size of the generated SVG with more than 50% in some cases.
|
|
3489
|
+
*/
|
|
3490
|
+
function svgValue(value) {
|
|
3491
|
+
return ((value * 10 + 0.5) | 0) / 10;
|
|
3492
|
+
}
|
|
3493
|
+
|
|
3494
|
+
/**
|
|
3495
|
+
* Represents an SVG path element.
|
|
3496
|
+
*/
|
|
3497
|
+
function SvgPath() {
|
|
3498
|
+
/**
|
|
3499
|
+
* This property holds the data string (path.d) of the SVG path.
|
|
3500
|
+
* @type {string}
|
|
3501
|
+
*/
|
|
3502
|
+
this.A/*dataString*/ = "";
|
|
3503
|
+
}
|
|
3504
|
+
var SvgPath__prototype = SvgPath.prototype;
|
|
3505
|
+
|
|
3506
|
+
/**
|
|
3507
|
+
* Adds a polygon with the current fill color to the SVG path.
|
|
3508
|
+
* @param points An array of Point objects.
|
|
3509
|
+
*/
|
|
3510
|
+
SvgPath__prototype.g/*addPolygon*/ = function addPolygon (points) {
|
|
3511
|
+
var dataString = "";
|
|
3512
|
+
for (var i = 0; i < points.length; i++) {
|
|
3513
|
+
dataString += (i ? "L" : "M") + svgValue(points[i].x) + " " + svgValue(points[i].y);
|
|
3514
|
+
}
|
|
3515
|
+
this.A/*dataString*/ += dataString + "Z";
|
|
3516
|
+
};
|
|
3517
|
+
|
|
3518
|
+
/**
|
|
3519
|
+
* Adds a circle with the current fill color to the SVG path.
|
|
3520
|
+
* @param {Point} point The upper left corner of the circle bounding box.
|
|
3521
|
+
* @param {number} diameter The diameter of the circle.
|
|
3522
|
+
* @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
|
|
3523
|
+
*/
|
|
3524
|
+
SvgPath__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
|
|
3525
|
+
var sweepFlag = counterClockwise ? 0 : 1,
|
|
3526
|
+
svgRadius = svgValue(diameter / 2),
|
|
3527
|
+
svgDiameter = svgValue(diameter),
|
|
3528
|
+
svgArc = "a" + svgRadius + "," + svgRadius + " 0 1," + sweepFlag + " ";
|
|
3529
|
+
|
|
3530
|
+
this.A/*dataString*/ +=
|
|
3531
|
+
"M" + svgValue(point.x) + " " + svgValue(point.y + diameter / 2) +
|
|
3532
|
+
svgArc + svgDiameter + ",0" +
|
|
3533
|
+
svgArc + (-svgDiameter) + ",0";
|
|
3534
|
+
};
|
|
3535
|
+
|
|
3536
|
+
|
|
3537
|
+
|
|
3538
|
+
/**
|
|
3539
|
+
* Renderer producing SVG output.
|
|
3540
|
+
* @implements {Renderer}
|
|
3541
|
+
*/
|
|
3542
|
+
function SvgRenderer(target) {
|
|
3543
|
+
|
|
3544
|
+
/**
|
|
3545
|
+
* @type {Object.<string,SvgPath>}
|
|
3546
|
+
* @private
|
|
3547
|
+
*/
|
|
3548
|
+
this.C/*_pathsByColor*/ = { };
|
|
3549
|
+
|
|
3550
|
+
/**
|
|
3551
|
+
* @type {SvgElement|SvgWriter}
|
|
3552
|
+
* @private
|
|
3553
|
+
*/
|
|
3554
|
+
this.P/*_target*/ = target;
|
|
3555
|
+
|
|
3556
|
+
/**
|
|
3557
|
+
* @type {number}
|
|
3558
|
+
*/
|
|
3559
|
+
this.k/*iconSize*/ = target.k/*iconSize*/;
|
|
3560
|
+
}
|
|
3561
|
+
var SvgRenderer__prototype = SvgRenderer.prototype;
|
|
3562
|
+
|
|
3563
|
+
/**
|
|
3564
|
+
* Fills the background with the specified color.
|
|
3565
|
+
* @param {string} fillColor Fill color on the format #rrggbb[aa].
|
|
3566
|
+
*/
|
|
3567
|
+
SvgRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {
|
|
3568
|
+
var match = /^(#......)(..)?/.exec(fillColor),
|
|
3569
|
+
opacity = match[2] ? parseHex(match[2], 0) / 255 : 1;
|
|
3570
|
+
this.P/*_target*/.m/*setBackground*/(match[1], opacity);
|
|
3571
|
+
};
|
|
3572
|
+
|
|
3573
|
+
/**
|
|
3574
|
+
* Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.
|
|
3575
|
+
* @param {string} color Fill color on format #xxxxxx.
|
|
3576
|
+
*/
|
|
3577
|
+
SvgRenderer__prototype.M/*beginShape*/ = function beginShape (color) {
|
|
3578
|
+
this.B/*_path*/ = this.C/*_pathsByColor*/[color] || (this.C/*_pathsByColor*/[color] = new SvgPath());
|
|
3579
|
+
};
|
|
3580
|
+
|
|
3581
|
+
/**
|
|
3582
|
+
* Marks the end of the currently drawn shape.
|
|
3583
|
+
*/
|
|
3584
|
+
SvgRenderer__prototype.N/*endShape*/ = function endShape () { };
|
|
3585
|
+
|
|
3586
|
+
/**
|
|
3587
|
+
* Adds a polygon with the current fill color to the SVG.
|
|
3588
|
+
* @param points An array of Point objects.
|
|
3589
|
+
*/
|
|
3590
|
+
SvgRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {
|
|
3591
|
+
this.B/*_path*/.g/*addPolygon*/(points);
|
|
3592
|
+
};
|
|
3593
|
+
|
|
3594
|
+
/**
|
|
3595
|
+
* Adds a circle with the current fill color to the SVG.
|
|
3596
|
+
* @param {Point} point The upper left corner of the circle bounding box.
|
|
3597
|
+
* @param {number} diameter The diameter of the circle.
|
|
3598
|
+
* @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).
|
|
3599
|
+
*/
|
|
3600
|
+
SvgRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {
|
|
3601
|
+
this.B/*_path*/.h/*addCircle*/(point, diameter, counterClockwise);
|
|
3602
|
+
};
|
|
3603
|
+
|
|
3604
|
+
/**
|
|
3605
|
+
* Called when the icon has been completely drawn.
|
|
3606
|
+
*/
|
|
3607
|
+
SvgRenderer__prototype.finish = function finish () {
|
|
3608
|
+
var this$1$1 = this;
|
|
3609
|
+
|
|
3610
|
+
var pathsByColor = this.C/*_pathsByColor*/;
|
|
3611
|
+
for (var color in pathsByColor) {
|
|
3612
|
+
// hasOwnProperty cannot be shadowed in pathsByColor
|
|
3613
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
3614
|
+
if (pathsByColor.hasOwnProperty(color)) {
|
|
3615
|
+
this$1$1.P/*_target*/.R/*appendPath*/(color, pathsByColor[color].A/*dataString*/);
|
|
3616
|
+
}
|
|
3617
|
+
}
|
|
3618
|
+
};
|
|
3619
|
+
|
|
3620
|
+
var SVG_CONSTANTS = {
|
|
3621
|
+
S/*XMLNS*/: "http://www.w3.org/2000/svg",
|
|
3622
|
+
T/*WIDTH*/: "width",
|
|
3623
|
+
U/*HEIGHT*/: "height",
|
|
3624
|
+
};
|
|
3625
|
+
|
|
3626
|
+
/**
|
|
3627
|
+
* Renderer producing SVG output.
|
|
3628
|
+
*/
|
|
3629
|
+
function SvgWriter(iconSize) {
|
|
3630
|
+
/**
|
|
3631
|
+
* @type {number}
|
|
3632
|
+
*/
|
|
3633
|
+
this.k/*iconSize*/ = iconSize;
|
|
3634
|
+
|
|
3635
|
+
/**
|
|
3636
|
+
* @type {string}
|
|
3637
|
+
* @private
|
|
3638
|
+
*/
|
|
3639
|
+
this.D/*_s*/ =
|
|
3640
|
+
'<svg xmlns="' + SVG_CONSTANTS.S/*XMLNS*/ + '" width="' +
|
|
3641
|
+
iconSize + '" height="' + iconSize + '" viewBox="0 0 ' +
|
|
3642
|
+
iconSize + ' ' + iconSize + '">';
|
|
3643
|
+
}
|
|
3644
|
+
var SvgWriter__prototype = SvgWriter.prototype;
|
|
3645
|
+
|
|
3646
|
+
/**
|
|
3647
|
+
* Fills the background with the specified color.
|
|
3648
|
+
* @param {string} fillColor Fill color on the format #rrggbb.
|
|
3649
|
+
* @param {number} opacity Opacity in the range [0.0, 1.0].
|
|
3650
|
+
*/
|
|
3651
|
+
SvgWriter__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {
|
|
3652
|
+
if (opacity) {
|
|
3653
|
+
this.D/*_s*/ += '<rect width="100%" height="100%" fill="' +
|
|
3654
|
+
fillColor + '" opacity="' + opacity.toFixed(2) + '"/>';
|
|
3655
|
+
}
|
|
3656
|
+
};
|
|
3657
|
+
|
|
3658
|
+
/**
|
|
3659
|
+
* Writes a path to the SVG string.
|
|
3660
|
+
* @param {string} color Fill color on format #rrggbb.
|
|
3661
|
+
* @param {string} dataString The SVG path data string.
|
|
3662
|
+
*/
|
|
3663
|
+
SvgWriter__prototype.R/*appendPath*/ = function appendPath (color, dataString) {
|
|
3664
|
+
this.D/*_s*/ += '<path fill="' + color + '" d="' + dataString + '"/>';
|
|
3665
|
+
};
|
|
3666
|
+
|
|
3667
|
+
/**
|
|
3668
|
+
* Gets the rendered image as an SVG string.
|
|
3669
|
+
*/
|
|
3670
|
+
SvgWriter__prototype.toString = function toString () {
|
|
3671
|
+
return this.D/*_s*/ + "</svg>";
|
|
3672
|
+
};
|
|
3673
|
+
|
|
3674
|
+
/**
|
|
3675
|
+
* Draws an identicon as an SVG string.
|
|
3676
|
+
* @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.
|
|
3677
|
+
* @param {number} size - Icon size in pixels.
|
|
3678
|
+
* @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
|
|
3679
|
+
* global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be
|
|
3680
|
+
* specified in place of a configuration object.
|
|
3681
|
+
* @returns {string} SVG string
|
|
3682
|
+
*/
|
|
3683
|
+
function toSvg(hashOrValue, size, config) {
|
|
3684
|
+
var writer = new SvgWriter(size);
|
|
3685
|
+
iconGenerator(new SvgRenderer(writer),
|
|
3686
|
+
isValidHash(hashOrValue) || computeHash(hashOrValue),
|
|
3687
|
+
config);
|
|
3688
|
+
return writer.toString();
|
|
3689
|
+
}
|
|
3690
|
+
|
|
3691
|
+
/**
|
|
3692
|
+
* Creates a new element and adds it to the specified parent.
|
|
3693
|
+
* @param {Element} parentNode
|
|
3694
|
+
* @param {string} name
|
|
3695
|
+
* @param {...(string|number)} keyValuePairs
|
|
3696
|
+
*/
|
|
3697
|
+
function SvgElement_append(parentNode, name) {
|
|
3698
|
+
var keyValuePairs = [], len = arguments.length - 2;
|
|
3699
|
+
while ( len-- > 0 ) keyValuePairs[ len ] = arguments[ len + 2 ];
|
|
3700
|
+
|
|
3701
|
+
var el = document.createElementNS(SVG_CONSTANTS.S/*XMLNS*/, name);
|
|
3702
|
+
|
|
3703
|
+
for (var i = 0; i + 1 < keyValuePairs.length; i += 2) {
|
|
3704
|
+
el.setAttribute(
|
|
3705
|
+
/** @type {string} */(keyValuePairs[i]),
|
|
3706
|
+
/** @type {string} */(keyValuePairs[i + 1])
|
|
3707
|
+
);
|
|
3708
|
+
}
|
|
3709
|
+
|
|
3710
|
+
parentNode.appendChild(el);
|
|
3711
|
+
}
|
|
3712
|
+
|
|
3713
|
+
|
|
3714
|
+
/**
|
|
3715
|
+
* Renderer producing SVG output.
|
|
3716
|
+
*/
|
|
3717
|
+
function SvgElement(element) {
|
|
3718
|
+
// Don't use the clientWidth and clientHeight properties on SVG elements
|
|
3719
|
+
// since Firefox won't serve a proper value of these properties on SVG
|
|
3720
|
+
// elements (https://bugzilla.mozilla.org/show_bug.cgi?id=874811)
|
|
3721
|
+
// Instead use 100px as a hardcoded size (the svg viewBox will rescale
|
|
3722
|
+
// the icon to the correct dimensions)
|
|
3723
|
+
var iconSize = this.k/*iconSize*/ = Math.min(
|
|
3724
|
+
(Number(element.getAttribute(SVG_CONSTANTS.T/*WIDTH*/)) || 100),
|
|
3725
|
+
(Number(element.getAttribute(SVG_CONSTANTS.U/*HEIGHT*/)) || 100)
|
|
3726
|
+
);
|
|
3727
|
+
|
|
3728
|
+
/**
|
|
3729
|
+
* @type {Element}
|
|
3730
|
+
* @private
|
|
3731
|
+
*/
|
|
3732
|
+
this.V/*_el*/ = element;
|
|
3733
|
+
|
|
3734
|
+
// Clear current SVG child elements
|
|
3735
|
+
while (element.firstChild) {
|
|
3736
|
+
element.removeChild(element.firstChild);
|
|
3737
|
+
}
|
|
3738
|
+
|
|
3739
|
+
// Set viewBox attribute to ensure the svg scales nicely.
|
|
3740
|
+
element.setAttribute("viewBox", "0 0 " + iconSize + " " + iconSize);
|
|
3741
|
+
element.setAttribute("preserveAspectRatio", "xMidYMid meet");
|
|
3742
|
+
}
|
|
3743
|
+
var SvgElement__prototype = SvgElement.prototype;
|
|
3744
|
+
|
|
3745
|
+
/**
|
|
3746
|
+
* Fills the background with the specified color.
|
|
3747
|
+
* @param {string} fillColor Fill color on the format #rrggbb.
|
|
3748
|
+
* @param {number} opacity Opacity in the range [0.0, 1.0].
|
|
3749
|
+
*/
|
|
3750
|
+
SvgElement__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {
|
|
3751
|
+
if (opacity) {
|
|
3752
|
+
SvgElement_append(this.V/*_el*/, "rect",
|
|
3753
|
+
SVG_CONSTANTS.T/*WIDTH*/, "100%",
|
|
3754
|
+
SVG_CONSTANTS.U/*HEIGHT*/, "100%",
|
|
3755
|
+
"fill", fillColor,
|
|
3756
|
+
"opacity", opacity);
|
|
3757
|
+
}
|
|
3758
|
+
};
|
|
3759
|
+
|
|
3760
|
+
/**
|
|
3761
|
+
* Appends a path to the SVG element.
|
|
3762
|
+
* @param {string} color Fill color on format #xxxxxx.
|
|
3763
|
+
* @param {string} dataString The SVG path data string.
|
|
3764
|
+
*/
|
|
3765
|
+
SvgElement__prototype.R/*appendPath*/ = function appendPath (color, dataString) {
|
|
3766
|
+
SvgElement_append(this.V/*_el*/, "path",
|
|
3767
|
+
"fill", color,
|
|
3768
|
+
"d", dataString);
|
|
3769
|
+
};
|
|
3770
|
+
|
|
3771
|
+
/**
|
|
3772
|
+
* Updates all canvas elements with the `data-jdenticon-hash` or `data-jdenticon-value` attribute.
|
|
3773
|
+
*/
|
|
3774
|
+
function updateAll() {
|
|
3775
|
+
if (documentQuerySelectorAll) {
|
|
3776
|
+
update(ICON_SELECTOR);
|
|
3777
|
+
}
|
|
3778
|
+
}
|
|
3779
|
+
|
|
3780
|
+
/**
|
|
3781
|
+
* Updates the identicon in the specified `<canvas>` or `<svg>` elements.
|
|
3782
|
+
* @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
|
|
3783
|
+
* `<svg>` or `<canvas>`, or a CSS selector to such an element.
|
|
3784
|
+
* @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
|
|
3785
|
+
* `data-jdenticon-value` attribute will be evaluated.
|
|
3786
|
+
* @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
|
|
3787
|
+
* global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
|
|
3788
|
+
* specified in place of a configuration object.
|
|
3789
|
+
*/
|
|
3790
|
+
function update(el, hashOrValue, config) {
|
|
3791
|
+
renderDomElement(el, hashOrValue, config, function (el, iconType) {
|
|
3792
|
+
if (iconType) {
|
|
3793
|
+
return iconType == ICON_TYPE_SVG ?
|
|
3794
|
+
new SvgRenderer(new SvgElement(el)) :
|
|
3795
|
+
new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext("2d"));
|
|
3796
|
+
}
|
|
3797
|
+
});
|
|
3798
|
+
}
|
|
3799
|
+
|
|
3800
|
+
/**
|
|
3801
|
+
* Updates the identicon in the specified `<canvas>` elements.
|
|
3802
|
+
* @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
|
|
3803
|
+
* `<canvas>`, or a CSS selector to such an element.
|
|
3804
|
+
* @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
|
|
3805
|
+
* `data-jdenticon-value` attribute will be evaluated.
|
|
3806
|
+
* @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
|
|
3807
|
+
* global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
|
|
3808
|
+
* specified in place of a configuration object.
|
|
3809
|
+
*/
|
|
3810
|
+
function updateCanvas(el, hashOrValue, config) {
|
|
3811
|
+
renderDomElement(el, hashOrValue, config, function (el, iconType) {
|
|
3812
|
+
if (iconType == ICON_TYPE_CANVAS) {
|
|
3813
|
+
return new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext("2d"));
|
|
3814
|
+
}
|
|
3815
|
+
});
|
|
3816
|
+
}
|
|
3817
|
+
|
|
3818
|
+
/**
|
|
3819
|
+
* Updates the identicon in the specified `<svg>` elements.
|
|
3820
|
+
* @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
|
|
3821
|
+
* `<svg>`, or a CSS selector to such an element.
|
|
3822
|
+
* @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
|
|
3823
|
+
* `data-jdenticon-value` attribute will be evaluated.
|
|
3824
|
+
* @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any
|
|
3825
|
+
* global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be
|
|
3826
|
+
* specified in place of a configuration object.
|
|
3827
|
+
*/
|
|
3828
|
+
function updateSvg(el, hashOrValue, config) {
|
|
3829
|
+
renderDomElement(el, hashOrValue, config, function (el, iconType) {
|
|
3830
|
+
if (iconType == ICON_TYPE_SVG) {
|
|
3831
|
+
return new SvgRenderer(new SvgElement(el));
|
|
3832
|
+
}
|
|
3833
|
+
});
|
|
3834
|
+
}
|
|
3835
|
+
|
|
3836
|
+
/**
|
|
3837
|
+
* Updates the identicon in the specified canvas or svg elements.
|
|
3838
|
+
* @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type
|
|
3839
|
+
* `<svg>` or `<canvas>`, or a CSS selector to such an element.
|
|
3840
|
+
* @param {*} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or
|
|
3841
|
+
* `data-jdenticon-value` attribute will be evaluated.
|
|
3842
|
+
* @param {Object|number|undefined} config
|
|
3843
|
+
* @param {function(Element,number):Renderer} rendererFactory - Factory function for creating an icon renderer.
|
|
3844
|
+
*/
|
|
3845
|
+
function renderDomElement(el, hashOrValue, config, rendererFactory) {
|
|
3846
|
+
if (typeof el === "string") {
|
|
3847
|
+
if (documentQuerySelectorAll) {
|
|
3848
|
+
var elements = documentQuerySelectorAll(el);
|
|
3849
|
+
for (var i = 0; i < elements.length; i++) {
|
|
3850
|
+
renderDomElement(elements[i], hashOrValue, config, rendererFactory);
|
|
3851
|
+
}
|
|
3852
|
+
}
|
|
3853
|
+
return;
|
|
3854
|
+
}
|
|
3855
|
+
|
|
3856
|
+
// Hash selection. The result from getValidHash or computeHash is
|
|
3857
|
+
// accepted as a valid hash.
|
|
3858
|
+
var hash =
|
|
3859
|
+
// 1. Explicit valid hash
|
|
3860
|
+
isValidHash(hashOrValue) ||
|
|
3861
|
+
|
|
3862
|
+
// 2. Explicit value (`!= null` catches both null and undefined)
|
|
3863
|
+
hashOrValue != null && computeHash(hashOrValue) ||
|
|
3864
|
+
|
|
3865
|
+
// 3. `data-jdenticon-hash` attribute
|
|
3866
|
+
isValidHash(el.getAttribute(ATTRIBUTES.O/*HASH*/)) ||
|
|
3867
|
+
|
|
3868
|
+
// 4. `data-jdenticon-value` attribute.
|
|
3869
|
+
// We want to treat an empty attribute as an empty value.
|
|
3870
|
+
// Some browsers return empty string even if the attribute
|
|
3871
|
+
// is not specified, so use hasAttribute to determine if
|
|
3872
|
+
// the attribute is specified.
|
|
3873
|
+
el.hasAttribute(ATTRIBUTES.v/*VALUE*/) && computeHash(el.getAttribute(ATTRIBUTES.v/*VALUE*/));
|
|
3874
|
+
|
|
3875
|
+
if (!hash) {
|
|
3876
|
+
// No hash specified. Don't render an icon.
|
|
3877
|
+
return;
|
|
3878
|
+
}
|
|
3879
|
+
|
|
3880
|
+
var renderer = rendererFactory(el, getIdenticonType(el));
|
|
3881
|
+
if (renderer) {
|
|
3882
|
+
// Draw icon
|
|
3883
|
+
iconGenerator(renderer, hash, config);
|
|
3884
|
+
el[IS_RENDERED_PROPERTY] = true;
|
|
3885
|
+
}
|
|
3886
|
+
}
|
|
3887
|
+
|
|
3888
|
+
// This file is compiled to dist/jdenticon-module.js
|
|
3889
|
+
|
|
3890
|
+
var jdenticon = updateAll;
|
|
3891
|
+
|
|
3892
|
+
defineConfigProperty(jdenticon);
|
|
3893
|
+
|
|
3894
|
+
// Export public API
|
|
3895
|
+
jdenticon["configure"] = configure;
|
|
3896
|
+
jdenticon["drawIcon"] = drawIcon;
|
|
3897
|
+
jdenticon["toSvg"] = toSvg;
|
|
3898
|
+
jdenticon["update"] = update;
|
|
3899
|
+
jdenticon["updateCanvas"] = updateCanvas;
|
|
3900
|
+
jdenticon["updateSvg"] = updateSvg;
|
|
3901
|
+
|
|
3902
|
+
/**
|
|
3903
|
+
* Specifies the version of the Jdenticon package in use.
|
|
3904
|
+
* @type {string}
|
|
3905
|
+
*/
|
|
3906
|
+
jdenticon["version"] = "3.3.0";
|
|
3907
|
+
|
|
3908
|
+
/**
|
|
3909
|
+
* Specifies which bundle of Jdenticon that is used.
|
|
3910
|
+
* @type {string}
|
|
3911
|
+
*/
|
|
3912
|
+
jdenticon["bundle"] = "browser-cjs";
|
|
3913
|
+
|
|
3914
|
+
jdenticonModule = jdenticon;
|
|
3915
|
+
|
|
3916
|
+
return jdenticonModule;
|
|
3848
3917
|
}
|
|
3849
3918
|
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
var jdenticon = updateAll;
|
|
3853
|
-
|
|
3854
|
-
defineConfigProperty(jdenticon);
|
|
3855
|
-
|
|
3856
|
-
// Export public API
|
|
3857
|
-
jdenticon["configure"] = configure;
|
|
3858
|
-
jdenticon["drawIcon"] = drawIcon;
|
|
3859
|
-
jdenticon["toSvg"] = toSvg;
|
|
3860
|
-
jdenticon["update"] = update;
|
|
3861
|
-
jdenticon["updateCanvas"] = updateCanvas;
|
|
3862
|
-
jdenticon["updateSvg"] = updateSvg;
|
|
3863
|
-
|
|
3864
|
-
/**
|
|
3865
|
-
* Specifies the version of the Jdenticon package in use.
|
|
3866
|
-
* @type {string}
|
|
3867
|
-
*/
|
|
3868
|
-
jdenticon["version"] = "3.3.0";
|
|
3869
|
-
|
|
3870
|
-
/**
|
|
3871
|
-
* Specifies which bundle of Jdenticon that is used.
|
|
3872
|
-
* @type {string}
|
|
3873
|
-
*/
|
|
3874
|
-
jdenticon["bundle"] = "browser-cjs";
|
|
3875
|
-
|
|
3876
|
-
var jdenticonModule = jdenticon;
|
|
3919
|
+
var jdenticonModuleExports = requireJdenticonModule();
|
|
3877
3920
|
|
|
3878
3921
|
const DEFAULT_CONFIG = {
|
|
3879
3922
|
keycloak: {
|
|
@@ -3899,6 +3942,8 @@ const DEFAULT_CONFIG = {
|
|
|
3899
3942
|
isLoading: true,
|
|
3900
3943
|
duration: 800
|
|
3901
3944
|
},
|
|
3945
|
+
allowedGlobalDomain: '',
|
|
3946
|
+
whitelistedUrls: ''
|
|
3902
3947
|
};
|
|
3903
3948
|
// Fetch config from API
|
|
3904
3949
|
class ConfigService {
|
|
@@ -3934,9 +3979,23 @@ class ConfigService {
|
|
|
3934
3979
|
}
|
|
3935
3980
|
const configService = ConfigService.getInstance();
|
|
3936
3981
|
|
|
3982
|
+
// const getRootDomain = (hostOrUrl: string): string => {
|
|
3983
|
+
// // Ensure we can parse it with URL
|
|
3984
|
+
// const url = hostOrUrl.startsWith("http") ? new URL(hostOrUrl) : new URL(`https://${hostOrUrl}`);
|
|
3985
|
+
// const hostname = url.hostname;
|
|
3986
|
+
// const port = url.port ? `:${url.port}` : "";
|
|
3987
|
+
// const parts = hostname.split(".");
|
|
3988
|
+
// // localhost → return with port
|
|
3989
|
+
// if (hostname === "localhost") return hostname + port;
|
|
3990
|
+
// // sslip.io → keep last 3 parts
|
|
3991
|
+
// if (hostname.endsWith(".sslip.io")) return parts.slice(-5).join(".") + port;
|
|
3992
|
+
// // Normal domains → remove first label
|
|
3993
|
+
// return parts.slice(1).join(".") + port;
|
|
3994
|
+
// };
|
|
3937
3995
|
const getRootDomain = (hostOrUrl) => {
|
|
3938
|
-
|
|
3939
|
-
|
|
3996
|
+
const url = hostOrUrl.startsWith("http")
|
|
3997
|
+
? new URL(hostOrUrl)
|
|
3998
|
+
: new URL(`https://${hostOrUrl}`);
|
|
3940
3999
|
const hostname = url.hostname;
|
|
3941
4000
|
const port = url.port ? `:${url.port}` : "";
|
|
3942
4001
|
const parts = hostname.split(".");
|
|
@@ -3946,8 +4005,8 @@ const getRootDomain = (hostOrUrl) => {
|
|
|
3946
4005
|
// sslip.io → keep last 3 parts
|
|
3947
4006
|
if (hostname.endsWith(".sslip.io"))
|
|
3948
4007
|
return parts.slice(-5).join(".") + port;
|
|
3949
|
-
//
|
|
3950
|
-
return
|
|
4008
|
+
// Keep full hostname
|
|
4009
|
+
return hostname + port;
|
|
3951
4010
|
};
|
|
3952
4011
|
const getUrlProtocol = (url, defaultProtocol = "https://") => {
|
|
3953
4012
|
if (!url)
|
|
@@ -3999,33 +4058,61 @@ class MenuService {
|
|
|
3999
4058
|
}
|
|
4000
4059
|
const menuService = new MenuService();
|
|
4001
4060
|
|
|
4002
|
-
const dashButtonCss = "/*!\n * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */.fa{font-family:var(--fa-style-family,\"Font Awesome 6 Free\");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-regular,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-brands:before,.fa-regular:before,.fa-solid:before,.fa:before,.fab:before,.far:before,.fas:before{content:var(--fa)}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:\"Font Awesome 6 Free\"}.fa-brands,.fab{font-family:\"Font Awesome 6 Brands\"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0{--fa:\"\\30\"}.fa-1{--fa:\"\\31\"}.fa-2{--fa:\"\\32\"}.fa-3{--fa:\"\\33\"}.fa-4{--fa:\"\\34\"}.fa-5{--fa:\"\\35\"}.fa-6{--fa:\"\\36\"}.fa-7{--fa:\"\\37\"}.fa-8{--fa:\"\\38\"}.fa-9{--fa:\"\\39\"}.fa-fill-drip{--fa:\"\\f576\"}.fa-arrows-to-circle{--fa:\"\\e4bd\"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:\"\\f138\"}.fa-at{--fa:\"\\40\"}.fa-trash-alt,.fa-trash-can{--fa:\"\\f2ed\"}.fa-text-height{--fa:\"\\f034\"}.fa-user-times,.fa-user-xmark{--fa:\"\\f235\"}.fa-stethoscope{--fa:\"\\f0f1\"}.fa-comment-alt,.fa-message{--fa:\"\\f27a\"}.fa-info{--fa:\"\\f129\"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:\"\\f422\"}.fa-explosion{--fa:\"\\e4e9\"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:\"\\f15c\"}.fa-wave-square{--fa:\"\\f83e\"}.fa-ring{--fa:\"\\f70b\"}.fa-building-un{--fa:\"\\e4d9\"}.fa-dice-three{--fa:\"\\f527\"}.fa-calendar-alt,.fa-calendar-days{--fa:\"\\f073\"}.fa-anchor-circle-check{--fa:\"\\e4aa\"}.fa-building-circle-arrow-right{--fa:\"\\e4d1\"}.fa-volleyball,.fa-volleyball-ball{--fa:\"\\f45f\"}.fa-arrows-up-to-line{--fa:\"\\e4c2\"}.fa-sort-desc,.fa-sort-down{--fa:\"\\f0dd\"}.fa-circle-minus,.fa-minus-circle{--fa:\"\\f056\"}.fa-door-open{--fa:\"\\f52b\"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:\"\\f2f5\"}.fa-atom{--fa:\"\\f5d2\"}.fa-soap{--fa:\"\\e06e\"}.fa-heart-music-camera-bolt,.fa-icons{--fa:\"\\f86d\"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:\"\\f539\"}.fa-bridge-circle-check{--fa:\"\\e4c9\"}.fa-pump-medical{--fa:\"\\e06a\"}.fa-fingerprint{--fa:\"\\f577\"}.fa-hand-point-right{--fa:\"\\f0a4\"}.fa-magnifying-glass-location,.fa-search-location{--fa:\"\\f689\"}.fa-forward-step,.fa-step-forward{--fa:\"\\f051\"}.fa-face-smile-beam,.fa-smile-beam{--fa:\"\\f5b8\"}.fa-flag-checkered{--fa:\"\\f11e\"}.fa-football,.fa-football-ball{--fa:\"\\f44e\"}.fa-school-circle-exclamation{--fa:\"\\e56c\"}.fa-crop{--fa:\"\\f125\"}.fa-angle-double-down,.fa-angles-down{--fa:\"\\f103\"}.fa-users-rectangle{--fa:\"\\e594\"}.fa-people-roof{--fa:\"\\e537\"}.fa-people-line{--fa:\"\\e534\"}.fa-beer,.fa-beer-mug-empty{--fa:\"\\f0fc\"}.fa-diagram-predecessor{--fa:\"\\e477\"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:\"\\f176\"}.fa-burn,.fa-fire-flame-simple{--fa:\"\\f46a\"}.fa-male,.fa-person{--fa:\"\\f183\"}.fa-laptop{--fa:\"\\f109\"}.fa-file-csv{--fa:\"\\f6dd\"}.fa-menorah{--fa:\"\\f676\"}.fa-truck-plane{--fa:\"\\e58f\"}.fa-record-vinyl{--fa:\"\\f8d9\"}.fa-face-grin-stars,.fa-grin-stars{--fa:\"\\f587\"}.fa-bong{--fa:\"\\f55c\"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:\"\\f67b\"}.fa-arrow-down-up-across-line{--fa:\"\\e4af\"}.fa-spoon,.fa-utensil-spoon{--fa:\"\\f2e5\"}.fa-jar-wheat{--fa:\"\\e517\"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:\"\\f674\"}.fa-file-circle-exclamation{--fa:\"\\e4eb\"}.fa-circle-h,.fa-hospital-symbol{--fa:\"\\f47e\"}.fa-pager{--fa:\"\\f815\"}.fa-address-book,.fa-contact-book{--fa:\"\\f2b9\"}.fa-strikethrough{--fa:\"\\f0cc\"}.fa-k{--fa:\"\\4b\"}.fa-landmark-flag{--fa:\"\\e51c\"}.fa-pencil,.fa-pencil-alt{--fa:\"\\f303\"}.fa-backward{--fa:\"\\f04a\"}.fa-caret-right{--fa:\"\\f0da\"}.fa-comments{--fa:\"\\f086\"}.fa-file-clipboard,.fa-paste{--fa:\"\\f0ea\"}.fa-code-pull-request{--fa:\"\\e13c\"}.fa-clipboard-list{--fa:\"\\f46d\"}.fa-truck-loading,.fa-truck-ramp-box{--fa:\"\\f4de\"}.fa-user-check{--fa:\"\\f4fc\"}.fa-vial-virus{--fa:\"\\e597\"}.fa-sheet-plastic{--fa:\"\\e571\"}.fa-blog{--fa:\"\\f781\"}.fa-user-ninja{--fa:\"\\f504\"}.fa-person-arrow-up-from-line{--fa:\"\\e539\"}.fa-scroll-torah,.fa-torah{--fa:\"\\f6a0\"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:\"\\f458\"}.fa-toggle-off{--fa:\"\\f204\"}.fa-archive,.fa-box-archive{--fa:\"\\f187\"}.fa-person-drowning{--fa:\"\\e545\"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:\"\\f886\"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:\"\\f58a\"}.fa-spray-can{--fa:\"\\f5bd\"}.fa-truck-monster{--fa:\"\\f63b\"}.fa-w{--fa:\"\\57\"}.fa-earth-africa,.fa-globe-africa{--fa:\"\\f57c\"}.fa-rainbow{--fa:\"\\f75b\"}.fa-circle-notch{--fa:\"\\f1ce\"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:\"\\f3fa\"}.fa-paw{--fa:\"\\f1b0\"}.fa-cloud{--fa:\"\\f0c2\"}.fa-trowel-bricks{--fa:\"\\e58a\"}.fa-face-flushed,.fa-flushed{--fa:\"\\f579\"}.fa-hospital-user{--fa:\"\\f80d\"}.fa-tent-arrow-left-right{--fa:\"\\e57f\"}.fa-gavel,.fa-legal{--fa:\"\\f0e3\"}.fa-binoculars{--fa:\"\\f1e5\"}.fa-microphone-slash{--fa:\"\\f131\"}.fa-box-tissue{--fa:\"\\e05b\"}.fa-motorcycle{--fa:\"\\f21c\"}.fa-bell-concierge,.fa-concierge-bell{--fa:\"\\f562\"}.fa-pen-ruler,.fa-pencil-ruler{--fa:\"\\f5ae\"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:\"\\e068\"}.fa-mars-and-venus-burst{--fa:\"\\e523\"}.fa-caret-square-right,.fa-square-caret-right{--fa:\"\\f152\"}.fa-cut,.fa-scissors{--fa:\"\\f0c4\"}.fa-sun-plant-wilt{--fa:\"\\e57a\"}.fa-toilets-portable{--fa:\"\\e584\"}.fa-hockey-puck{--fa:\"\\f453\"}.fa-table{--fa:\"\\f0ce\"}.fa-magnifying-glass-arrow-right{--fa:\"\\e521\"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:\"\\f566\"}.fa-users-slash{--fa:\"\\e073\"}.fa-clover{--fa:\"\\e139\"}.fa-mail-reply,.fa-reply{--fa:\"\\f3e5\"}.fa-star-and-crescent{--fa:\"\\f699\"}.fa-house-fire{--fa:\"\\e50c\"}.fa-minus-square,.fa-square-minus{--fa:\"\\f146\"}.fa-helicopter{--fa:\"\\f533\"}.fa-compass{--fa:\"\\f14e\"}.fa-caret-square-down,.fa-square-caret-down{--fa:\"\\f150\"}.fa-file-circle-question{--fa:\"\\e4ef\"}.fa-laptop-code{--fa:\"\\f5fc\"}.fa-swatchbook{--fa:\"\\f5c3\"}.fa-prescription-bottle{--fa:\"\\f485\"}.fa-bars,.fa-navicon{--fa:\"\\f0c9\"}.fa-people-group{--fa:\"\\e533\"}.fa-hourglass-3,.fa-hourglass-end{--fa:\"\\f253\"}.fa-heart-broken,.fa-heart-crack{--fa:\"\\f7a9\"}.fa-external-link-square-alt,.fa-square-up-right{--fa:\"\\f360\"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:\"\\f597\"}.fa-film{--fa:\"\\f008\"}.fa-ruler-horizontal{--fa:\"\\f547\"}.fa-people-robbery{--fa:\"\\e536\"}.fa-lightbulb{--fa:\"\\f0eb\"}.fa-caret-left{--fa:\"\\f0d9\"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:\"\\f06a\"}.fa-school-circle-xmark{--fa:\"\\e56d\"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:\"\\f08b\"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:\"\\f13a\"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:\"\\f13e\"}.fa-cloud-showers-heavy{--fa:\"\\f740\"}.fa-headphones-alt,.fa-headphones-simple{--fa:\"\\f58f\"}.fa-sitemap{--fa:\"\\f0e8\"}.fa-circle-dollar-to-slot,.fa-donate{--fa:\"\\f4b9\"}.fa-memory{--fa:\"\\f538\"}.fa-road-spikes{--fa:\"\\e568\"}.fa-fire-burner{--fa:\"\\e4f1\"}.fa-flag{--fa:\"\\f024\"}.fa-hanukiah{--fa:\"\\f6e6\"}.fa-feather{--fa:\"\\f52d\"}.fa-volume-down,.fa-volume-low{--fa:\"\\f027\"}.fa-comment-slash{--fa:\"\\f4b3\"}.fa-cloud-sun-rain{--fa:\"\\f743\"}.fa-compress{--fa:\"\\f066\"}.fa-wheat-alt,.fa-wheat-awn{--fa:\"\\e2cd\"}.fa-ankh{--fa:\"\\f644\"}.fa-hands-holding-child{--fa:\"\\e4fa\"}.fa-asterisk{--fa:\"\\2a\"}.fa-check-square,.fa-square-check{--fa:\"\\f14a\"}.fa-peseta-sign{--fa:\"\\e221\"}.fa-header,.fa-heading{--fa:\"\\f1dc\"}.fa-ghost{--fa:\"\\f6e2\"}.fa-list,.fa-list-squares{--fa:\"\\f03a\"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:\"\\f87b\"}.fa-cart-plus{--fa:\"\\f217\"}.fa-gamepad{--fa:\"\\f11b\"}.fa-circle-dot,.fa-dot-circle{--fa:\"\\f192\"}.fa-dizzy,.fa-face-dizzy{--fa:\"\\f567\"}.fa-egg{--fa:\"\\f7fb\"}.fa-house-medical-circle-xmark{--fa:\"\\e513\"}.fa-campground{--fa:\"\\f6bb\"}.fa-folder-plus{--fa:\"\\f65e\"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:\"\\f1e3\"}.fa-paint-brush,.fa-paintbrush{--fa:\"\\f1fc\"}.fa-lock{--fa:\"\\f023\"}.fa-gas-pump{--fa:\"\\f52f\"}.fa-hot-tub,.fa-hot-tub-person{--fa:\"\\f593\"}.fa-map-location,.fa-map-marked{--fa:\"\\f59f\"}.fa-house-flood-water{--fa:\"\\e50e\"}.fa-tree{--fa:\"\\f1bb\"}.fa-bridge-lock{--fa:\"\\e4cc\"}.fa-sack-dollar{--fa:\"\\f81d\"}.fa-edit,.fa-pen-to-square{--fa:\"\\f044\"}.fa-car-side{--fa:\"\\f5e4\"}.fa-share-alt,.fa-share-nodes{--fa:\"\\f1e0\"}.fa-heart-circle-minus{--fa:\"\\e4ff\"}.fa-hourglass-2,.fa-hourglass-half{--fa:\"\\f252\"}.fa-microscope{--fa:\"\\f610\"}.fa-sink{--fa:\"\\e06d\"}.fa-bag-shopping,.fa-shopping-bag{--fa:\"\\f290\"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:\"\\f881\"}.fa-mitten{--fa:\"\\f7b5\"}.fa-person-rays{--fa:\"\\e54d\"}.fa-users{--fa:\"\\f0c0\"}.fa-eye-slash{--fa:\"\\f070\"}.fa-flask-vial{--fa:\"\\e4f3\"}.fa-hand,.fa-hand-paper{--fa:\"\\f256\"}.fa-om{--fa:\"\\f679\"}.fa-worm{--fa:\"\\e599\"}.fa-house-circle-xmark{--fa:\"\\e50b\"}.fa-plug{--fa:\"\\f1e6\"}.fa-chevron-up{--fa:\"\\f077\"}.fa-hand-spock{--fa:\"\\f259\"}.fa-stopwatch{--fa:\"\\f2f2\"}.fa-face-kiss,.fa-kiss{--fa:\"\\f596\"}.fa-bridge-circle-xmark{--fa:\"\\e4cb\"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:\"\\f589\"}.fa-chess-bishop{--fa:\"\\f43a\"}.fa-face-grin-wink,.fa-grin-wink{--fa:\"\\f58c\"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:\"\\f2a4\"}.fa-road-circle-check{--fa:\"\\e564\"}.fa-dice-five{--fa:\"\\f523\"}.fa-rss-square,.fa-square-rss{--fa:\"\\f143\"}.fa-land-mine-on{--fa:\"\\e51b\"}.fa-i-cursor{--fa:\"\\f246\"}.fa-stamp{--fa:\"\\f5bf\"}.fa-stairs{--fa:\"\\e289\"}.fa-i{--fa:\"\\49\"}.fa-hryvnia,.fa-hryvnia-sign{--fa:\"\\f6f2\"}.fa-pills{--fa:\"\\f484\"}.fa-face-grin-wide,.fa-grin-alt{--fa:\"\\f581\"}.fa-tooth{--fa:\"\\f5c9\"}.fa-v{--fa:\"\\56\"}.fa-bangladeshi-taka-sign{--fa:\"\\e2e6\"}.fa-bicycle{--fa:\"\\f206\"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:\"\\e579\"}.fa-head-side-cough-slash{--fa:\"\\e062\"}.fa-ambulance,.fa-truck-medical{--fa:\"\\f0f9\"}.fa-wheat-awn-circle-exclamation{--fa:\"\\e598\"}.fa-snowman{--fa:\"\\f7d0\"}.fa-mortar-pestle{--fa:\"\\f5a7\"}.fa-road-barrier{--fa:\"\\e562\"}.fa-school{--fa:\"\\f549\"}.fa-igloo{--fa:\"\\f7ae\"}.fa-joint{--fa:\"\\f595\"}.fa-angle-right{--fa:\"\\f105\"}.fa-horse{--fa:\"\\f6f0\"}.fa-q{--fa:\"\\51\"}.fa-g{--fa:\"\\47\"}.fa-notes-medical{--fa:\"\\f481\"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:\"\\f2c9\"}.fa-dong-sign{--fa:\"\\e169\"}.fa-capsules{--fa:\"\\f46b\"}.fa-poo-bolt,.fa-poo-storm{--fa:\"\\f75a\"}.fa-face-frown-open,.fa-frown-open{--fa:\"\\f57a\"}.fa-hand-point-up{--fa:\"\\f0a6\"}.fa-money-bill{--fa:\"\\f0d6\"}.fa-bookmark{--fa:\"\\f02e\"}.fa-align-justify{--fa:\"\\f039\"}.fa-umbrella-beach{--fa:\"\\f5ca\"}.fa-helmet-un{--fa:\"\\e503\"}.fa-bullseye{--fa:\"\\f140\"}.fa-bacon{--fa:\"\\f7e5\"}.fa-hand-point-down{--fa:\"\\f0a7\"}.fa-arrow-up-from-bracket{--fa:\"\\e09a\"}.fa-folder,.fa-folder-blank{--fa:\"\\f07b\"}.fa-file-medical-alt,.fa-file-waveform{--fa:\"\\f478\"}.fa-radiation{--fa:\"\\f7b9\"}.fa-chart-simple{--fa:\"\\e473\"}.fa-mars-stroke{--fa:\"\\f229\"}.fa-vial{--fa:\"\\f492\"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:\"\\f624\"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:\"\\e2ca\"}.fa-e{--fa:\"\\45\"}.fa-pen-alt,.fa-pen-clip{--fa:\"\\f305\"}.fa-bridge-circle-exclamation{--fa:\"\\e4ca\"}.fa-user{--fa:\"\\f007\"}.fa-school-circle-check{--fa:\"\\e56b\"}.fa-dumpster{--fa:\"\\f793\"}.fa-shuttle-van,.fa-van-shuttle{--fa:\"\\f5b6\"}.fa-building-user{--fa:\"\\e4da\"}.fa-caret-square-left,.fa-square-caret-left{--fa:\"\\f191\"}.fa-highlighter{--fa:\"\\f591\"}.fa-key{--fa:\"\\f084\"}.fa-bullhorn{--fa:\"\\f0a1\"}.fa-globe{--fa:\"\\f0ac\"}.fa-synagogue{--fa:\"\\f69b\"}.fa-person-half-dress{--fa:\"\\e548\"}.fa-road-bridge{--fa:\"\\e563\"}.fa-location-arrow{--fa:\"\\f124\"}.fa-c{--fa:\"\\43\"}.fa-tablet-button{--fa:\"\\f10a\"}.fa-building-lock{--fa:\"\\e4d6\"}.fa-pizza-slice{--fa:\"\\f818\"}.fa-money-bill-wave{--fa:\"\\f53a\"}.fa-area-chart,.fa-chart-area{--fa:\"\\f1fe\"}.fa-house-flag{--fa:\"\\e50d\"}.fa-person-circle-minus{--fa:\"\\e540\"}.fa-ban,.fa-cancel{--fa:\"\\f05e\"}.fa-camera-rotate{--fa:\"\\e0d8\"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:\"\\f5d0\"}.fa-star{--fa:\"\\f005\"}.fa-repeat{--fa:\"\\f363\"}.fa-cross{--fa:\"\\f654\"}.fa-box{--fa:\"\\f466\"}.fa-venus-mars{--fa:\"\\f228\"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:\"\\f245\"}.fa-expand-arrows-alt,.fa-maximize{--fa:\"\\f31e\"}.fa-charging-station{--fa:\"\\f5e7\"}.fa-shapes,.fa-triangle-circle-square{--fa:\"\\f61f\"}.fa-random,.fa-shuffle{--fa:\"\\f074\"}.fa-person-running,.fa-running{--fa:\"\\f70c\"}.fa-mobile-retro{--fa:\"\\e527\"}.fa-grip-lines-vertical{--fa:\"\\f7a5\"}.fa-spider{--fa:\"\\f717\"}.fa-hands-bound{--fa:\"\\e4f9\"}.fa-file-invoice-dollar{--fa:\"\\f571\"}.fa-plane-circle-exclamation{--fa:\"\\e556\"}.fa-x-ray{--fa:\"\\f497\"}.fa-spell-check{--fa:\"\\f891\"}.fa-slash{--fa:\"\\f715\"}.fa-computer-mouse,.fa-mouse{--fa:\"\\f8cc\"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:\"\\f090\"}.fa-shop-slash,.fa-store-alt-slash{--fa:\"\\e070\"}.fa-server{--fa:\"\\f233\"}.fa-virus-covid-slash{--fa:\"\\e4a9\"}.fa-shop-lock{--fa:\"\\e4a5\"}.fa-hourglass-1,.fa-hourglass-start{--fa:\"\\f251\"}.fa-blender-phone{--fa:\"\\f6b6\"}.fa-building-wheat{--fa:\"\\e4db\"}.fa-person-breastfeeding{--fa:\"\\e53a\"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:\"\\f2f6\"}.fa-venus{--fa:\"\\f221\"}.fa-passport{--fa:\"\\f5ab\"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:\"\\e68f\"}.fa-heart-pulse,.fa-heartbeat{--fa:\"\\f21e\"}.fa-people-carry,.fa-people-carry-box{--fa:\"\\f4ce\"}.fa-temperature-high{--fa:\"\\f769\"}.fa-microchip{--fa:\"\\f2db\"}.fa-crown{--fa:\"\\f521\"}.fa-weight-hanging{--fa:\"\\f5cd\"}.fa-xmarks-lines{--fa:\"\\e59a\"}.fa-file-prescription{--fa:\"\\f572\"}.fa-weight,.fa-weight-scale{--fa:\"\\f496\"}.fa-user-friends,.fa-user-group{--fa:\"\\f500\"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:\"\\f15e\"}.fa-chess-knight{--fa:\"\\f441\"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:\"\\f59b\"}.fa-wheelchair{--fa:\"\\f193\"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:\"\\f0aa\"}.fa-toggle-on{--fa:\"\\f205\"}.fa-person-walking,.fa-walking{--fa:\"\\f554\"}.fa-l{--fa:\"\\4c\"}.fa-fire{--fa:\"\\f06d\"}.fa-bed-pulse,.fa-procedures{--fa:\"\\f487\"}.fa-shuttle-space,.fa-space-shuttle{--fa:\"\\f197\"}.fa-face-laugh,.fa-laugh{--fa:\"\\f599\"}.fa-folder-open{--fa:\"\\f07c\"}.fa-heart-circle-plus{--fa:\"\\e500\"}.fa-code-fork{--fa:\"\\e13b\"}.fa-city{--fa:\"\\f64f\"}.fa-microphone-alt,.fa-microphone-lines{--fa:\"\\f3c9\"}.fa-pepper-hot{--fa:\"\\f816\"}.fa-unlock{--fa:\"\\f09c\"}.fa-colon-sign{--fa:\"\\e140\"}.fa-headset{--fa:\"\\f590\"}.fa-store-slash{--fa:\"\\e071\"}.fa-road-circle-xmark{--fa:\"\\e566\"}.fa-user-minus{--fa:\"\\f503\"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:\"\\f22a\"}.fa-champagne-glasses,.fa-glass-cheers{--fa:\"\\f79f\"}.fa-clipboard{--fa:\"\\f328\"}.fa-house-circle-exclamation{--fa:\"\\e50a\"}.fa-file-arrow-up,.fa-file-upload{--fa:\"\\f574\"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:\"\\f1eb\"}.fa-bath,.fa-bathtub{--fa:\"\\f2cd\"}.fa-underline{--fa:\"\\f0cd\"}.fa-user-edit,.fa-user-pen{--fa:\"\\f4ff\"}.fa-signature{--fa:\"\\f5b7\"}.fa-stroopwafel{--fa:\"\\f551\"}.fa-bold{--fa:\"\\f032\"}.fa-anchor-lock{--fa:\"\\e4ad\"}.fa-building-ngo{--fa:\"\\e4d7\"}.fa-manat-sign{--fa:\"\\e1d5\"}.fa-not-equal{--fa:\"\\f53e\"}.fa-border-style,.fa-border-top-left{--fa:\"\\f853\"}.fa-map-location-dot,.fa-map-marked-alt{--fa:\"\\f5a0\"}.fa-jedi{--fa:\"\\f669\"}.fa-poll,.fa-square-poll-vertical{--fa:\"\\f681\"}.fa-mug-hot{--fa:\"\\f7b6\"}.fa-battery-car,.fa-car-battery{--fa:\"\\f5df\"}.fa-gift{--fa:\"\\f06b\"}.fa-dice-two{--fa:\"\\f528\"}.fa-chess-queen{--fa:\"\\f445\"}.fa-glasses{--fa:\"\\f530\"}.fa-chess-board{--fa:\"\\f43c\"}.fa-building-circle-check{--fa:\"\\e4d2\"}.fa-person-chalkboard{--fa:\"\\e53d\"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:\"\\f22b\"}.fa-hand-back-fist,.fa-hand-rock{--fa:\"\\f255\"}.fa-caret-square-up,.fa-square-caret-up{--fa:\"\\f151\"}.fa-cloud-showers-water{--fa:\"\\e4e4\"}.fa-bar-chart,.fa-chart-bar{--fa:\"\\f080\"}.fa-hands-bubbles,.fa-hands-wash{--fa:\"\\e05e\"}.fa-less-than-equal{--fa:\"\\f537\"}.fa-train{--fa:\"\\f238\"}.fa-eye-low-vision,.fa-low-vision{--fa:\"\\f2a8\"}.fa-crow{--fa:\"\\f520\"}.fa-sailboat{--fa:\"\\e445\"}.fa-window-restore{--fa:\"\\f2d2\"}.fa-plus-square,.fa-square-plus{--fa:\"\\f0fe\"}.fa-torii-gate{--fa:\"\\f6a1\"}.fa-frog{--fa:\"\\f52e\"}.fa-bucket{--fa:\"\\e4cf\"}.fa-image{--fa:\"\\f03e\"}.fa-microphone{--fa:\"\\f130\"}.fa-cow{--fa:\"\\f6c8\"}.fa-caret-up{--fa:\"\\f0d8\"}.fa-screwdriver{--fa:\"\\f54a\"}.fa-folder-closed{--fa:\"\\e185\"}.fa-house-tsunami{--fa:\"\\e515\"}.fa-square-nfi{--fa:\"\\e576\"}.fa-arrow-up-from-ground-water{--fa:\"\\e4b5\"}.fa-glass-martini-alt,.fa-martini-glass{--fa:\"\\f57b\"}.fa-square-binary{--fa:\"\\e69b\"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:\"\\f2ea\"}.fa-columns,.fa-table-columns{--fa:\"\\f0db\"}.fa-lemon{--fa:\"\\f094\"}.fa-head-side-mask{--fa:\"\\e063\"}.fa-handshake{--fa:\"\\f2b5\"}.fa-gem{--fa:\"\\f3a5\"}.fa-dolly,.fa-dolly-box{--fa:\"\\f472\"}.fa-smoking{--fa:\"\\f48d\"}.fa-compress-arrows-alt,.fa-minimize{--fa:\"\\f78c\"}.fa-monument{--fa:\"\\f5a6\"}.fa-snowplow{--fa:\"\\f7d2\"}.fa-angle-double-right,.fa-angles-right{--fa:\"\\f101\"}.fa-cannabis{--fa:\"\\f55f\"}.fa-circle-play,.fa-play-circle{--fa:\"\\f144\"}.fa-tablets{--fa:\"\\f490\"}.fa-ethernet{--fa:\"\\f796\"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:\"\\f153\"}.fa-chair{--fa:\"\\f6c0\"}.fa-check-circle,.fa-circle-check{--fa:\"\\f058\"}.fa-circle-stop,.fa-stop-circle{--fa:\"\\f28d\"}.fa-compass-drafting,.fa-drafting-compass{--fa:\"\\f568\"}.fa-plate-wheat{--fa:\"\\e55a\"}.fa-icicles{--fa:\"\\f7ad\"}.fa-person-shelter{--fa:\"\\e54f\"}.fa-neuter{--fa:\"\\f22c\"}.fa-id-badge{--fa:\"\\f2c1\"}.fa-marker{--fa:\"\\f5a1\"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:\"\\f59a\"}.fa-helicopter-symbol{--fa:\"\\e502\"}.fa-universal-access{--fa:\"\\f29a\"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:\"\\f139\"}.fa-lari-sign{--fa:\"\\e1c8\"}.fa-volcano{--fa:\"\\f770\"}.fa-person-walking-dashed-line-arrow-right{--fa:\"\\e553\"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:\"\\f154\"}.fa-viruses{--fa:\"\\e076\"}.fa-square-person-confined{--fa:\"\\e577\"}.fa-user-tie{--fa:\"\\f508\"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:\"\\f175\"}.fa-tent-arrow-down-to-line{--fa:\"\\e57e\"}.fa-certificate{--fa:\"\\f0a3\"}.fa-mail-reply-all,.fa-reply-all{--fa:\"\\f122\"}.fa-suitcase{--fa:\"\\f0f2\"}.fa-person-skating,.fa-skating{--fa:\"\\f7c5\"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:\"\\f662\"}.fa-camera-retro{--fa:\"\\f083\"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:\"\\f0ab\"}.fa-arrow-right-to-file,.fa-file-import{--fa:\"\\f56f\"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:\"\\f14c\"}.fa-box-open{--fa:\"\\f49e\"}.fa-scroll{--fa:\"\\f70e\"}.fa-spa{--fa:\"\\f5bb\"}.fa-location-pin-lock{--fa:\"\\e51f\"}.fa-pause{--fa:\"\\f04c\"}.fa-hill-avalanche{--fa:\"\\e507\"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:\"\\f2cb\"}.fa-bomb{--fa:\"\\f1e2\"}.fa-registered{--fa:\"\\f25d\"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:\"\\f2bb\"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:\"\\f516\"}.fa-subscript{--fa:\"\\f12c\"}.fa-diamond-turn-right,.fa-directions{--fa:\"\\f5eb\"}.fa-burst{--fa:\"\\e4dc\"}.fa-house-laptop,.fa-laptop-house{--fa:\"\\e066\"}.fa-face-tired,.fa-tired{--fa:\"\\f5c8\"}.fa-money-bills{--fa:\"\\e1f3\"}.fa-smog{--fa:\"\\f75f\"}.fa-crutch{--fa:\"\\f7f7\"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:\"\\f0ee\"}.fa-palette{--fa:\"\\f53f\"}.fa-arrows-turn-right{--fa:\"\\e4c0\"}.fa-vest{--fa:\"\\e085\"}.fa-ferry{--fa:\"\\e4ea\"}.fa-arrows-down-to-people{--fa:\"\\e4b9\"}.fa-seedling,.fa-sprout{--fa:\"\\f4d8\"}.fa-arrows-alt-h,.fa-left-right{--fa:\"\\f337\"}.fa-boxes-packing{--fa:\"\\e4c7\"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:\"\\f0a8\"}.fa-group-arrows-rotate{--fa:\"\\e4f6\"}.fa-bowl-food{--fa:\"\\e4c6\"}.fa-candy-cane{--fa:\"\\f786\"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:\"\\f160\"}.fa-cloud-bolt,.fa-thunderstorm{--fa:\"\\f76c\"}.fa-remove-format,.fa-text-slash{--fa:\"\\f87d\"}.fa-face-smile-wink,.fa-smile-wink{--fa:\"\\f4da\"}.fa-file-word{--fa:\"\\f1c2\"}.fa-file-powerpoint{--fa:\"\\f1c4\"}.fa-arrows-h,.fa-arrows-left-right{--fa:\"\\f07e\"}.fa-house-lock{--fa:\"\\e510\"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:\"\\f0ed\"}.fa-children{--fa:\"\\e4e1\"}.fa-blackboard,.fa-chalkboard{--fa:\"\\f51b\"}.fa-user-alt-slash,.fa-user-large-slash{--fa:\"\\f4fa\"}.fa-envelope-open{--fa:\"\\f2b6\"}.fa-handshake-alt-slash,.fa-handshake-simple-slash{--fa:\"\\e05f\"}.fa-mattress-pillow{--fa:\"\\e525\"}.fa-guarani-sign{--fa:\"\\e19a\"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:\"\\f021\"}.fa-fire-extinguisher{--fa:\"\\f134\"}.fa-cruzeiro-sign{--fa:\"\\e152\"}.fa-greater-than-equal{--fa:\"\\f532\"}.fa-shield-alt,.fa-shield-halved{--fa:\"\\f3ed\"}.fa-atlas,.fa-book-atlas{--fa:\"\\f558\"}.fa-virus{--fa:\"\\e074\"}.fa-envelope-circle-check{--fa:\"\\e4e8\"}.fa-layer-group{--fa:\"\\f5fd\"}.fa-arrows-to-dot{--fa:\"\\e4be\"}.fa-archway{--fa:\"\\f557\"}.fa-heart-circle-check{--fa:\"\\e4fd\"}.fa-house-chimney-crack,.fa-house-damage{--fa:\"\\f6f1\"}.fa-file-archive,.fa-file-zipper{--fa:\"\\f1c6\"}.fa-square{--fa:\"\\f0c8\"}.fa-glass-martini,.fa-martini-glass-empty{--fa:\"\\f000\"}.fa-couch{--fa:\"\\f4b8\"}.fa-cedi-sign{--fa:\"\\e0df\"}.fa-italic{--fa:\"\\f033\"}.fa-table-cells-column-lock{--fa:\"\\e678\"}.fa-church{--fa:\"\\f51d\"}.fa-comments-dollar{--fa:\"\\f653\"}.fa-democrat{--fa:\"\\f747\"}.fa-z{--fa:\"\\5a\"}.fa-person-skiing,.fa-skiing{--fa:\"\\f7c9\"}.fa-road-lock{--fa:\"\\e567\"}.fa-a{--fa:\"\\41\"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:\"\\e03f\"}.fa-feather-alt,.fa-feather-pointed{--fa:\"\\f56b\"}.fa-p{--fa:\"\\50\"}.fa-snowflake{--fa:\"\\f2dc\"}.fa-newspaper{--fa:\"\\f1ea\"}.fa-ad,.fa-rectangle-ad{--fa:\"\\f641\"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:\"\\f0a9\"}.fa-filter-circle-xmark{--fa:\"\\e17b\"}.fa-locust{--fa:\"\\e520\"}.fa-sort,.fa-unsorted{--fa:\"\\f0dc\"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:\"\\f0cb\"}.fa-person-dress-burst{--fa:\"\\e544\"}.fa-money-check-alt,.fa-money-check-dollar{--fa:\"\\f53d\"}.fa-vector-square{--fa:\"\\f5cb\"}.fa-bread-slice{--fa:\"\\f7ec\"}.fa-language{--fa:\"\\f1ab\"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:\"\\f598\"}.fa-filter{--fa:\"\\f0b0\"}.fa-question{--fa:\"\\3f\"}.fa-file-signature{--fa:\"\\f573\"}.fa-arrows-alt,.fa-up-down-left-right{--fa:\"\\f0b2\"}.fa-house-chimney-user{--fa:\"\\e065\"}.fa-hand-holding-heart{--fa:\"\\f4be\"}.fa-puzzle-piece{--fa:\"\\f12e\"}.fa-money-check{--fa:\"\\f53c\"}.fa-star-half-alt,.fa-star-half-stroke{--fa:\"\\f5c0\"}.fa-code{--fa:\"\\f121\"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:\"\\f7a0\"}.fa-building-circle-exclamation{--fa:\"\\e4d3\"}.fa-magnifying-glass-chart{--fa:\"\\e522\"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:\"\\f08e\"}.fa-cubes-stacked{--fa:\"\\e4e6\"}.fa-krw,.fa-won,.fa-won-sign{--fa:\"\\f159\"}.fa-virus-covid{--fa:\"\\e4a8\"}.fa-austral-sign{--fa:\"\\e0a9\"}.fa-f{--fa:\"\\46\"}.fa-leaf{--fa:\"\\f06c\"}.fa-road{--fa:\"\\f018\"}.fa-cab,.fa-taxi{--fa:\"\\f1ba\"}.fa-person-circle-plus{--fa:\"\\e541\"}.fa-chart-pie,.fa-pie-chart{--fa:\"\\f200\"}.fa-bolt-lightning{--fa:\"\\e0b7\"}.fa-sack-xmark{--fa:\"\\e56a\"}.fa-file-excel{--fa:\"\\f1c3\"}.fa-file-contract{--fa:\"\\f56c\"}.fa-fish-fins{--fa:\"\\e4f2\"}.fa-building-flag{--fa:\"\\e4d5\"}.fa-face-grin-beam,.fa-grin-beam{--fa:\"\\f582\"}.fa-object-ungroup{--fa:\"\\f248\"}.fa-poop{--fa:\"\\f619\"}.fa-location-pin,.fa-map-marker{--fa:\"\\f041\"}.fa-kaaba{--fa:\"\\f66b\"}.fa-toilet-paper{--fa:\"\\f71e\"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:\"\\f807\"}.fa-eject{--fa:\"\\f052\"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:\"\\f35a\"}.fa-plane-circle-check{--fa:\"\\e555\"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:\"\\f5a5\"}.fa-object-group{--fa:\"\\f247\"}.fa-chart-line,.fa-line-chart{--fa:\"\\f201\"}.fa-mask-ventilator{--fa:\"\\e524\"}.fa-arrow-right{--fa:\"\\f061\"}.fa-map-signs,.fa-signs-post{--fa:\"\\f277\"}.fa-cash-register{--fa:\"\\f788\"}.fa-person-circle-question{--fa:\"\\e542\"}.fa-h{--fa:\"\\48\"}.fa-tarp{--fa:\"\\e57b\"}.fa-screwdriver-wrench,.fa-tools{--fa:\"\\f7d9\"}.fa-arrows-to-eye{--fa:\"\\e4bf\"}.fa-plug-circle-bolt{--fa:\"\\e55b\"}.fa-heart{--fa:\"\\f004\"}.fa-mars-and-venus{--fa:\"\\f224\"}.fa-home-user,.fa-house-user{--fa:\"\\e1b0\"}.fa-dumpster-fire{--fa:\"\\f794\"}.fa-house-crack{--fa:\"\\e3b1\"}.fa-cocktail,.fa-martini-glass-citrus{--fa:\"\\f561\"}.fa-face-surprise,.fa-surprise{--fa:\"\\f5c2\"}.fa-bottle-water{--fa:\"\\e4c5\"}.fa-circle-pause,.fa-pause-circle{--fa:\"\\f28b\"}.fa-toilet-paper-slash{--fa:\"\\e072\"}.fa-apple-alt,.fa-apple-whole{--fa:\"\\f5d1\"}.fa-kitchen-set{--fa:\"\\e51a\"}.fa-r{--fa:\"\\52\"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:\"\\f2ca\"}.fa-cube{--fa:\"\\f1b2\"}.fa-bitcoin-sign{--fa:\"\\e0b4\"}.fa-shield-dog{--fa:\"\\e573\"}.fa-solar-panel{--fa:\"\\f5ba\"}.fa-lock-open{--fa:\"\\f3c1\"}.fa-elevator{--fa:\"\\e16d\"}.fa-money-bill-transfer{--fa:\"\\e528\"}.fa-money-bill-trend-up{--fa:\"\\e529\"}.fa-house-flood-water-circle-arrow-right{--fa:\"\\e50f\"}.fa-poll-h,.fa-square-poll-horizontal{--fa:\"\\f682\"}.fa-circle{--fa:\"\\f111\"}.fa-backward-fast,.fa-fast-backward{--fa:\"\\f049\"}.fa-recycle{--fa:\"\\f1b8\"}.fa-user-astronaut{--fa:\"\\f4fb\"}.fa-plane-slash{--fa:\"\\e069\"}.fa-trademark{--fa:\"\\f25c\"}.fa-basketball,.fa-basketball-ball{--fa:\"\\f434\"}.fa-satellite-dish{--fa:\"\\f7c0\"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:\"\\f35b\"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:\"\\f3cd\"}.fa-volume-high,.fa-volume-up{--fa:\"\\f028\"}.fa-users-rays{--fa:\"\\e593\"}.fa-wallet{--fa:\"\\f555\"}.fa-clipboard-check{--fa:\"\\f46c\"}.fa-file-audio{--fa:\"\\f1c7\"}.fa-burger,.fa-hamburger{--fa:\"\\f805\"}.fa-wrench{--fa:\"\\f0ad\"}.fa-bugs{--fa:\"\\e4d0\"}.fa-rupee,.fa-rupee-sign{--fa:\"\\f156\"}.fa-file-image{--fa:\"\\f1c5\"}.fa-circle-question,.fa-question-circle{--fa:\"\\f059\"}.fa-plane-departure{--fa:\"\\f5b0\"}.fa-handshake-slash{--fa:\"\\e060\"}.fa-book-bookmark{--fa:\"\\e0bb\"}.fa-code-branch{--fa:\"\\f126\"}.fa-hat-cowboy{--fa:\"\\f8c0\"}.fa-bridge{--fa:\"\\e4c8\"}.fa-phone-alt,.fa-phone-flip{--fa:\"\\f879\"}.fa-truck-front{--fa:\"\\e2b7\"}.fa-cat{--fa:\"\\f6be\"}.fa-anchor-circle-exclamation{--fa:\"\\e4ab\"}.fa-truck-field{--fa:\"\\e58d\"}.fa-route{--fa:\"\\f4d7\"}.fa-clipboard-question{--fa:\"\\e4e3\"}.fa-panorama{--fa:\"\\e209\"}.fa-comment-medical{--fa:\"\\f7f5\"}.fa-teeth-open{--fa:\"\\f62f\"}.fa-file-circle-minus{--fa:\"\\e4ed\"}.fa-tags{--fa:\"\\f02c\"}.fa-wine-glass{--fa:\"\\f4e3\"}.fa-fast-forward,.fa-forward-fast{--fa:\"\\f050\"}.fa-face-meh-blank,.fa-meh-blank{--fa:\"\\f5a4\"}.fa-parking,.fa-square-parking{--fa:\"\\f540\"}.fa-house-signal{--fa:\"\\e012\"}.fa-bars-progress,.fa-tasks-alt{--fa:\"\\f828\"}.fa-faucet-drip{--fa:\"\\e006\"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:\"\\f474\"}.fa-ban-smoking,.fa-smoking-ban{--fa:\"\\f54d\"}.fa-terminal{--fa:\"\\f120\"}.fa-mobile-button{--fa:\"\\f10b\"}.fa-house-medical-flag{--fa:\"\\e514\"}.fa-basket-shopping,.fa-shopping-basket{--fa:\"\\f291\"}.fa-tape{--fa:\"\\f4db\"}.fa-bus-alt,.fa-bus-simple{--fa:\"\\f55e\"}.fa-eye{--fa:\"\\f06e\"}.fa-face-sad-cry,.fa-sad-cry{--fa:\"\\f5b3\"}.fa-audio-description{--fa:\"\\f29e\"}.fa-person-military-to-person{--fa:\"\\e54c\"}.fa-file-shield{--fa:\"\\e4f0\"}.fa-user-slash{--fa:\"\\f506\"}.fa-pen{--fa:\"\\f304\"}.fa-tower-observation{--fa:\"\\e586\"}.fa-file-code{--fa:\"\\f1c9\"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:\"\\f012\"}.fa-bus{--fa:\"\\f207\"}.fa-heart-circle-xmark{--fa:\"\\e501\"}.fa-home-lg,.fa-house-chimney{--fa:\"\\e3af\"}.fa-window-maximize{--fa:\"\\f2d0\"}.fa-face-frown,.fa-frown{--fa:\"\\f119\"}.fa-prescription{--fa:\"\\f5b1\"}.fa-shop,.fa-store-alt{--fa:\"\\f54f\"}.fa-floppy-disk,.fa-save{--fa:\"\\f0c7\"}.fa-vihara{--fa:\"\\f6a7\"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:\"\\f515\"}.fa-sort-asc,.fa-sort-up{--fa:\"\\f0de\"}.fa-comment-dots,.fa-commenting{--fa:\"\\f4ad\"}.fa-plant-wilt{--fa:\"\\e5aa\"}.fa-diamond{--fa:\"\\f219\"}.fa-face-grin-squint,.fa-grin-squint{--fa:\"\\f585\"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:\"\\f4c0\"}.fa-chart-diagram{--fa:\"\\e695\"}.fa-bacterium{--fa:\"\\e05a\"}.fa-hand-pointer{--fa:\"\\f25a\"}.fa-drum-steelpan{--fa:\"\\f56a\"}.fa-hand-scissors{--fa:\"\\f257\"}.fa-hands-praying,.fa-praying-hands{--fa:\"\\f684\"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:\"\\f01e\"}.fa-biohazard{--fa:\"\\f780\"}.fa-location,.fa-location-crosshairs{--fa:\"\\f601\"}.fa-mars-double{--fa:\"\\f227\"}.fa-child-dress{--fa:\"\\e59c\"}.fa-users-between-lines{--fa:\"\\e591\"}.fa-lungs-virus{--fa:\"\\e067\"}.fa-face-grin-tears,.fa-grin-tears{--fa:\"\\f588\"}.fa-phone{--fa:\"\\f095\"}.fa-calendar-times,.fa-calendar-xmark{--fa:\"\\f273\"}.fa-child-reaching{--fa:\"\\e59d\"}.fa-head-side-virus{--fa:\"\\e064\"}.fa-user-cog,.fa-user-gear{--fa:\"\\f4fe\"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:\"\\f163\"}.fa-door-closed{--fa:\"\\f52a\"}.fa-shield-virus{--fa:\"\\e06c\"}.fa-dice-six{--fa:\"\\f526\"}.fa-mosquito-net{--fa:\"\\e52c\"}.fa-file-fragment{--fa:\"\\e697\"}.fa-bridge-water{--fa:\"\\e4ce\"}.fa-person-booth{--fa:\"\\f756\"}.fa-text-width{--fa:\"\\f035\"}.fa-hat-wizard{--fa:\"\\f6e8\"}.fa-pen-fancy{--fa:\"\\f5ac\"}.fa-digging,.fa-person-digging{--fa:\"\\f85e\"}.fa-trash{--fa:\"\\f1f8\"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:\"\\f629\"}.fa-book-medical{--fa:\"\\f7e6\"}.fa-poo{--fa:\"\\f2fe\"}.fa-quote-right,.fa-quote-right-alt{--fa:\"\\f10e\"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:\"\\f553\"}.fa-cubes{--fa:\"\\f1b3\"}.fa-divide{--fa:\"\\f529\"}.fa-tenge,.fa-tenge-sign{--fa:\"\\f7d7\"}.fa-headphones{--fa:\"\\f025\"}.fa-hands-holding{--fa:\"\\f4c2\"}.fa-hands-clapping{--fa:\"\\e1a8\"}.fa-republican{--fa:\"\\f75e\"}.fa-arrow-left{--fa:\"\\f060\"}.fa-person-circle-xmark{--fa:\"\\e543\"}.fa-ruler{--fa:\"\\f545\"}.fa-align-left{--fa:\"\\f036\"}.fa-dice-d6{--fa:\"\\f6d1\"}.fa-restroom{--fa:\"\\f7bd\"}.fa-j{--fa:\"\\4a\"}.fa-users-viewfinder{--fa:\"\\e595\"}.fa-file-video{--fa:\"\\f1c8\"}.fa-external-link-alt,.fa-up-right-from-square{--fa:\"\\f35d\"}.fa-table-cells,.fa-th{--fa:\"\\f00a\"}.fa-file-pdf{--fa:\"\\f1c1\"}.fa-bible,.fa-book-bible{--fa:\"\\f647\"}.fa-o{--fa:\"\\4f\"}.fa-medkit,.fa-suitcase-medical{--fa:\"\\f0fa\"}.fa-user-secret{--fa:\"\\f21b\"}.fa-otter{--fa:\"\\f700\"}.fa-female,.fa-person-dress{--fa:\"\\f182\"}.fa-comment-dollar{--fa:\"\\f651\"}.fa-briefcase-clock,.fa-business-time{--fa:\"\\f64a\"}.fa-table-cells-large,.fa-th-large{--fa:\"\\f009\"}.fa-book-tanakh,.fa-tanakh{--fa:\"\\f827\"}.fa-phone-volume,.fa-volume-control-phone{--fa:\"\\f2a0\"}.fa-hat-cowboy-side{--fa:\"\\f8c1\"}.fa-clipboard-user{--fa:\"\\f7f3\"}.fa-child{--fa:\"\\f1ae\"}.fa-lira-sign{--fa:\"\\f195\"}.fa-satellite{--fa:\"\\f7bf\"}.fa-plane-lock{--fa:\"\\e558\"}.fa-tag{--fa:\"\\f02b\"}.fa-comment{--fa:\"\\f075\"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:\"\\f1fd\"}.fa-envelope{--fa:\"\\f0e0\"}.fa-angle-double-up,.fa-angles-up{--fa:\"\\f102\"}.fa-paperclip{--fa:\"\\f0c6\"}.fa-arrow-right-to-city{--fa:\"\\e4b3\"}.fa-ribbon{--fa:\"\\f4d6\"}.fa-lungs{--fa:\"\\f604\"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:\"\\f887\"}.fa-litecoin-sign{--fa:\"\\e1d3\"}.fa-border-none{--fa:\"\\f850\"}.fa-circle-nodes{--fa:\"\\e4e2\"}.fa-parachute-box{--fa:\"\\f4cd\"}.fa-indent{--fa:\"\\f03c\"}.fa-truck-field-un{--fa:\"\\e58e\"}.fa-hourglass,.fa-hourglass-empty{--fa:\"\\f254\"}.fa-mountain{--fa:\"\\f6fc\"}.fa-user-doctor,.fa-user-md{--fa:\"\\f0f0\"}.fa-circle-info,.fa-info-circle{--fa:\"\\f05a\"}.fa-cloud-meatball{--fa:\"\\f73b\"}.fa-camera,.fa-camera-alt{--fa:\"\\f030\"}.fa-square-virus{--fa:\"\\e578\"}.fa-meteor{--fa:\"\\f753\"}.fa-car-on{--fa:\"\\e4dd\"}.fa-sleigh{--fa:\"\\f7cc\"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:\"\\f162\"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:\"\\f4c1\"}.fa-water{--fa:\"\\f773\"}.fa-calendar-check{--fa:\"\\f274\"}.fa-braille{--fa:\"\\f2a1\"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:\"\\f486\"}.fa-landmark{--fa:\"\\f66f\"}.fa-truck{--fa:\"\\f0d1\"}.fa-crosshairs{--fa:\"\\f05b\"}.fa-person-cane{--fa:\"\\e53c\"}.fa-tent{--fa:\"\\e57d\"}.fa-vest-patches{--fa:\"\\e086\"}.fa-check-double{--fa:\"\\f560\"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:\"\\f15d\"}.fa-money-bill-wheat{--fa:\"\\e52a\"}.fa-cookie{--fa:\"\\f563\"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:\"\\f0e2\"}.fa-hard-drive,.fa-hdd{--fa:\"\\f0a0\"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:\"\\f586\"}.fa-dumbbell{--fa:\"\\f44b\"}.fa-list-alt,.fa-rectangle-list{--fa:\"\\f022\"}.fa-tarp-droplet{--fa:\"\\e57c\"}.fa-house-medical-circle-check{--fa:\"\\e511\"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:\"\\f7ca\"}.fa-calendar-plus{--fa:\"\\f271\"}.fa-plane-arrival{--fa:\"\\f5af\"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:\"\\f359\"}.fa-subway,.fa-train-subway{--fa:\"\\f239\"}.fa-chart-gantt{--fa:\"\\e0e4\"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:\"\\e1bc\"}.fa-crop-alt,.fa-crop-simple{--fa:\"\\f565\"}.fa-money-bill-1,.fa-money-bill-alt{--fa:\"\\f3d1\"}.fa-left-long,.fa-long-arrow-alt-left{--fa:\"\\f30a\"}.fa-dna{--fa:\"\\f471\"}.fa-virus-slash{--fa:\"\\e075\"}.fa-minus,.fa-subtract{--fa:\"\\f068\"}.fa-chess{--fa:\"\\f439\"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:\"\\f177\"}.fa-plug-circle-check{--fa:\"\\e55c\"}.fa-street-view{--fa:\"\\f21d\"}.fa-franc-sign{--fa:\"\\e18f\"}.fa-volume-off{--fa:\"\\f026\"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:\"\\f2a3\"}.fa-cog,.fa-gear{--fa:\"\\f013\"}.fa-droplet-slash,.fa-tint-slash{--fa:\"\\f5c7\"}.fa-mosque{--fa:\"\\f678\"}.fa-mosquito{--fa:\"\\e52b\"}.fa-star-of-david{--fa:\"\\f69a\"}.fa-person-military-rifle{--fa:\"\\e54b\"}.fa-cart-shopping,.fa-shopping-cart{--fa:\"\\f07a\"}.fa-vials{--fa:\"\\f493\"}.fa-plug-circle-plus{--fa:\"\\e55f\"}.fa-place-of-worship{--fa:\"\\f67f\"}.fa-grip-vertical{--fa:\"\\f58e\"}.fa-hexagon-nodes{--fa:\"\\e699\"}.fa-arrow-turn-up,.fa-level-up{--fa:\"\\f148\"}.fa-u{--fa:\"\\55\"}.fa-square-root-alt,.fa-square-root-variable{--fa:\"\\f698\"}.fa-clock,.fa-clock-four{--fa:\"\\f017\"}.fa-backward-step,.fa-step-backward{--fa:\"\\f048\"}.fa-pallet{--fa:\"\\f482\"}.fa-faucet{--fa:\"\\e005\"}.fa-baseball-bat-ball{--fa:\"\\f432\"}.fa-s{--fa:\"\\53\"}.fa-timeline{--fa:\"\\e29c\"}.fa-keyboard{--fa:\"\\f11c\"}.fa-caret-down{--fa:\"\\f0d7\"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:\"\\f7f2\"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:\"\\f2c8\"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:\"\\f3cf\"}.fa-plane-up{--fa:\"\\e22d\"}.fa-piggy-bank{--fa:\"\\f4d3\"}.fa-battery-3,.fa-battery-half{--fa:\"\\f242\"}.fa-mountain-city{--fa:\"\\e52e\"}.fa-coins{--fa:\"\\f51e\"}.fa-khanda{--fa:\"\\f66d\"}.fa-sliders,.fa-sliders-h{--fa:\"\\f1de\"}.fa-folder-tree{--fa:\"\\f802\"}.fa-network-wired{--fa:\"\\f6ff\"}.fa-map-pin{--fa:\"\\f276\"}.fa-hamsa{--fa:\"\\f665\"}.fa-cent-sign{--fa:\"\\e3f5\"}.fa-flask{--fa:\"\\f0c3\"}.fa-person-pregnant{--fa:\"\\e31e\"}.fa-wand-sparkles{--fa:\"\\f72b\"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:\"\\f142\"}.fa-ticket{--fa:\"\\f145\"}.fa-power-off{--fa:\"\\f011\"}.fa-long-arrow-alt-right,.fa-right-long{--fa:\"\\f30b\"}.fa-flag-usa{--fa:\"\\f74d\"}.fa-laptop-file{--fa:\"\\e51d\"}.fa-teletype,.fa-tty{--fa:\"\\f1e4\"}.fa-diagram-next{--fa:\"\\e476\"}.fa-person-rifle{--fa:\"\\e54e\"}.fa-house-medical-circle-exclamation{--fa:\"\\e512\"}.fa-closed-captioning{--fa:\"\\f20a\"}.fa-hiking,.fa-person-hiking{--fa:\"\\f6ec\"}.fa-venus-double{--fa:\"\\f226\"}.fa-images{--fa:\"\\f302\"}.fa-calculator{--fa:\"\\f1ec\"}.fa-people-pulling{--fa:\"\\e535\"}.fa-n{--fa:\"\\4e\"}.fa-cable-car,.fa-tram{--fa:\"\\f7da\"}.fa-cloud-rain{--fa:\"\\f73d\"}.fa-building-circle-xmark{--fa:\"\\e4d4\"}.fa-ship{--fa:\"\\f21a\"}.fa-arrows-down-to-line{--fa:\"\\e4b8\"}.fa-download{--fa:\"\\f019\"}.fa-face-grin,.fa-grin{--fa:\"\\f580\"}.fa-backspace,.fa-delete-left{--fa:\"\\f55a\"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:\"\\f1fb\"}.fa-file-circle-check{--fa:\"\\e5a0\"}.fa-forward{--fa:\"\\f04e\"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:\"\\f3ce\"}.fa-face-meh,.fa-meh{--fa:\"\\f11a\"}.fa-align-center{--fa:\"\\f037\"}.fa-book-dead,.fa-book-skull{--fa:\"\\f6b7\"}.fa-drivers-license,.fa-id-card{--fa:\"\\f2c2\"}.fa-dedent,.fa-outdent{--fa:\"\\f03b\"}.fa-heart-circle-exclamation{--fa:\"\\e4fe\"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:\"\\f015\"}.fa-calendar-week{--fa:\"\\f784\"}.fa-laptop-medical{--fa:\"\\f812\"}.fa-b{--fa:\"\\42\"}.fa-file-medical{--fa:\"\\f477\"}.fa-dice-one{--fa:\"\\f525\"}.fa-kiwi-bird{--fa:\"\\f535\"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:\"\\f0ec\"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:\"\\f2f9\"}.fa-cutlery,.fa-utensils{--fa:\"\\f2e7\"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:\"\\f161\"}.fa-mill-sign{--fa:\"\\e1ed\"}.fa-bowl-rice{--fa:\"\\e2eb\"}.fa-skull{--fa:\"\\f54c\"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:\"\\f519\"}.fa-truck-pickup{--fa:\"\\f63c\"}.fa-long-arrow-alt-up,.fa-up-long{--fa:\"\\f30c\"}.fa-stop{--fa:\"\\f04d\"}.fa-code-merge{--fa:\"\\f387\"}.fa-upload{--fa:\"\\f093\"}.fa-hurricane{--fa:\"\\f751\"}.fa-mound{--fa:\"\\e52d\"}.fa-toilet-portable{--fa:\"\\e583\"}.fa-compact-disc{--fa:\"\\f51f\"}.fa-file-arrow-down,.fa-file-download{--fa:\"\\f56d\"}.fa-caravan{--fa:\"\\f8ff\"}.fa-shield-cat{--fa:\"\\e572\"}.fa-bolt,.fa-zap{--fa:\"\\f0e7\"}.fa-glass-water{--fa:\"\\e4f4\"}.fa-oil-well{--fa:\"\\e532\"}.fa-vault{--fa:\"\\e2c5\"}.fa-mars{--fa:\"\\f222\"}.fa-toilet{--fa:\"\\f7d8\"}.fa-plane-circle-xmark{--fa:\"\\e557\"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:\"\\f157\"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:\"\\f158\"}.fa-sun{--fa:\"\\f185\"}.fa-guitar{--fa:\"\\f7a6\"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:\"\\f59c\"}.fa-horse-head{--fa:\"\\f7ab\"}.fa-bore-hole{--fa:\"\\e4c3\"}.fa-industry{--fa:\"\\f275\"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:\"\\f358\"}.fa-arrows-turn-to-dots{--fa:\"\\e4c1\"}.fa-florin-sign{--fa:\"\\e184\"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:\"\\f884\"}.fa-less-than{--fa:\"\\3c\"}.fa-angle-down{--fa:\"\\f107\"}.fa-car-tunnel{--fa:\"\\e4de\"}.fa-head-side-cough{--fa:\"\\e061\"}.fa-grip-lines{--fa:\"\\f7a4\"}.fa-thumbs-down{--fa:\"\\f165\"}.fa-user-lock{--fa:\"\\f502\"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:\"\\f178\"}.fa-anchor-circle-xmark{--fa:\"\\e4ac\"}.fa-ellipsis,.fa-ellipsis-h{--fa:\"\\f141\"}.fa-chess-pawn{--fa:\"\\f443\"}.fa-first-aid,.fa-kit-medical{--fa:\"\\f479\"}.fa-person-through-window{--fa:\"\\e5a9\"}.fa-toolbox{--fa:\"\\f552\"}.fa-hands-holding-circle{--fa:\"\\e4fb\"}.fa-bug{--fa:\"\\f188\"}.fa-credit-card,.fa-credit-card-alt{--fa:\"\\f09d\"}.fa-automobile,.fa-car{--fa:\"\\f1b9\"}.fa-hand-holding-hand{--fa:\"\\e4f7\"}.fa-book-open-reader,.fa-book-reader{--fa:\"\\f5da\"}.fa-mountain-sun{--fa:\"\\e52f\"}.fa-arrows-left-right-to-line{--fa:\"\\e4ba\"}.fa-dice-d20{--fa:\"\\f6cf\"}.fa-truck-droplet{--fa:\"\\e58c\"}.fa-file-circle-xmark{--fa:\"\\e5a1\"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:\"\\e040\"}.fa-medal{--fa:\"\\f5a2\"}.fa-bed{--fa:\"\\f236\"}.fa-h-square,.fa-square-h{--fa:\"\\f0fd\"}.fa-podcast{--fa:\"\\f2ce\"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:\"\\f2c7\"}.fa-bell{--fa:\"\\f0f3\"}.fa-superscript{--fa:\"\\f12b\"}.fa-plug-circle-xmark{--fa:\"\\e560\"}.fa-star-of-life{--fa:\"\\f621\"}.fa-phone-slash{--fa:\"\\f3dd\"}.fa-paint-roller{--fa:\"\\f5aa\"}.fa-hands-helping,.fa-handshake-angle{--fa:\"\\f4c4\"}.fa-location-dot,.fa-map-marker-alt{--fa:\"\\f3c5\"}.fa-file{--fa:\"\\f15b\"}.fa-greater-than{--fa:\"\\3e\"}.fa-person-swimming,.fa-swimmer{--fa:\"\\f5c4\"}.fa-arrow-down{--fa:\"\\f063\"}.fa-droplet,.fa-tint{--fa:\"\\f043\"}.fa-eraser{--fa:\"\\f12d\"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:\"\\f57d\"}.fa-person-burst{--fa:\"\\e53b\"}.fa-dove{--fa:\"\\f4ba\"}.fa-battery-0,.fa-battery-empty{--fa:\"\\f244\"}.fa-socks{--fa:\"\\f696\"}.fa-inbox{--fa:\"\\f01c\"}.fa-section{--fa:\"\\e447\"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:\"\\f625\"}.fa-envelope-open-text{--fa:\"\\f658\"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:\"\\f0f8\"}.fa-wine-bottle{--fa:\"\\f72f\"}.fa-chess-rook{--fa:\"\\f447\"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:\"\\f550\"}.fa-dharmachakra{--fa:\"\\f655\"}.fa-hotdog{--fa:\"\\f80f\"}.fa-blind,.fa-person-walking-with-cane{--fa:\"\\f29d\"}.fa-drum{--fa:\"\\f569\"}.fa-ice-cream{--fa:\"\\f810\"}.fa-heart-circle-bolt{--fa:\"\\e4fc\"}.fa-fax{--fa:\"\\f1ac\"}.fa-paragraph{--fa:\"\\f1dd\"}.fa-check-to-slot,.fa-vote-yea{--fa:\"\\f772\"}.fa-star-half{--fa:\"\\f089\"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:\"\\f468\"}.fa-chain,.fa-link{--fa:\"\\f0c1\"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:\"\\f2a2\"}.fa-tree-city{--fa:\"\\e587\"}.fa-play{--fa:\"\\f04b\"}.fa-font{--fa:\"\\f031\"}.fa-table-cells-row-lock{--fa:\"\\e67a\"}.fa-rupiah-sign{--fa:\"\\e23d\"}.fa-magnifying-glass,.fa-search{--fa:\"\\f002\"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:\"\\f45d\"}.fa-diagnoses,.fa-person-dots-from-line{--fa:\"\\f470\"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:\"\\f82a\"}.fa-naira-sign{--fa:\"\\e1f6\"}.fa-cart-arrow-down{--fa:\"\\f218\"}.fa-walkie-talkie{--fa:\"\\f8ef\"}.fa-file-edit,.fa-file-pen{--fa:\"\\f31c\"}.fa-receipt{--fa:\"\\f543\"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:\"\\f14b\"}.fa-suitcase-rolling{--fa:\"\\f5c1\"}.fa-person-circle-exclamation{--fa:\"\\e53f\"}.fa-chevron-down{--fa:\"\\f078\"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:\"\\f240\"}.fa-skull-crossbones{--fa:\"\\f714\"}.fa-code-compare{--fa:\"\\e13a\"}.fa-list-dots,.fa-list-ul{--fa:\"\\f0ca\"}.fa-school-lock{--fa:\"\\e56f\"}.fa-tower-cell{--fa:\"\\e585\"}.fa-down-long,.fa-long-arrow-alt-down{--fa:\"\\f309\"}.fa-ranking-star{--fa:\"\\e561\"}.fa-chess-king{--fa:\"\\f43f\"}.fa-person-harassing{--fa:\"\\e549\"}.fa-brazilian-real-sign{--fa:\"\\e46c\"}.fa-landmark-alt,.fa-landmark-dome{--fa:\"\\f752\"}.fa-arrow-up{--fa:\"\\f062\"}.fa-television,.fa-tv,.fa-tv-alt{--fa:\"\\f26c\"}.fa-shrimp{--fa:\"\\e448\"}.fa-list-check,.fa-tasks{--fa:\"\\f0ae\"}.fa-jug-detergent{--fa:\"\\e519\"}.fa-circle-user,.fa-user-circle{--fa:\"\\f2bd\"}.fa-user-shield{--fa:\"\\f505\"}.fa-wind{--fa:\"\\f72e\"}.fa-car-burst,.fa-car-crash{--fa:\"\\f5e1\"}.fa-y{--fa:\"\\59\"}.fa-person-snowboarding,.fa-snowboarding{--fa:\"\\f7ce\"}.fa-shipping-fast,.fa-truck-fast{--fa:\"\\f48b\"}.fa-fish{--fa:\"\\f578\"}.fa-user-graduate{--fa:\"\\f501\"}.fa-adjust,.fa-circle-half-stroke{--fa:\"\\f042\"}.fa-clapperboard{--fa:\"\\e131\"}.fa-circle-radiation,.fa-radiation-alt{--fa:\"\\f7ba\"}.fa-baseball,.fa-baseball-ball{--fa:\"\\f433\"}.fa-jet-fighter-up{--fa:\"\\e518\"}.fa-diagram-project,.fa-project-diagram{--fa:\"\\f542\"}.fa-copy{--fa:\"\\f0c5\"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:\"\\f6a9\"}.fa-hand-sparkles{--fa:\"\\e05d\"}.fa-grip,.fa-grip-horizontal{--fa:\"\\f58d\"}.fa-share-from-square,.fa-share-square{--fa:\"\\f14d\"}.fa-child-combatant,.fa-child-rifle{--fa:\"\\e4e0\"}.fa-gun{--fa:\"\\e19b\"}.fa-phone-square,.fa-square-phone{--fa:\"\\f098\"}.fa-add,.fa-plus{--fa:\"\\2b\"}.fa-expand{--fa:\"\\f065\"}.fa-computer{--fa:\"\\e4e5\"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:\"\\f00d\"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:\"\\f047\"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:\"\\f51c\"}.fa-peso-sign{--fa:\"\\e222\"}.fa-building-shield{--fa:\"\\e4d8\"}.fa-baby{--fa:\"\\f77c\"}.fa-users-line{--fa:\"\\e592\"}.fa-quote-left,.fa-quote-left-alt{--fa:\"\\f10d\"}.fa-tractor{--fa:\"\\f722\"}.fa-trash-arrow-up,.fa-trash-restore{--fa:\"\\f829\"}.fa-arrow-down-up-lock{--fa:\"\\e4b0\"}.fa-lines-leaning{--fa:\"\\e51e\"}.fa-ruler-combined{--fa:\"\\f546\"}.fa-copyright{--fa:\"\\f1f9\"}.fa-equals{--fa:\"\\3d\"}.fa-blender{--fa:\"\\f517\"}.fa-teeth{--fa:\"\\f62e\"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:\"\\f20b\"}.fa-map{--fa:\"\\f279\"}.fa-rocket{--fa:\"\\f135\"}.fa-photo-film,.fa-photo-video{--fa:\"\\f87c\"}.fa-folder-minus{--fa:\"\\f65d\"}.fa-hexagon-nodes-bolt{--fa:\"\\e69a\"}.fa-store{--fa:\"\\f54e\"}.fa-arrow-trend-up{--fa:\"\\e098\"}.fa-plug-circle-minus{--fa:\"\\e55e\"}.fa-sign,.fa-sign-hanging{--fa:\"\\f4d9\"}.fa-bezier-curve{--fa:\"\\f55b\"}.fa-bell-slash{--fa:\"\\f1f6\"}.fa-tablet,.fa-tablet-android{--fa:\"\\f3fb\"}.fa-school-flag{--fa:\"\\e56e\"}.fa-fill{--fa:\"\\f575\"}.fa-angle-up{--fa:\"\\f106\"}.fa-drumstick-bite{--fa:\"\\f6d7\"}.fa-holly-berry{--fa:\"\\f7aa\"}.fa-chevron-left{--fa:\"\\f053\"}.fa-bacteria{--fa:\"\\e059\"}.fa-hand-lizard{--fa:\"\\f258\"}.fa-notdef{--fa:\"\\e1fe\"}.fa-disease{--fa:\"\\f7fa\"}.fa-briefcase-medical{--fa:\"\\f469\"}.fa-genderless{--fa:\"\\f22d\"}.fa-chevron-right{--fa:\"\\f054\"}.fa-retweet{--fa:\"\\f079\"}.fa-car-alt,.fa-car-rear{--fa:\"\\f5de\"}.fa-pump-soap{--fa:\"\\e06b\"}.fa-video-slash{--fa:\"\\f4e2\"}.fa-battery-2,.fa-battery-quarter{--fa:\"\\f243\"}.fa-radio{--fa:\"\\f8d7\"}.fa-baby-carriage,.fa-carriage-baby{--fa:\"\\f77d\"}.fa-traffic-light{--fa:\"\\f637\"}.fa-thermometer{--fa:\"\\f491\"}.fa-vr-cardboard{--fa:\"\\f729\"}.fa-hand-middle-finger{--fa:\"\\f806\"}.fa-percent,.fa-percentage{--fa:\"\\25\"}.fa-truck-moving{--fa:\"\\f4df\"}.fa-glass-water-droplet{--fa:\"\\e4f5\"}.fa-display{--fa:\"\\e163\"}.fa-face-smile,.fa-smile{--fa:\"\\f118\"}.fa-thumb-tack,.fa-thumbtack{--fa:\"\\f08d\"}.fa-trophy{--fa:\"\\f091\"}.fa-person-praying,.fa-pray{--fa:\"\\f683\"}.fa-hammer{--fa:\"\\f6e3\"}.fa-hand-peace{--fa:\"\\f25b\"}.fa-rotate,.fa-sync-alt{--fa:\"\\f2f1\"}.fa-spinner{--fa:\"\\f110\"}.fa-robot{--fa:\"\\f544\"}.fa-peace{--fa:\"\\f67c\"}.fa-cogs,.fa-gears{--fa:\"\\f085\"}.fa-warehouse{--fa:\"\\f494\"}.fa-arrow-up-right-dots{--fa:\"\\e4b7\"}.fa-splotch{--fa:\"\\f5bc\"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:\"\\f584\"}.fa-dice-four{--fa:\"\\f524\"}.fa-sim-card{--fa:\"\\f7c4\"}.fa-transgender,.fa-transgender-alt{--fa:\"\\f225\"}.fa-mercury{--fa:\"\\f223\"}.fa-arrow-turn-down,.fa-level-down{--fa:\"\\f149\"}.fa-person-falling-burst{--fa:\"\\e547\"}.fa-award{--fa:\"\\f559\"}.fa-ticket-alt,.fa-ticket-simple{--fa:\"\\f3ff\"}.fa-building{--fa:\"\\f1ad\"}.fa-angle-double-left,.fa-angles-left{--fa:\"\\f100\"}.fa-qrcode{--fa:\"\\f029\"}.fa-clock-rotate-left,.fa-history{--fa:\"\\f1da\"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:\"\\f583\"}.fa-arrow-right-from-file,.fa-file-export{--fa:\"\\f56e\"}.fa-shield,.fa-shield-blank{--fa:\"\\f132\"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:\"\\f885\"}.fa-comment-nodes{--fa:\"\\e696\"}.fa-house-medical{--fa:\"\\e3b2\"}.fa-golf-ball,.fa-golf-ball-tee{--fa:\"\\f450\"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:\"\\f137\"}.fa-house-chimney-window{--fa:\"\\e00d\"}.fa-pen-nib{--fa:\"\\f5ad\"}.fa-tent-arrow-turn-left{--fa:\"\\e580\"}.fa-tents{--fa:\"\\e582\"}.fa-magic,.fa-wand-magic{--fa:\"\\f0d0\"}.fa-dog{--fa:\"\\f6d3\"}.fa-carrot{--fa:\"\\f787\"}.fa-moon{--fa:\"\\f186\"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:\"\\f5ce\"}.fa-cheese{--fa:\"\\f7ef\"}.fa-yin-yang{--fa:\"\\f6ad\"}.fa-music{--fa:\"\\f001\"}.fa-code-commit{--fa:\"\\f386\"}.fa-temperature-low{--fa:\"\\f76b\"}.fa-biking,.fa-person-biking{--fa:\"\\f84a\"}.fa-broom{--fa:\"\\f51a\"}.fa-shield-heart{--fa:\"\\e574\"}.fa-gopuram{--fa:\"\\f664\"}.fa-earth-oceania,.fa-globe-oceania{--fa:\"\\e47b\"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:\"\\f2d3\"}.fa-hashtag{--fa:\"\\23\"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:\"\\f424\"}.fa-oil-can{--fa:\"\\f613\"}.fa-t{--fa:\"\\54\"}.fa-hippo{--fa:\"\\f6ed\"}.fa-chart-column{--fa:\"\\e0e3\"}.fa-infinity{--fa:\"\\f534\"}.fa-vial-circle-check{--fa:\"\\e596\"}.fa-person-arrow-down-to-line{--fa:\"\\e538\"}.fa-voicemail{--fa:\"\\f897\"}.fa-fan{--fa:\"\\f863\"}.fa-person-walking-luggage{--fa:\"\\e554\"}.fa-arrows-alt-v,.fa-up-down{--fa:\"\\f338\"}.fa-cloud-moon-rain{--fa:\"\\f73c\"}.fa-calendar{--fa:\"\\f133\"}.fa-trailer{--fa:\"\\e041\"}.fa-bahai,.fa-haykal{--fa:\"\\f666\"}.fa-sd-card{--fa:\"\\f7c2\"}.fa-dragon{--fa:\"\\f6d5\"}.fa-shoe-prints{--fa:\"\\f54b\"}.fa-circle-plus,.fa-plus-circle{--fa:\"\\f055\"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:\"\\f58b\"}.fa-hand-holding{--fa:\"\\f4bd\"}.fa-plug-circle-exclamation{--fa:\"\\e55d\"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:\"\\f127\"}.fa-clone{--fa:\"\\f24d\"}.fa-person-walking-arrow-loop-left{--fa:\"\\e551\"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:\"\\f882\"}.fa-fire-alt,.fa-fire-flame-curved{--fa:\"\\f7e4\"}.fa-tornado{--fa:\"\\f76f\"}.fa-file-circle-plus{--fa:\"\\e494\"}.fa-book-quran,.fa-quran{--fa:\"\\f687\"}.fa-anchor{--fa:\"\\f13d\"}.fa-border-all{--fa:\"\\f84c\"}.fa-angry,.fa-face-angry{--fa:\"\\f556\"}.fa-cookie-bite{--fa:\"\\f564\"}.fa-arrow-trend-down{--fa:\"\\e097\"}.fa-feed,.fa-rss{--fa:\"\\f09e\"}.fa-draw-polygon{--fa:\"\\f5ee\"}.fa-balance-scale,.fa-scale-balanced{--fa:\"\\f24e\"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:\"\\f62a\"}.fa-shower{--fa:\"\\f2cc\"}.fa-desktop,.fa-desktop-alt{--fa:\"\\f390\"}.fa-m{--fa:\"\\4d\"}.fa-table-list,.fa-th-list{--fa:\"\\f00b\"}.fa-comment-sms,.fa-sms{--fa:\"\\f7cd\"}.fa-book{--fa:\"\\f02d\"}.fa-user-plus{--fa:\"\\f234\"}.fa-check{--fa:\"\\f00c\"}.fa-battery-4,.fa-battery-three-quarters{--fa:\"\\f241\"}.fa-house-circle-check{--fa:\"\\e509\"}.fa-angle-left{--fa:\"\\f104\"}.fa-diagram-successor{--fa:\"\\e47a\"}.fa-truck-arrow-right{--fa:\"\\e58b\"}.fa-arrows-split-up-and-left{--fa:\"\\e4bc\"}.fa-fist-raised,.fa-hand-fist{--fa:\"\\f6de\"}.fa-cloud-moon{--fa:\"\\f6c3\"}.fa-briefcase{--fa:\"\\f0b1\"}.fa-person-falling{--fa:\"\\e546\"}.fa-image-portrait,.fa-portrait{--fa:\"\\f3e0\"}.fa-user-tag{--fa:\"\\f507\"}.fa-rug{--fa:\"\\e569\"}.fa-earth-europe,.fa-globe-europe{--fa:\"\\f7a2\"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:\"\\f59d\"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:\"\\f410\"}.fa-baht-sign{--fa:\"\\e0ac\"}.fa-book-open{--fa:\"\\f518\"}.fa-book-journal-whills,.fa-journal-whills{--fa:\"\\f66a\"}.fa-handcuffs{--fa:\"\\e4f8\"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:\"\\f071\"}.fa-database{--fa:\"\\f1c0\"}.fa-mail-forward,.fa-share{--fa:\"\\f064\"}.fa-bottle-droplet{--fa:\"\\e4c4\"}.fa-mask-face{--fa:\"\\e1d7\"}.fa-hill-rockslide{--fa:\"\\e508\"}.fa-exchange-alt,.fa-right-left{--fa:\"\\f362\"}.fa-paper-plane{--fa:\"\\f1d8\"}.fa-road-circle-exclamation{--fa:\"\\e565\"}.fa-dungeon{--fa:\"\\f6d9\"}.fa-align-right{--fa:\"\\f038\"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:\"\\f53b\"}.fa-life-ring{--fa:\"\\f1cd\"}.fa-hands,.fa-sign-language,.fa-signing{--fa:\"\\f2a7\"}.fa-calendar-day{--fa:\"\\f783\"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:\"\\f5c5\"}.fa-arrows-up-down,.fa-arrows-v{--fa:\"\\f07d\"}.fa-face-grimace,.fa-grimace{--fa:\"\\f57f\"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:\"\\e2ce\"}.fa-level-down-alt,.fa-turn-down{--fa:\"\\f3be\"}.fa-person-walking-arrow-right{--fa:\"\\e552\"}.fa-envelope-square,.fa-square-envelope{--fa:\"\\f199\"}.fa-dice{--fa:\"\\f522\"}.fa-bowling-ball{--fa:\"\\f436\"}.fa-brain{--fa:\"\\f5dc\"}.fa-band-aid,.fa-bandage{--fa:\"\\f462\"}.fa-calendar-minus{--fa:\"\\f272\"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:\"\\f057\"}.fa-gifts{--fa:\"\\f79c\"}.fa-hotel{--fa:\"\\f594\"}.fa-earth-asia,.fa-globe-asia{--fa:\"\\f57e\"}.fa-id-card-alt,.fa-id-card-clip{--fa:\"\\f47f\"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:\"\\f00e\"}.fa-thumbs-up{--fa:\"\\f164\"}.fa-user-clock{--fa:\"\\f4fd\"}.fa-allergies,.fa-hand-dots{--fa:\"\\f461\"}.fa-file-invoice{--fa:\"\\f570\"}.fa-window-minimize{--fa:\"\\f2d1\"}.fa-coffee,.fa-mug-saucer{--fa:\"\\f0f4\"}.fa-brush{--fa:\"\\f55d\"}.fa-file-half-dashed{--fa:\"\\e698\"}.fa-mask{--fa:\"\\f6fa\"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:\"\\f010\"}.fa-ruler-vertical{--fa:\"\\f548\"}.fa-user-alt,.fa-user-large{--fa:\"\\f406\"}.fa-train-tram{--fa:\"\\e5b4\"}.fa-user-nurse{--fa:\"\\f82f\"}.fa-syringe{--fa:\"\\f48e\"}.fa-cloud-sun{--fa:\"\\f6c4\"}.fa-stopwatch-20{--fa:\"\\e06f\"}.fa-square-full{--fa:\"\\f45c\"}.fa-magnet{--fa:\"\\f076\"}.fa-jar{--fa:\"\\e516\"}.fa-note-sticky,.fa-sticky-note{--fa:\"\\f249\"}.fa-bug-slash{--fa:\"\\e490\"}.fa-arrow-up-from-water-pump{--fa:\"\\e4b6\"}.fa-bone{--fa:\"\\f5d7\"}.fa-table-cells-row-unlock{--fa:\"\\e691\"}.fa-user-injured{--fa:\"\\f728\"}.fa-face-sad-tear,.fa-sad-tear{--fa:\"\\f5b4\"}.fa-plane{--fa:\"\\f072\"}.fa-tent-arrows-down{--fa:\"\\e581\"}.fa-exclamation{--fa:\"\\21\"}.fa-arrows-spin{--fa:\"\\e4bb\"}.fa-print{--fa:\"\\f02f\"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:\"\\e2bb\"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:\"\\24\"}.fa-x{--fa:\"\\58\"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:\"\\f688\"}.fa-users-cog,.fa-users-gear{--fa:\"\\f509\"}.fa-person-military-pointing{--fa:\"\\e54a\"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:\"\\f19c\"}.fa-umbrella{--fa:\"\\f0e9\"}.fa-trowel{--fa:\"\\e589\"}.fa-d{--fa:\"\\44\"}.fa-stapler{--fa:\"\\e5af\"}.fa-masks-theater,.fa-theater-masks{--fa:\"\\f630\"}.fa-kip-sign{--fa:\"\\e1c4\"}.fa-hand-point-left{--fa:\"\\f0a5\"}.fa-handshake-alt,.fa-handshake-simple{--fa:\"\\f4c6\"}.fa-fighter-jet,.fa-jet-fighter{--fa:\"\\f0fb\"}.fa-share-alt-square,.fa-square-share-nodes{--fa:\"\\f1e1\"}.fa-barcode{--fa:\"\\f02a\"}.fa-plus-minus{--fa:\"\\e43c\"}.fa-video,.fa-video-camera{--fa:\"\\f03d\"}.fa-graduation-cap,.fa-mortar-board{--fa:\"\\f19d\"}.fa-hand-holding-medical{--fa:\"\\e05c\"}.fa-person-circle-check{--fa:\"\\e53e\"}.fa-level-up-alt,.fa-turn-up{--fa:\"\\f3bf\"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:\"Font Awesome 6 Brands\";--fa-font-brands:normal 400 1em/1 \"Font Awesome 6 Brands\"}@font-face{font-family:\"Font Awesome 6 Brands\";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format(\"woff2\"),url(../webfonts/fa-brands-400.ttf) format(\"truetype\")}.fa-brands,.fab{font-weight:400}.fa-monero{--fa:\"\\f3d0\"}.fa-hooli{--fa:\"\\f427\"}.fa-yelp{--fa:\"\\f1e9\"}.fa-cc-visa{--fa:\"\\f1f0\"}.fa-lastfm{--fa:\"\\f202\"}.fa-shopware{--fa:\"\\f5b5\"}.fa-creative-commons-nc{--fa:\"\\f4e8\"}.fa-aws{--fa:\"\\f375\"}.fa-redhat{--fa:\"\\f7bc\"}.fa-yoast{--fa:\"\\f2b1\"}.fa-cloudflare{--fa:\"\\e07d\"}.fa-ups{--fa:\"\\f7e0\"}.fa-pixiv{--fa:\"\\e640\"}.fa-wpexplorer{--fa:\"\\f2de\"}.fa-dyalog{--fa:\"\\f399\"}.fa-bity{--fa:\"\\f37a\"}.fa-stackpath{--fa:\"\\f842\"}.fa-buysellads{--fa:\"\\f20d\"}.fa-first-order{--fa:\"\\f2b0\"}.fa-modx{--fa:\"\\f285\"}.fa-guilded{--fa:\"\\e07e\"}.fa-vnv{--fa:\"\\f40b\"}.fa-js-square,.fa-square-js{--fa:\"\\f3b9\"}.fa-microsoft{--fa:\"\\f3ca\"}.fa-qq{--fa:\"\\f1d6\"}.fa-orcid{--fa:\"\\f8d2\"}.fa-java{--fa:\"\\f4e4\"}.fa-invision{--fa:\"\\f7b0\"}.fa-creative-commons-pd-alt{--fa:\"\\f4ed\"}.fa-centercode{--fa:\"\\f380\"}.fa-glide-g{--fa:\"\\f2a6\"}.fa-drupal{--fa:\"\\f1a9\"}.fa-jxl{--fa:\"\\e67b\"}.fa-dart-lang{--fa:\"\\e693\"}.fa-hire-a-helper{--fa:\"\\f3b0\"}.fa-creative-commons-by{--fa:\"\\f4e7\"}.fa-unity{--fa:\"\\e049\"}.fa-whmcs{--fa:\"\\f40d\"}.fa-rocketchat{--fa:\"\\f3e8\"}.fa-vk{--fa:\"\\f189\"}.fa-untappd{--fa:\"\\f405\"}.fa-mailchimp{--fa:\"\\f59e\"}.fa-css3-alt{--fa:\"\\f38b\"}.fa-reddit-square,.fa-square-reddit{--fa:\"\\f1a2\"}.fa-vimeo-v{--fa:\"\\f27d\"}.fa-contao{--fa:\"\\f26d\"}.fa-square-font-awesome{--fa:\"\\e5ad\"}.fa-deskpro{--fa:\"\\f38f\"}.fa-brave{--fa:\"\\e63c\"}.fa-sistrix{--fa:\"\\f3ee\"}.fa-instagram-square,.fa-square-instagram{--fa:\"\\e055\"}.fa-battle-net{--fa:\"\\f835\"}.fa-the-red-yeti{--fa:\"\\f69d\"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:\"\\f3af\"}.fa-edge{--fa:\"\\f282\"}.fa-threads{--fa:\"\\e618\"}.fa-napster{--fa:\"\\f3d2\"}.fa-snapchat-square,.fa-square-snapchat{--fa:\"\\f2ad\"}.fa-google-plus-g{--fa:\"\\f0d5\"}.fa-artstation{--fa:\"\\f77a\"}.fa-markdown{--fa:\"\\f60f\"}.fa-sourcetree{--fa:\"\\f7d3\"}.fa-google-plus{--fa:\"\\f2b3\"}.fa-diaspora{--fa:\"\\f791\"}.fa-foursquare{--fa:\"\\f180\"}.fa-stack-overflow{--fa:\"\\f16c\"}.fa-github-alt{--fa:\"\\f113\"}.fa-phoenix-squadron{--fa:\"\\f511\"}.fa-pagelines{--fa:\"\\f18c\"}.fa-algolia{--fa:\"\\f36c\"}.fa-red-river{--fa:\"\\f3e3\"}.fa-creative-commons-sa{--fa:\"\\f4ef\"}.fa-safari{--fa:\"\\f267\"}.fa-google{--fa:\"\\f1a0\"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:\"\\f35c\"}.fa-atlassian{--fa:\"\\f77b\"}.fa-linkedin-in{--fa:\"\\f0e1\"}.fa-digital-ocean{--fa:\"\\f391\"}.fa-nimblr{--fa:\"\\f5a8\"}.fa-chromecast{--fa:\"\\f838\"}.fa-evernote{--fa:\"\\f839\"}.fa-hacker-news{--fa:\"\\f1d4\"}.fa-creative-commons-sampling{--fa:\"\\f4f0\"}.fa-adversal{--fa:\"\\f36a\"}.fa-creative-commons{--fa:\"\\f25e\"}.fa-watchman-monitoring{--fa:\"\\e087\"}.fa-fonticons{--fa:\"\\f280\"}.fa-weixin{--fa:\"\\f1d7\"}.fa-shirtsinbulk{--fa:\"\\f214\"}.fa-codepen{--fa:\"\\f1cb\"}.fa-git-alt{--fa:\"\\f841\"}.fa-lyft{--fa:\"\\f3c3\"}.fa-rev{--fa:\"\\f5b2\"}.fa-windows{--fa:\"\\f17a\"}.fa-wizards-of-the-coast{--fa:\"\\f730\"}.fa-square-viadeo,.fa-viadeo-square{--fa:\"\\f2aa\"}.fa-meetup{--fa:\"\\f2e0\"}.fa-centos{--fa:\"\\f789\"}.fa-adn{--fa:\"\\f170\"}.fa-cloudsmith{--fa:\"\\f384\"}.fa-opensuse{--fa:\"\\e62b\"}.fa-pied-piper-alt{--fa:\"\\f1a8\"}.fa-dribbble-square,.fa-square-dribbble{--fa:\"\\f397\"}.fa-codiepie{--fa:\"\\f284\"}.fa-node{--fa:\"\\f419\"}.fa-mix{--fa:\"\\f3cb\"}.fa-steam{--fa:\"\\f1b6\"}.fa-cc-apple-pay{--fa:\"\\f416\"}.fa-scribd{--fa:\"\\f28a\"}.fa-debian{--fa:\"\\e60b\"}.fa-openid{--fa:\"\\f19b\"}.fa-instalod{--fa:\"\\e081\"}.fa-files-pinwheel{--fa:\"\\e69f\"}.fa-expeditedssl{--fa:\"\\f23e\"}.fa-sellcast{--fa:\"\\f2da\"}.fa-square-twitter,.fa-twitter-square{--fa:\"\\f081\"}.fa-r-project{--fa:\"\\f4f7\"}.fa-delicious{--fa:\"\\f1a5\"}.fa-freebsd{--fa:\"\\f3a4\"}.fa-vuejs{--fa:\"\\f41f\"}.fa-accusoft{--fa:\"\\f369\"}.fa-ioxhost{--fa:\"\\f208\"}.fa-fonticons-fi{--fa:\"\\f3a2\"}.fa-app-store{--fa:\"\\f36f\"}.fa-cc-mastercard{--fa:\"\\f1f1\"}.fa-itunes-note{--fa:\"\\f3b5\"}.fa-golang{--fa:\"\\e40f\"}.fa-kickstarter,.fa-square-kickstarter{--fa:\"\\f3bb\"}.fa-grav{--fa:\"\\f2d6\"}.fa-weibo{--fa:\"\\f18a\"}.fa-uncharted{--fa:\"\\e084\"}.fa-firstdraft{--fa:\"\\f3a1\"}.fa-square-youtube,.fa-youtube-square{--fa:\"\\f431\"}.fa-wikipedia-w{--fa:\"\\f266\"}.fa-rendact,.fa-wpressr{--fa:\"\\f3e4\"}.fa-angellist{--fa:\"\\f209\"}.fa-galactic-republic{--fa:\"\\f50c\"}.fa-nfc-directional{--fa:\"\\e530\"}.fa-skype{--fa:\"\\f17e\"}.fa-joget{--fa:\"\\f3b7\"}.fa-fedora{--fa:\"\\f798\"}.fa-stripe-s{--fa:\"\\f42a\"}.fa-meta{--fa:\"\\e49b\"}.fa-laravel{--fa:\"\\f3bd\"}.fa-hotjar{--fa:\"\\f3b1\"}.fa-bluetooth-b{--fa:\"\\f294\"}.fa-square-letterboxd{--fa:\"\\e62e\"}.fa-sticker-mule{--fa:\"\\f3f7\"}.fa-creative-commons-zero{--fa:\"\\f4f3\"}.fa-hips{--fa:\"\\f452\"}.fa-css{--fa:\"\\e6a2\"}.fa-behance{--fa:\"\\f1b4\"}.fa-reddit{--fa:\"\\f1a1\"}.fa-discord{--fa:\"\\f392\"}.fa-chrome{--fa:\"\\f268\"}.fa-app-store-ios{--fa:\"\\f370\"}.fa-cc-discover{--fa:\"\\f1f2\"}.fa-wpbeginner{--fa:\"\\f297\"}.fa-confluence{--fa:\"\\f78d\"}.fa-shoelace{--fa:\"\\e60c\"}.fa-mdb{--fa:\"\\f8ca\"}.fa-dochub{--fa:\"\\f394\"}.fa-accessible-icon{--fa:\"\\f368\"}.fa-ebay{--fa:\"\\f4f4\"}.fa-amazon{--fa:\"\\f270\"}.fa-unsplash{--fa:\"\\e07c\"}.fa-yarn{--fa:\"\\f7e3\"}.fa-square-steam,.fa-steam-square{--fa:\"\\f1b7\"}.fa-500px{--fa:\"\\f26e\"}.fa-square-vimeo,.fa-vimeo-square{--fa:\"\\f194\"}.fa-asymmetrik{--fa:\"\\f372\"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:\"\\f2b4\"}.fa-gratipay{--fa:\"\\f184\"}.fa-apple{--fa:\"\\f179\"}.fa-hive{--fa:\"\\e07f\"}.fa-gitkraken{--fa:\"\\f3a6\"}.fa-keybase{--fa:\"\\f4f5\"}.fa-apple-pay{--fa:\"\\f415\"}.fa-padlet{--fa:\"\\e4a0\"}.fa-amazon-pay{--fa:\"\\f42c\"}.fa-github-square,.fa-square-github{--fa:\"\\f092\"}.fa-stumbleupon{--fa:\"\\f1a4\"}.fa-fedex{--fa:\"\\f797\"}.fa-phoenix-framework{--fa:\"\\f3dc\"}.fa-shopify{--fa:\"\\e057\"}.fa-neos{--fa:\"\\f612\"}.fa-square-threads{--fa:\"\\e619\"}.fa-hackerrank{--fa:\"\\f5f7\"}.fa-researchgate{--fa:\"\\f4f8\"}.fa-swift{--fa:\"\\f8e1\"}.fa-angular{--fa:\"\\f420\"}.fa-speakap{--fa:\"\\f3f3\"}.fa-angrycreative{--fa:\"\\f36e\"}.fa-y-combinator{--fa:\"\\f23b\"}.fa-empire{--fa:\"\\f1d1\"}.fa-envira{--fa:\"\\f299\"}.fa-google-scholar{--fa:\"\\e63b\"}.fa-gitlab-square,.fa-square-gitlab{--fa:\"\\e5ae\"}.fa-studiovinari{--fa:\"\\f3f8\"}.fa-pied-piper{--fa:\"\\f2ae\"}.fa-wordpress{--fa:\"\\f19a\"}.fa-product-hunt{--fa:\"\\f288\"}.fa-firefox{--fa:\"\\f269\"}.fa-linode{--fa:\"\\f2b8\"}.fa-goodreads{--fa:\"\\f3a8\"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:\"\\f264\"}.fa-jsfiddle{--fa:\"\\f1cc\"}.fa-sith{--fa:\"\\f512\"}.fa-themeisle{--fa:\"\\f2b2\"}.fa-page4{--fa:\"\\f3d7\"}.fa-hashnode{--fa:\"\\e499\"}.fa-react{--fa:\"\\f41b\"}.fa-cc-paypal{--fa:\"\\f1f4\"}.fa-squarespace{--fa:\"\\f5be\"}.fa-cc-stripe{--fa:\"\\f1f5\"}.fa-creative-commons-share{--fa:\"\\f4f2\"}.fa-bitcoin{--fa:\"\\f379\"}.fa-keycdn{--fa:\"\\f3ba\"}.fa-opera{--fa:\"\\f26a\"}.fa-itch-io{--fa:\"\\f83a\"}.fa-umbraco{--fa:\"\\f8e8\"}.fa-galactic-senate{--fa:\"\\f50d\"}.fa-ubuntu{--fa:\"\\f7df\"}.fa-draft2digital{--fa:\"\\f396\"}.fa-stripe{--fa:\"\\f429\"}.fa-houzz{--fa:\"\\f27c\"}.fa-gg{--fa:\"\\f260\"}.fa-dhl{--fa:\"\\f790\"}.fa-pinterest-square,.fa-square-pinterest{--fa:\"\\f0d3\"}.fa-xing{--fa:\"\\f168\"}.fa-blackberry{--fa:\"\\f37b\"}.fa-creative-commons-pd{--fa:\"\\f4ec\"}.fa-playstation{--fa:\"\\f3df\"}.fa-quinscape{--fa:\"\\f459\"}.fa-less{--fa:\"\\f41d\"}.fa-blogger-b{--fa:\"\\f37d\"}.fa-opencart{--fa:\"\\f23d\"}.fa-vine{--fa:\"\\f1ca\"}.fa-signal-messenger{--fa:\"\\e663\"}.fa-paypal{--fa:\"\\f1ed\"}.fa-gitlab{--fa:\"\\f296\"}.fa-typo3{--fa:\"\\f42b\"}.fa-reddit-alien{--fa:\"\\f281\"}.fa-yahoo{--fa:\"\\f19e\"}.fa-dailymotion{--fa:\"\\e052\"}.fa-affiliatetheme{--fa:\"\\f36b\"}.fa-pied-piper-pp{--fa:\"\\f1a7\"}.fa-bootstrap{--fa:\"\\f836\"}.fa-odnoklassniki{--fa:\"\\f263\"}.fa-nfc-symbol{--fa:\"\\e531\"}.fa-mintbit{--fa:\"\\e62f\"}.fa-ethereum{--fa:\"\\f42e\"}.fa-speaker-deck{--fa:\"\\f83c\"}.fa-creative-commons-nc-eu{--fa:\"\\f4e9\"}.fa-patreon{--fa:\"\\f3d9\"}.fa-avianex{--fa:\"\\f374\"}.fa-ello{--fa:\"\\f5f1\"}.fa-gofore{--fa:\"\\f3a7\"}.fa-bimobject{--fa:\"\\f378\"}.fa-brave-reverse{--fa:\"\\e63d\"}.fa-facebook-f{--fa:\"\\f39e\"}.fa-google-plus-square,.fa-square-google-plus{--fa:\"\\f0d4\"}.fa-web-awesome{--fa:\"\\e682\"}.fa-mandalorian{--fa:\"\\f50f\"}.fa-first-order-alt{--fa:\"\\f50a\"}.fa-osi{--fa:\"\\f41a\"}.fa-google-wallet{--fa:\"\\f1ee\"}.fa-d-and-d-beyond{--fa:\"\\f6ca\"}.fa-periscope{--fa:\"\\f3da\"}.fa-fulcrum{--fa:\"\\f50b\"}.fa-cloudscale{--fa:\"\\f383\"}.fa-forumbee{--fa:\"\\f211\"}.fa-mizuni{--fa:\"\\f3cc\"}.fa-schlix{--fa:\"\\f3ea\"}.fa-square-xing,.fa-xing-square{--fa:\"\\f169\"}.fa-bandcamp{--fa:\"\\f2d5\"}.fa-wpforms{--fa:\"\\f298\"}.fa-cloudversify{--fa:\"\\f385\"}.fa-usps{--fa:\"\\f7e1\"}.fa-megaport{--fa:\"\\f5a3\"}.fa-magento{--fa:\"\\f3c4\"}.fa-spotify{--fa:\"\\f1bc\"}.fa-optin-monster{--fa:\"\\f23c\"}.fa-fly{--fa:\"\\f417\"}.fa-square-bluesky{--fa:\"\\e6a3\"}.fa-aviato{--fa:\"\\f421\"}.fa-itunes{--fa:\"\\f3b4\"}.fa-cuttlefish{--fa:\"\\f38c\"}.fa-blogger{--fa:\"\\f37c\"}.fa-flickr{--fa:\"\\f16e\"}.fa-viber{--fa:\"\\f409\"}.fa-soundcloud{--fa:\"\\f1be\"}.fa-digg{--fa:\"\\f1a6\"}.fa-tencent-weibo{--fa:\"\\f1d5\"}.fa-letterboxd{--fa:\"\\e62d\"}.fa-symfony{--fa:\"\\f83d\"}.fa-maxcdn{--fa:\"\\f136\"}.fa-etsy{--fa:\"\\f2d7\"}.fa-facebook-messenger{--fa:\"\\f39f\"}.fa-audible{--fa:\"\\f373\"}.fa-think-peaks{--fa:\"\\f731\"}.fa-bilibili{--fa:\"\\e3d9\"}.fa-erlang{--fa:\"\\f39d\"}.fa-x-twitter{--fa:\"\\e61b\"}.fa-cotton-bureau{--fa:\"\\f89e\"}.fa-dashcube{--fa:\"\\f210\"}.fa-42-group,.fa-innosoft{--fa:\"\\e080\"}.fa-stack-exchange{--fa:\"\\f18d\"}.fa-elementor{--fa:\"\\f430\"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:\"\\e01e\"}.fa-creative-commons-nd{--fa:\"\\f4eb\"}.fa-palfed{--fa:\"\\f3d8\"}.fa-superpowers{--fa:\"\\f2dd\"}.fa-resolving{--fa:\"\\f3e7\"}.fa-xbox{--fa:\"\\f412\"}.fa-square-web-awesome-stroke{--fa:\"\\e684\"}.fa-searchengin{--fa:\"\\f3eb\"}.fa-tiktok{--fa:\"\\e07b\"}.fa-facebook-square,.fa-square-facebook{--fa:\"\\f082\"}.fa-renren{--fa:\"\\f18b\"}.fa-linux{--fa:\"\\f17c\"}.fa-glide{--fa:\"\\f2a5\"}.fa-linkedin{--fa:\"\\f08c\"}.fa-hubspot{--fa:\"\\f3b2\"}.fa-deploydog{--fa:\"\\f38e\"}.fa-twitch{--fa:\"\\f1e8\"}.fa-flutter{--fa:\"\\e694\"}.fa-ravelry{--fa:\"\\f2d9\"}.fa-mixer{--fa:\"\\e056\"}.fa-lastfm-square,.fa-square-lastfm{--fa:\"\\f203\"}.fa-vimeo{--fa:\"\\f40a\"}.fa-mendeley{--fa:\"\\f7b3\"}.fa-uniregistry{--fa:\"\\f404\"}.fa-figma{--fa:\"\\f799\"}.fa-creative-commons-remix{--fa:\"\\f4ee\"}.fa-cc-amazon-pay{--fa:\"\\f42d\"}.fa-dropbox{--fa:\"\\f16b\"}.fa-instagram{--fa:\"\\f16d\"}.fa-cmplid{--fa:\"\\e360\"}.fa-upwork{--fa:\"\\e641\"}.fa-facebook{--fa:\"\\f09a\"}.fa-gripfire{--fa:\"\\f3ac\"}.fa-jedi-order{--fa:\"\\f50e\"}.fa-uikit{--fa:\"\\f403\"}.fa-fort-awesome-alt{--fa:\"\\f3a3\"}.fa-phabricator{--fa:\"\\f3db\"}.fa-ussunnah{--fa:\"\\f407\"}.fa-earlybirds{--fa:\"\\f39a\"}.fa-trade-federation{--fa:\"\\f513\"}.fa-autoprefixer{--fa:\"\\f41c\"}.fa-whatsapp{--fa:\"\\f232\"}.fa-square-upwork{--fa:\"\\e67c\"}.fa-slideshare{--fa:\"\\f1e7\"}.fa-google-play{--fa:\"\\f3ab\"}.fa-viadeo{--fa:\"\\f2a9\"}.fa-line{--fa:\"\\f3c0\"}.fa-google-drive{--fa:\"\\f3aa\"}.fa-servicestack{--fa:\"\\f3ec\"}.fa-simplybuilt{--fa:\"\\f215\"}.fa-bitbucket{--fa:\"\\f171\"}.fa-imdb{--fa:\"\\f2d8\"}.fa-deezer{--fa:\"\\e077\"}.fa-raspberry-pi{--fa:\"\\f7bb\"}.fa-jira{--fa:\"\\f7b1\"}.fa-docker{--fa:\"\\f395\"}.fa-screenpal{--fa:\"\\e570\"}.fa-bluetooth{--fa:\"\\f293\"}.fa-gitter{--fa:\"\\f426\"}.fa-d-and-d{--fa:\"\\f38d\"}.fa-microblog{--fa:\"\\e01a\"}.fa-cc-diners-club{--fa:\"\\f24c\"}.fa-gg-circle{--fa:\"\\f261\"}.fa-pied-piper-hat{--fa:\"\\f4e5\"}.fa-kickstarter-k{--fa:\"\\f3bc\"}.fa-yandex{--fa:\"\\f413\"}.fa-readme{--fa:\"\\f4d5\"}.fa-html5{--fa:\"\\f13b\"}.fa-sellsy{--fa:\"\\f213\"}.fa-square-web-awesome{--fa:\"\\e683\"}.fa-sass{--fa:\"\\f41e\"}.fa-wirsindhandwerk,.fa-wsh{--fa:\"\\e2d0\"}.fa-buromobelexperte{--fa:\"\\f37f\"}.fa-salesforce{--fa:\"\\f83b\"}.fa-octopus-deploy{--fa:\"\\e082\"}.fa-medapps{--fa:\"\\f3c6\"}.fa-ns8{--fa:\"\\f3d5\"}.fa-pinterest-p{--fa:\"\\f231\"}.fa-apper{--fa:\"\\f371\"}.fa-fort-awesome{--fa:\"\\f286\"}.fa-waze{--fa:\"\\f83f\"}.fa-bluesky{--fa:\"\\e671\"}.fa-cc-jcb{--fa:\"\\f24b\"}.fa-snapchat,.fa-snapchat-ghost{--fa:\"\\f2ab\"}.fa-fantasy-flight-games{--fa:\"\\f6dc\"}.fa-rust{--fa:\"\\e07a\"}.fa-wix{--fa:\"\\f5cf\"}.fa-behance-square,.fa-square-behance{--fa:\"\\f1b5\"}.fa-supple{--fa:\"\\f3f9\"}.fa-webflow{--fa:\"\\e65c\"}.fa-rebel{--fa:\"\\f1d0\"}.fa-css3{--fa:\"\\f13c\"}.fa-staylinked{--fa:\"\\f3f5\"}.fa-kaggle{--fa:\"\\f5fa\"}.fa-space-awesome{--fa:\"\\e5ac\"}.fa-deviantart{--fa:\"\\f1bd\"}.fa-cpanel{--fa:\"\\f388\"}.fa-goodreads-g{--fa:\"\\f3a9\"}.fa-git-square,.fa-square-git{--fa:\"\\f1d2\"}.fa-square-tumblr,.fa-tumblr-square{--fa:\"\\f174\"}.fa-trello{--fa:\"\\f181\"}.fa-creative-commons-nc-jp{--fa:\"\\f4ea\"}.fa-get-pocket{--fa:\"\\f265\"}.fa-perbyte{--fa:\"\\e083\"}.fa-grunt{--fa:\"\\f3ad\"}.fa-weebly{--fa:\"\\f5cc\"}.fa-connectdevelop{--fa:\"\\f20e\"}.fa-leanpub{--fa:\"\\f212\"}.fa-black-tie{--fa:\"\\f27e\"}.fa-themeco{--fa:\"\\f5c6\"}.fa-python{--fa:\"\\f3e2\"}.fa-android{--fa:\"\\f17b\"}.fa-bots{--fa:\"\\e340\"}.fa-free-code-camp{--fa:\"\\f2c5\"}.fa-hornbill{--fa:\"\\f592\"}.fa-js{--fa:\"\\f3b8\"}.fa-ideal{--fa:\"\\e013\"}.fa-git{--fa:\"\\f1d3\"}.fa-dev{--fa:\"\\f6cc\"}.fa-sketch{--fa:\"\\f7c6\"}.fa-yandex-international{--fa:\"\\f414\"}.fa-cc-amex{--fa:\"\\f1f3\"}.fa-uber{--fa:\"\\f402\"}.fa-github{--fa:\"\\f09b\"}.fa-php{--fa:\"\\f457\"}.fa-alipay{--fa:\"\\f642\"}.fa-youtube{--fa:\"\\f167\"}.fa-skyatlas{--fa:\"\\f216\"}.fa-firefox-browser{--fa:\"\\e007\"}.fa-replyd{--fa:\"\\f3e6\"}.fa-suse{--fa:\"\\f7d6\"}.fa-jenkins{--fa:\"\\f3b6\"}.fa-twitter{--fa:\"\\f099\"}.fa-rockrms{--fa:\"\\f3e9\"}.fa-pinterest{--fa:\"\\f0d2\"}.fa-buffer{--fa:\"\\f837\"}.fa-npm{--fa:\"\\f3d4\"}.fa-yammer{--fa:\"\\f840\"}.fa-btc{--fa:\"\\f15a\"}.fa-dribbble{--fa:\"\\f17d\"}.fa-stumbleupon-circle{--fa:\"\\f1a3\"}.fa-internet-explorer{--fa:\"\\f26b\"}.fa-stubber{--fa:\"\\e5c7\"}.fa-telegram,.fa-telegram-plane{--fa:\"\\f2c6\"}.fa-old-republic{--fa:\"\\f510\"}.fa-odysee{--fa:\"\\e5c6\"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:\"\\f40c\"}.fa-node-js{--fa:\"\\f3d3\"}.fa-edge-legacy{--fa:\"\\e078\"}.fa-slack,.fa-slack-hash{--fa:\"\\f198\"}.fa-medrt{--fa:\"\\f3c8\"}.fa-usb{--fa:\"\\f287\"}.fa-tumblr{--fa:\"\\f173\"}.fa-vaadin{--fa:\"\\f408\"}.fa-quora{--fa:\"\\f2c4\"}.fa-square-x-twitter{--fa:\"\\e61a\"}.fa-reacteurope{--fa:\"\\f75d\"}.fa-medium,.fa-medium-m{--fa:\"\\f23a\"}.fa-amilia{--fa:\"\\f36d\"}.fa-mixcloud{--fa:\"\\f289\"}.fa-flipboard{--fa:\"\\f44d\"}.fa-viacoin{--fa:\"\\f237\"}.fa-critical-role{--fa:\"\\f6c9\"}.fa-sitrox{--fa:\"\\e44a\"}.fa-discourse{--fa:\"\\f393\"}.fa-joomla{--fa:\"\\f1aa\"}.fa-mastodon{--fa:\"\\f4f6\"}.fa-airbnb{--fa:\"\\f834\"}.fa-wolf-pack-battalion{--fa:\"\\f514\"}.fa-buy-n-large{--fa:\"\\f8a6\"}.fa-gulp{--fa:\"\\f3ae\"}.fa-creative-commons-sampling-plus{--fa:\"\\f4f1\"}.fa-strava{--fa:\"\\f428\"}.fa-ember{--fa:\"\\f423\"}.fa-canadian-maple-leaf{--fa:\"\\f785\"}.fa-teamspeak{--fa:\"\\f4f9\"}.fa-pushed{--fa:\"\\f3e1\"}.fa-wordpress-simple{--fa:\"\\f411\"}.fa-nutritionix{--fa:\"\\f3d6\"}.fa-wodu{--fa:\"\\e088\"}.fa-google-pay{--fa:\"\\e079\"}.fa-intercom{--fa:\"\\f7af\"}.fa-zhihu{--fa:\"\\f63f\"}.fa-korvue{--fa:\"\\f42f\"}.fa-pix{--fa:\"\\e43a\"}.fa-steam-symbol{--fa:\"\\f3f6\"}:host,:root{--fa-font-regular:normal 400 1em/1 \"Font Awesome 6 Free\"}@font-face{font-family:\"Font Awesome 6 Free\";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format(\"woff2\"),url(../webfonts/fa-regular-400.ttf) format(\"truetype\")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:\"Font Awesome 6 Free\";--fa-font-solid:normal 900 1em/1 \"Font Awesome 6 Free\"}@font-face{font-family:\"Font Awesome 6 Free\";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format(\"woff2\"),url(../webfonts/fa-solid-900.ttf) format(\"truetype\")}.fa-solid,.fas{font-weight:900}@font-face{font-family:\"Font Awesome 5 Brands\";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format(\"woff2\"),url(../webfonts/fa-brands-400.ttf) format(\"truetype\")}@font-face{font-family:\"Font Awesome 5 Free\";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format(\"woff2\"),url(../webfonts/fa-solid-900.ttf) format(\"truetype\")}@font-face{font-family:\"Font Awesome 5 Free\";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format(\"woff2\"),url(../webfonts/fa-regular-400.ttf) format(\"truetype\")}@font-face{font-family:\"FontAwesome\";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format(\"woff2\"),url(../webfonts/fa-solid-900.ttf) format(\"truetype\")}@font-face{font-family:\"FontAwesome\";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format(\"woff2\"),url(../webfonts/fa-brands-400.ttf) format(\"truetype\")}@font-face{font-family:\"FontAwesome\";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format(\"woff2\"),url(../webfonts/fa-regular-400.ttf) format(\"truetype\");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:\"FontAwesome\";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format(\"woff2\"),url(../webfonts/fa-v4compatibility.ttf) format(\"truetype\");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}.button{display:flex;height:50px;padding:0;background:#3e7671;border:none;outline:none;border-radius:5px;overflow:hidden;font-size:16px;font-weight:500;cursor:pointer;min-width:220px;max-width:220px}.button:hover{background:#008168}.button:active{background:#3e7671}.button-text{display:block;margin:auto;padding:0 10px;color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:50%;text-transform:capitalize}.button-icon{margin:auto;padding:10px;font-size:20px;color:#ffffff}.button-profile{margin:auto}.button-profile svg{display:flex;margin-left:4px;background-color:#fff;border-radius:4px}.profile-image{display:flex;margin-left:4px;width:40px;height:40px;border-radius:4px;background-color:#fff}.button-text-full-width{width:auto!important}.button-link{text-decoration:none!important}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:180px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;border-radius:5px;text-align:left!important}.dropdown-content-link a{color:#71797E;padding:16px 20px;text-decoration:none;display:block;cursor:pointer;font-size:1rem!important}.dropdown-content-link a:hover{background-color:#f1f1f1;color:#000;opacity:0.7}.dropdown:hover .dropdown-content{display:block}.modal{display:none;position:fixed;z-index:1;padding-top:100px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4);text-align:center}.modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:40%}.modal-body{max-height:50vh;overflow-y:auto}.close{color:#aaaaaa;float:right;font-size:28px;font-weight:bold}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.modal-app{background-color:#c3e9bc;padding:15px;margin:10px;border-radius:5px}.external-app-link{text-decoration:none;color:#000}.gray-text{color:#606060}.green-text{color:#3e7671}#countdown{position:relative;margin:auto;margin-top:30px;height:40px;width:40px;text-align:center}#countdown-number{color:#2e2e2e;display:inline-block;line-height:40px}#countdown svg{position:absolute;top:0;right:0;width:40px;height:40px;transform:rotateY(-180deg) rotateZ(-90deg)}#countdown svg circle{stroke-dasharray:113px;stroke-dashoffset:0px;stroke-linecap:round;stroke-width:4px;stroke:#008168;fill:none;animation:countdown 6s linear infinite forwards}@keyframes countdown{from{stroke-dashoffset:0px}to{stroke-dashoffset:113px}}.lds-ring{color:#fff}.lds-ring{display:flex;justify-content:center;align-items:center;margin:auto;position:relative}.lds-ring div{box-sizing:border-box;display:block;position:absolute;width:25px;height:25px;margin:3px;border:2px solid currentColor;border-radius:50%;animation:lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;border-color:currentColor transparent transparent transparent}.lds-ring div:nth-child(1){animation-delay:-0.45s}.lds-ring div:nth-child(2){animation-delay:-0.3s}.lds-ring div:nth-child(3){animation-delay:-0.15s}@keyframes lds-ring{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.dropdown-content .dropdown-user-profile{padding:12px 10px 8px 18px;border-bottom:1px solid #aaaaaa}.dropdown-content .dropdown-user-profile .username{font-size:16px;color:#2e2e2e;text-transform:capitalize}.dropdown-content .dropdown-user-profile .first-last-name{font-size:13px;color:#606060}.menu-bar-icons{color:#008168;display:inline-block;margin-right:8px;font-size:18px}.other-links-list{padding:14px;background-color:#f1f1f1;margin-bottom:8px;text-align:start;border-radius:5px}.tab-list{margin:0px 40px;padding:0;list-style:none;display:flex;position:relative;width:85%;border-bottom:1px solid #aaa}.tab-item{flex:1;text-align:center;transition:.3s;opacity:0.5}.tab-toggle{display:none}.tab-content{display:none}.tab-toggle:nth-child(1):checked~.tab-list .tab-item:nth-child(1),.tab-toggle:nth-child(2):checked~.tab-list .tab-item:nth-child(2){opacity:1;color:#008168;border-bottom:2px solid #008168}.tab-toggle:nth-child(2):checked~.tab-list::before{transform:translateX(100%)}.tab-toggle:nth-child(3):checked~.tab-list::before{transform:translateX(200%)}.tab-toggle:nth-child(1):checked~.tab-container .tab-content:nth-child(1),.tab-toggle:nth-child(2):checked~.tab-container .tab-content:nth-child(2){display:block}.tab-trigger{display:block;padding:10px 0}.tab-container{padding:15px 30px}.grid-view-menu{display:grid;gap:4px;grid-template-columns:repeat(3, 1fr);align-content:start;padding:8px;max-height:230px;overflow-y:auto}.grid-view-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:75px;height:70px;padding:6px;text-decoration:none;font-size:13px;color:#128f8b;text-align:center;transition:transform 0.2s ease, background-color 0.1s ease;position:relative;z-index:1;border-radius:3px;cursor:pointer}.grid-view-link:hover{background-color:#eeeeee;transform:scale(1.1);z-index:5}.grid-view-link-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#71797e;width:100%}.grid-view-link:hover .grid-view-link-text{white-space:pre-wrap;overflow:visible;text-overflow:unset}.grid-view-link i{transition:transform 0.2s ease}.grid-view-link:hover i{transform:scale(1.1)}hr.solid{border-top:1px solid #bbb;margin:2px 0}.restricted-overlay{position:fixed;inset:0;background:linear-gradient(135deg, #0f3d3e, #128f8b);display:flex;justify-content:center;align-items:center;padding:20px;z-index:9999999;font-family:\"Segoe UI\", sans-serif}.restricted-card{background:#ffffff;border-radius:10px;padding:50px;max-width:540px;width:100%;text-align:center;box-shadow:0 25px 70px rgba(0, 0, 0, 0.25);animation:fadeInUp 0.3s ease}.restricted-icon{font-size:48px;color:#128f8b;margin-bottom:30px}.restricted-card h2{margin-bottom:10px;color:#128f8b}.restricted-message{color:#555;font-size:16px;margin-bottom:30px;line-height:1.5}.restricted-links h4{margin-bottom:20px;color:#128f8b}.link-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(120px, 1fr));gap:20px;margin-bottom:25px}.restricted-link{background:#ecf2f2;padding:10px;border-radius:10px;text-decoration:none;color:#128f8b;font-size:13px;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all 0.2s ease}.restricted-link:hover{background:#128f8b;color:#fff}.restricted-actions{display:flex;justify-content:center;gap:15px}.btn-primary{background:#128f8b;color:#fff;padding:10px 20px;border-radius:8px;text-decoration:none;font-weight:500;transition:0.2s}.btn-primary:hover{background:#0f6e6b}.btn-secondary{background:transparent;border:2px solid #128f8b;color:#128f8b;padding:8px 18px;border-radius:8px;cursor:pointer;transition:0.2s}.btn-danger{background:transparent;border:2px solid #dc3545;color:#dc3545;padding:8px 18px;border-radius:8px;cursor:pointer;transition:0.2s}.btn-secondary:hover{background:#128f8b;color:#fff}@keyframes fadeInUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}";
|
|
4003
|
-
const DashButtonStyle0 = dashButtonCss;
|
|
4061
|
+
const dashButtonCss = () => `.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-regular,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-brands:before,.fa-regular:before,.fa-solid:before,.fa:before,.fab:before,.far:before,.fas:before{content:var(--fa)}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0{--fa:"\\30"}.fa-1{--fa:"\\31"}.fa-2{--fa:"\\32"}.fa-3{--fa:"\\33"}.fa-4{--fa:"\\34"}.fa-5{--fa:"\\35"}.fa-6{--fa:"\\36"}.fa-7{--fa:"\\37"}.fa-8{--fa:"\\38"}.fa-9{--fa:"\\39"}.fa-fill-drip{--fa:"\\f576"}.fa-arrows-to-circle{--fa:"\\e4bd"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:"\\f138"}.fa-at{--fa:"\\40"}.fa-trash-alt,.fa-trash-can{--fa:"\\f2ed"}.fa-text-height{--fa:"\\f034"}.fa-user-times,.fa-user-xmark{--fa:"\\f235"}.fa-stethoscope{--fa:"\\f0f1"}.fa-comment-alt,.fa-message{--fa:"\\f27a"}.fa-info{--fa:"\\f129"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:"\\f422"}.fa-explosion{--fa:"\\e4e9"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:"\\f15c"}.fa-wave-square{--fa:"\\f83e"}.fa-ring{--fa:"\\f70b"}.fa-building-un{--fa:"\\e4d9"}.fa-dice-three{--fa:"\\f527"}.fa-calendar-alt,.fa-calendar-days{--fa:"\\f073"}.fa-anchor-circle-check{--fa:"\\e4aa"}.fa-building-circle-arrow-right{--fa:"\\e4d1"}.fa-volleyball,.fa-volleyball-ball{--fa:"\\f45f"}.fa-arrows-up-to-line{--fa:"\\e4c2"}.fa-sort-desc,.fa-sort-down{--fa:"\\f0dd"}.fa-circle-minus,.fa-minus-circle{--fa:"\\f056"}.fa-door-open{--fa:"\\f52b"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:"\\f2f5"}.fa-atom{--fa:"\\f5d2"}.fa-soap{--fa:"\\e06e"}.fa-heart-music-camera-bolt,.fa-icons{--fa:"\\f86d"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:"\\f539"}.fa-bridge-circle-check{--fa:"\\e4c9"}.fa-pump-medical{--fa:"\\e06a"}.fa-fingerprint{--fa:"\\f577"}.fa-hand-point-right{--fa:"\\f0a4"}.fa-magnifying-glass-location,.fa-search-location{--fa:"\\f689"}.fa-forward-step,.fa-step-forward{--fa:"\\f051"}.fa-face-smile-beam,.fa-smile-beam{--fa:"\\f5b8"}.fa-flag-checkered{--fa:"\\f11e"}.fa-football,.fa-football-ball{--fa:"\\f44e"}.fa-school-circle-exclamation{--fa:"\\e56c"}.fa-crop{--fa:"\\f125"}.fa-angle-double-down,.fa-angles-down{--fa:"\\f103"}.fa-users-rectangle{--fa:"\\e594"}.fa-people-roof{--fa:"\\e537"}.fa-people-line{--fa:"\\e534"}.fa-beer,.fa-beer-mug-empty{--fa:"\\f0fc"}.fa-diagram-predecessor{--fa:"\\e477"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:"\\f176"}.fa-burn,.fa-fire-flame-simple{--fa:"\\f46a"}.fa-male,.fa-person{--fa:"\\f183"}.fa-laptop{--fa:"\\f109"}.fa-file-csv{--fa:"\\f6dd"}.fa-menorah{--fa:"\\f676"}.fa-truck-plane{--fa:"\\e58f"}.fa-record-vinyl{--fa:"\\f8d9"}.fa-face-grin-stars,.fa-grin-stars{--fa:"\\f587"}.fa-bong{--fa:"\\f55c"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:"\\f67b"}.fa-arrow-down-up-across-line{--fa:"\\e4af"}.fa-spoon,.fa-utensil-spoon{--fa:"\\f2e5"}.fa-jar-wheat{--fa:"\\e517"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:"\\f674"}.fa-file-circle-exclamation{--fa:"\\e4eb"}.fa-circle-h,.fa-hospital-symbol{--fa:"\\f47e"}.fa-pager{--fa:"\\f815"}.fa-address-book,.fa-contact-book{--fa:"\\f2b9"}.fa-strikethrough{--fa:"\\f0cc"}.fa-k{--fa:"\\4b"}.fa-landmark-flag{--fa:"\\e51c"}.fa-pencil,.fa-pencil-alt{--fa:"\\f303"}.fa-backward{--fa:"\\f04a"}.fa-caret-right{--fa:"\\f0da"}.fa-comments{--fa:"\\f086"}.fa-file-clipboard,.fa-paste{--fa:"\\f0ea"}.fa-code-pull-request{--fa:"\\e13c"}.fa-clipboard-list{--fa:"\\f46d"}.fa-truck-loading,.fa-truck-ramp-box{--fa:"\\f4de"}.fa-user-check{--fa:"\\f4fc"}.fa-vial-virus{--fa:"\\e597"}.fa-sheet-plastic{--fa:"\\e571"}.fa-blog{--fa:"\\f781"}.fa-user-ninja{--fa:"\\f504"}.fa-person-arrow-up-from-line{--fa:"\\e539"}.fa-scroll-torah,.fa-torah{--fa:"\\f6a0"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:"\\f458"}.fa-toggle-off{--fa:"\\f204"}.fa-archive,.fa-box-archive{--fa:"\\f187"}.fa-person-drowning{--fa:"\\e545"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:"\\f886"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:"\\f58a"}.fa-spray-can{--fa:"\\f5bd"}.fa-truck-monster{--fa:"\\f63b"}.fa-w{--fa:"\\57"}.fa-earth-africa,.fa-globe-africa{--fa:"\\f57c"}.fa-rainbow{--fa:"\\f75b"}.fa-circle-notch{--fa:"\\f1ce"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:"\\f3fa"}.fa-paw{--fa:"\\f1b0"}.fa-cloud{--fa:"\\f0c2"}.fa-trowel-bricks{--fa:"\\e58a"}.fa-face-flushed,.fa-flushed{--fa:"\\f579"}.fa-hospital-user{--fa:"\\f80d"}.fa-tent-arrow-left-right{--fa:"\\e57f"}.fa-gavel,.fa-legal{--fa:"\\f0e3"}.fa-binoculars{--fa:"\\f1e5"}.fa-microphone-slash{--fa:"\\f131"}.fa-box-tissue{--fa:"\\e05b"}.fa-motorcycle{--fa:"\\f21c"}.fa-bell-concierge,.fa-concierge-bell{--fa:"\\f562"}.fa-pen-ruler,.fa-pencil-ruler{--fa:"\\f5ae"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:"\\e068"}.fa-mars-and-venus-burst{--fa:"\\e523"}.fa-caret-square-right,.fa-square-caret-right{--fa:"\\f152"}.fa-cut,.fa-scissors{--fa:"\\f0c4"}.fa-sun-plant-wilt{--fa:"\\e57a"}.fa-toilets-portable{--fa:"\\e584"}.fa-hockey-puck{--fa:"\\f453"}.fa-table{--fa:"\\f0ce"}.fa-magnifying-glass-arrow-right{--fa:"\\e521"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:"\\f566"}.fa-users-slash{--fa:"\\e073"}.fa-clover{--fa:"\\e139"}.fa-mail-reply,.fa-reply{--fa:"\\f3e5"}.fa-star-and-crescent{--fa:"\\f699"}.fa-house-fire{--fa:"\\e50c"}.fa-minus-square,.fa-square-minus{--fa:"\\f146"}.fa-helicopter{--fa:"\\f533"}.fa-compass{--fa:"\\f14e"}.fa-caret-square-down,.fa-square-caret-down{--fa:"\\f150"}.fa-file-circle-question{--fa:"\\e4ef"}.fa-laptop-code{--fa:"\\f5fc"}.fa-swatchbook{--fa:"\\f5c3"}.fa-prescription-bottle{--fa:"\\f485"}.fa-bars,.fa-navicon{--fa:"\\f0c9"}.fa-people-group{--fa:"\\e533"}.fa-hourglass-3,.fa-hourglass-end{--fa:"\\f253"}.fa-heart-broken,.fa-heart-crack{--fa:"\\f7a9"}.fa-external-link-square-alt,.fa-square-up-right{--fa:"\\f360"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:"\\f597"}.fa-film{--fa:"\\f008"}.fa-ruler-horizontal{--fa:"\\f547"}.fa-people-robbery{--fa:"\\e536"}.fa-lightbulb{--fa:"\\f0eb"}.fa-caret-left{--fa:"\\f0d9"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:"\\f06a"}.fa-school-circle-xmark{--fa:"\\e56d"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:"\\f08b"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:"\\f13a"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:"\\f13e"}.fa-cloud-showers-heavy{--fa:"\\f740"}.fa-headphones-alt,.fa-headphones-simple{--fa:"\\f58f"}.fa-sitemap{--fa:"\\f0e8"}.fa-circle-dollar-to-slot,.fa-donate{--fa:"\\f4b9"}.fa-memory{--fa:"\\f538"}.fa-road-spikes{--fa:"\\e568"}.fa-fire-burner{--fa:"\\e4f1"}.fa-flag{--fa:"\\f024"}.fa-hanukiah{--fa:"\\f6e6"}.fa-feather{--fa:"\\f52d"}.fa-volume-down,.fa-volume-low{--fa:"\\f027"}.fa-comment-slash{--fa:"\\f4b3"}.fa-cloud-sun-rain{--fa:"\\f743"}.fa-compress{--fa:"\\f066"}.fa-wheat-alt,.fa-wheat-awn{--fa:"\\e2cd"}.fa-ankh{--fa:"\\f644"}.fa-hands-holding-child{--fa:"\\e4fa"}.fa-asterisk{--fa:"\\2a"}.fa-check-square,.fa-square-check{--fa:"\\f14a"}.fa-peseta-sign{--fa:"\\e221"}.fa-header,.fa-heading{--fa:"\\f1dc"}.fa-ghost{--fa:"\\f6e2"}.fa-list,.fa-list-squares{--fa:"\\f03a"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:"\\f87b"}.fa-cart-plus{--fa:"\\f217"}.fa-gamepad{--fa:"\\f11b"}.fa-circle-dot,.fa-dot-circle{--fa:"\\f192"}.fa-dizzy,.fa-face-dizzy{--fa:"\\f567"}.fa-egg{--fa:"\\f7fb"}.fa-house-medical-circle-xmark{--fa:"\\e513"}.fa-campground{--fa:"\\f6bb"}.fa-folder-plus{--fa:"\\f65e"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:"\\f1e3"}.fa-paint-brush,.fa-paintbrush{--fa:"\\f1fc"}.fa-lock{--fa:"\\f023"}.fa-gas-pump{--fa:"\\f52f"}.fa-hot-tub,.fa-hot-tub-person{--fa:"\\f593"}.fa-map-location,.fa-map-marked{--fa:"\\f59f"}.fa-house-flood-water{--fa:"\\e50e"}.fa-tree{--fa:"\\f1bb"}.fa-bridge-lock{--fa:"\\e4cc"}.fa-sack-dollar{--fa:"\\f81d"}.fa-edit,.fa-pen-to-square{--fa:"\\f044"}.fa-car-side{--fa:"\\f5e4"}.fa-share-alt,.fa-share-nodes{--fa:"\\f1e0"}.fa-heart-circle-minus{--fa:"\\e4ff"}.fa-hourglass-2,.fa-hourglass-half{--fa:"\\f252"}.fa-microscope{--fa:"\\f610"}.fa-sink{--fa:"\\e06d"}.fa-bag-shopping,.fa-shopping-bag{--fa:"\\f290"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:"\\f881"}.fa-mitten{--fa:"\\f7b5"}.fa-person-rays{--fa:"\\e54d"}.fa-users{--fa:"\\f0c0"}.fa-eye-slash{--fa:"\\f070"}.fa-flask-vial{--fa:"\\e4f3"}.fa-hand,.fa-hand-paper{--fa:"\\f256"}.fa-om{--fa:"\\f679"}.fa-worm{--fa:"\\e599"}.fa-house-circle-xmark{--fa:"\\e50b"}.fa-plug{--fa:"\\f1e6"}.fa-chevron-up{--fa:"\\f077"}.fa-hand-spock{--fa:"\\f259"}.fa-stopwatch{--fa:"\\f2f2"}.fa-face-kiss,.fa-kiss{--fa:"\\f596"}.fa-bridge-circle-xmark{--fa:"\\e4cb"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:"\\f589"}.fa-chess-bishop{--fa:"\\f43a"}.fa-face-grin-wink,.fa-grin-wink{--fa:"\\f58c"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:"\\f2a4"}.fa-road-circle-check{--fa:"\\e564"}.fa-dice-five{--fa:"\\f523"}.fa-rss-square,.fa-square-rss{--fa:"\\f143"}.fa-land-mine-on{--fa:"\\e51b"}.fa-i-cursor{--fa:"\\f246"}.fa-stamp{--fa:"\\f5bf"}.fa-stairs{--fa:"\\e289"}.fa-i{--fa:"\\49"}.fa-hryvnia,.fa-hryvnia-sign{--fa:"\\f6f2"}.fa-pills{--fa:"\\f484"}.fa-face-grin-wide,.fa-grin-alt{--fa:"\\f581"}.fa-tooth{--fa:"\\f5c9"}.fa-v{--fa:"\\56"}.fa-bangladeshi-taka-sign{--fa:"\\e2e6"}.fa-bicycle{--fa:"\\f206"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:"\\e579"}.fa-head-side-cough-slash{--fa:"\\e062"}.fa-ambulance,.fa-truck-medical{--fa:"\\f0f9"}.fa-wheat-awn-circle-exclamation{--fa:"\\e598"}.fa-snowman{--fa:"\\f7d0"}.fa-mortar-pestle{--fa:"\\f5a7"}.fa-road-barrier{--fa:"\\e562"}.fa-school{--fa:"\\f549"}.fa-igloo{--fa:"\\f7ae"}.fa-joint{--fa:"\\f595"}.fa-angle-right{--fa:"\\f105"}.fa-horse{--fa:"\\f6f0"}.fa-q{--fa:"\\51"}.fa-g{--fa:"\\47"}.fa-notes-medical{--fa:"\\f481"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:"\\f2c9"}.fa-dong-sign{--fa:"\\e169"}.fa-capsules{--fa:"\\f46b"}.fa-poo-bolt,.fa-poo-storm{--fa:"\\f75a"}.fa-face-frown-open,.fa-frown-open{--fa:"\\f57a"}.fa-hand-point-up{--fa:"\\f0a6"}.fa-money-bill{--fa:"\\f0d6"}.fa-bookmark{--fa:"\\f02e"}.fa-align-justify{--fa:"\\f039"}.fa-umbrella-beach{--fa:"\\f5ca"}.fa-helmet-un{--fa:"\\e503"}.fa-bullseye{--fa:"\\f140"}.fa-bacon{--fa:"\\f7e5"}.fa-hand-point-down{--fa:"\\f0a7"}.fa-arrow-up-from-bracket{--fa:"\\e09a"}.fa-folder,.fa-folder-blank{--fa:"\\f07b"}.fa-file-medical-alt,.fa-file-waveform{--fa:"\\f478"}.fa-radiation{--fa:"\\f7b9"}.fa-chart-simple{--fa:"\\e473"}.fa-mars-stroke{--fa:"\\f229"}.fa-vial{--fa:"\\f492"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:"\\f624"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:"\\e2ca"}.fa-e{--fa:"\\45"}.fa-pen-alt,.fa-pen-clip{--fa:"\\f305"}.fa-bridge-circle-exclamation{--fa:"\\e4ca"}.fa-user{--fa:"\\f007"}.fa-school-circle-check{--fa:"\\e56b"}.fa-dumpster{--fa:"\\f793"}.fa-shuttle-van,.fa-van-shuttle{--fa:"\\f5b6"}.fa-building-user{--fa:"\\e4da"}.fa-caret-square-left,.fa-square-caret-left{--fa:"\\f191"}.fa-highlighter{--fa:"\\f591"}.fa-key{--fa:"\\f084"}.fa-bullhorn{--fa:"\\f0a1"}.fa-globe{--fa:"\\f0ac"}.fa-synagogue{--fa:"\\f69b"}.fa-person-half-dress{--fa:"\\e548"}.fa-road-bridge{--fa:"\\e563"}.fa-location-arrow{--fa:"\\f124"}.fa-c{--fa:"\\43"}.fa-tablet-button{--fa:"\\f10a"}.fa-building-lock{--fa:"\\e4d6"}.fa-pizza-slice{--fa:"\\f818"}.fa-money-bill-wave{--fa:"\\f53a"}.fa-area-chart,.fa-chart-area{--fa:"\\f1fe"}.fa-house-flag{--fa:"\\e50d"}.fa-person-circle-minus{--fa:"\\e540"}.fa-ban,.fa-cancel{--fa:"\\f05e"}.fa-camera-rotate{--fa:"\\e0d8"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:"\\f5d0"}.fa-star{--fa:"\\f005"}.fa-repeat{--fa:"\\f363"}.fa-cross{--fa:"\\f654"}.fa-box{--fa:"\\f466"}.fa-venus-mars{--fa:"\\f228"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:"\\f245"}.fa-expand-arrows-alt,.fa-maximize{--fa:"\\f31e"}.fa-charging-station{--fa:"\\f5e7"}.fa-shapes,.fa-triangle-circle-square{--fa:"\\f61f"}.fa-random,.fa-shuffle{--fa:"\\f074"}.fa-person-running,.fa-running{--fa:"\\f70c"}.fa-mobile-retro{--fa:"\\e527"}.fa-grip-lines-vertical{--fa:"\\f7a5"}.fa-spider{--fa:"\\f717"}.fa-hands-bound{--fa:"\\e4f9"}.fa-file-invoice-dollar{--fa:"\\f571"}.fa-plane-circle-exclamation{--fa:"\\e556"}.fa-x-ray{--fa:"\\f497"}.fa-spell-check{--fa:"\\f891"}.fa-slash{--fa:"\\f715"}.fa-computer-mouse,.fa-mouse{--fa:"\\f8cc"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:"\\f090"}.fa-shop-slash,.fa-store-alt-slash{--fa:"\\e070"}.fa-server{--fa:"\\f233"}.fa-virus-covid-slash{--fa:"\\e4a9"}.fa-shop-lock{--fa:"\\e4a5"}.fa-hourglass-1,.fa-hourglass-start{--fa:"\\f251"}.fa-blender-phone{--fa:"\\f6b6"}.fa-building-wheat{--fa:"\\e4db"}.fa-person-breastfeeding{--fa:"\\e53a"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:"\\f2f6"}.fa-venus{--fa:"\\f221"}.fa-passport{--fa:"\\f5ab"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:"\\e68f"}.fa-heart-pulse,.fa-heartbeat{--fa:"\\f21e"}.fa-people-carry,.fa-people-carry-box{--fa:"\\f4ce"}.fa-temperature-high{--fa:"\\f769"}.fa-microchip{--fa:"\\f2db"}.fa-crown{--fa:"\\f521"}.fa-weight-hanging{--fa:"\\f5cd"}.fa-xmarks-lines{--fa:"\\e59a"}.fa-file-prescription{--fa:"\\f572"}.fa-weight,.fa-weight-scale{--fa:"\\f496"}.fa-user-friends,.fa-user-group{--fa:"\\f500"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:"\\f15e"}.fa-chess-knight{--fa:"\\f441"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:"\\f59b"}.fa-wheelchair{--fa:"\\f193"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:"\\f0aa"}.fa-toggle-on{--fa:"\\f205"}.fa-person-walking,.fa-walking{--fa:"\\f554"}.fa-l{--fa:"\\4c"}.fa-fire{--fa:"\\f06d"}.fa-bed-pulse,.fa-procedures{--fa:"\\f487"}.fa-shuttle-space,.fa-space-shuttle{--fa:"\\f197"}.fa-face-laugh,.fa-laugh{--fa:"\\f599"}.fa-folder-open{--fa:"\\f07c"}.fa-heart-circle-plus{--fa:"\\e500"}.fa-code-fork{--fa:"\\e13b"}.fa-city{--fa:"\\f64f"}.fa-microphone-alt,.fa-microphone-lines{--fa:"\\f3c9"}.fa-pepper-hot{--fa:"\\f816"}.fa-unlock{--fa:"\\f09c"}.fa-colon-sign{--fa:"\\e140"}.fa-headset{--fa:"\\f590"}.fa-store-slash{--fa:"\\e071"}.fa-road-circle-xmark{--fa:"\\e566"}.fa-user-minus{--fa:"\\f503"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:"\\f22a"}.fa-champagne-glasses,.fa-glass-cheers{--fa:"\\f79f"}.fa-clipboard{--fa:"\\f328"}.fa-house-circle-exclamation{--fa:"\\e50a"}.fa-file-arrow-up,.fa-file-upload{--fa:"\\f574"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:"\\f1eb"}.fa-bath,.fa-bathtub{--fa:"\\f2cd"}.fa-underline{--fa:"\\f0cd"}.fa-user-edit,.fa-user-pen{--fa:"\\f4ff"}.fa-signature{--fa:"\\f5b7"}.fa-stroopwafel{--fa:"\\f551"}.fa-bold{--fa:"\\f032"}.fa-anchor-lock{--fa:"\\e4ad"}.fa-building-ngo{--fa:"\\e4d7"}.fa-manat-sign{--fa:"\\e1d5"}.fa-not-equal{--fa:"\\f53e"}.fa-border-style,.fa-border-top-left{--fa:"\\f853"}.fa-map-location-dot,.fa-map-marked-alt{--fa:"\\f5a0"}.fa-jedi{--fa:"\\f669"}.fa-poll,.fa-square-poll-vertical{--fa:"\\f681"}.fa-mug-hot{--fa:"\\f7b6"}.fa-battery-car,.fa-car-battery{--fa:"\\f5df"}.fa-gift{--fa:"\\f06b"}.fa-dice-two{--fa:"\\f528"}.fa-chess-queen{--fa:"\\f445"}.fa-glasses{--fa:"\\f530"}.fa-chess-board{--fa:"\\f43c"}.fa-building-circle-check{--fa:"\\e4d2"}.fa-person-chalkboard{--fa:"\\e53d"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:"\\f22b"}.fa-hand-back-fist,.fa-hand-rock{--fa:"\\f255"}.fa-caret-square-up,.fa-square-caret-up{--fa:"\\f151"}.fa-cloud-showers-water{--fa:"\\e4e4"}.fa-bar-chart,.fa-chart-bar{--fa:"\\f080"}.fa-hands-bubbles,.fa-hands-wash{--fa:"\\e05e"}.fa-less-than-equal{--fa:"\\f537"}.fa-train{--fa:"\\f238"}.fa-eye-low-vision,.fa-low-vision{--fa:"\\f2a8"}.fa-crow{--fa:"\\f520"}.fa-sailboat{--fa:"\\e445"}.fa-window-restore{--fa:"\\f2d2"}.fa-plus-square,.fa-square-plus{--fa:"\\f0fe"}.fa-torii-gate{--fa:"\\f6a1"}.fa-frog{--fa:"\\f52e"}.fa-bucket{--fa:"\\e4cf"}.fa-image{--fa:"\\f03e"}.fa-microphone{--fa:"\\f130"}.fa-cow{--fa:"\\f6c8"}.fa-caret-up{--fa:"\\f0d8"}.fa-screwdriver{--fa:"\\f54a"}.fa-folder-closed{--fa:"\\e185"}.fa-house-tsunami{--fa:"\\e515"}.fa-square-nfi{--fa:"\\e576"}.fa-arrow-up-from-ground-water{--fa:"\\e4b5"}.fa-glass-martini-alt,.fa-martini-glass{--fa:"\\f57b"}.fa-square-binary{--fa:"\\e69b"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:"\\f2ea"}.fa-columns,.fa-table-columns{--fa:"\\f0db"}.fa-lemon{--fa:"\\f094"}.fa-head-side-mask{--fa:"\\e063"}.fa-handshake{--fa:"\\f2b5"}.fa-gem{--fa:"\\f3a5"}.fa-dolly,.fa-dolly-box{--fa:"\\f472"}.fa-smoking{--fa:"\\f48d"}.fa-compress-arrows-alt,.fa-minimize{--fa:"\\f78c"}.fa-monument{--fa:"\\f5a6"}.fa-snowplow{--fa:"\\f7d2"}.fa-angle-double-right,.fa-angles-right{--fa:"\\f101"}.fa-cannabis{--fa:"\\f55f"}.fa-circle-play,.fa-play-circle{--fa:"\\f144"}.fa-tablets{--fa:"\\f490"}.fa-ethernet{--fa:"\\f796"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:"\\f153"}.fa-chair{--fa:"\\f6c0"}.fa-check-circle,.fa-circle-check{--fa:"\\f058"}.fa-circle-stop,.fa-stop-circle{--fa:"\\f28d"}.fa-compass-drafting,.fa-drafting-compass{--fa:"\\f568"}.fa-plate-wheat{--fa:"\\e55a"}.fa-icicles{--fa:"\\f7ad"}.fa-person-shelter{--fa:"\\e54f"}.fa-neuter{--fa:"\\f22c"}.fa-id-badge{--fa:"\\f2c1"}.fa-marker{--fa:"\\f5a1"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:"\\f59a"}.fa-helicopter-symbol{--fa:"\\e502"}.fa-universal-access{--fa:"\\f29a"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:"\\f139"}.fa-lari-sign{--fa:"\\e1c8"}.fa-volcano{--fa:"\\f770"}.fa-person-walking-dashed-line-arrow-right{--fa:"\\e553"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:"\\f154"}.fa-viruses{--fa:"\\e076"}.fa-square-person-confined{--fa:"\\e577"}.fa-user-tie{--fa:"\\f508"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:"\\f175"}.fa-tent-arrow-down-to-line{--fa:"\\e57e"}.fa-certificate{--fa:"\\f0a3"}.fa-mail-reply-all,.fa-reply-all{--fa:"\\f122"}.fa-suitcase{--fa:"\\f0f2"}.fa-person-skating,.fa-skating{--fa:"\\f7c5"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:"\\f662"}.fa-camera-retro{--fa:"\\f083"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:"\\f0ab"}.fa-arrow-right-to-file,.fa-file-import{--fa:"\\f56f"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:"\\f14c"}.fa-box-open{--fa:"\\f49e"}.fa-scroll{--fa:"\\f70e"}.fa-spa{--fa:"\\f5bb"}.fa-location-pin-lock{--fa:"\\e51f"}.fa-pause{--fa:"\\f04c"}.fa-hill-avalanche{--fa:"\\e507"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:"\\f2cb"}.fa-bomb{--fa:"\\f1e2"}.fa-registered{--fa:"\\f25d"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:"\\f2bb"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:"\\f516"}.fa-subscript{--fa:"\\f12c"}.fa-diamond-turn-right,.fa-directions{--fa:"\\f5eb"}.fa-burst{--fa:"\\e4dc"}.fa-house-laptop,.fa-laptop-house{--fa:"\\e066"}.fa-face-tired,.fa-tired{--fa:"\\f5c8"}.fa-money-bills{--fa:"\\e1f3"}.fa-smog{--fa:"\\f75f"}.fa-crutch{--fa:"\\f7f7"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:"\\f0ee"}.fa-palette{--fa:"\\f53f"}.fa-arrows-turn-right{--fa:"\\e4c0"}.fa-vest{--fa:"\\e085"}.fa-ferry{--fa:"\\e4ea"}.fa-arrows-down-to-people{--fa:"\\e4b9"}.fa-seedling,.fa-sprout{--fa:"\\f4d8"}.fa-arrows-alt-h,.fa-left-right{--fa:"\\f337"}.fa-boxes-packing{--fa:"\\e4c7"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:"\\f0a8"}.fa-group-arrows-rotate{--fa:"\\e4f6"}.fa-bowl-food{--fa:"\\e4c6"}.fa-candy-cane{--fa:"\\f786"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:"\\f160"}.fa-cloud-bolt,.fa-thunderstorm{--fa:"\\f76c"}.fa-remove-format,.fa-text-slash{--fa:"\\f87d"}.fa-face-smile-wink,.fa-smile-wink{--fa:"\\f4da"}.fa-file-word{--fa:"\\f1c2"}.fa-file-powerpoint{--fa:"\\f1c4"}.fa-arrows-h,.fa-arrows-left-right{--fa:"\\f07e"}.fa-house-lock{--fa:"\\e510"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:"\\f0ed"}.fa-children{--fa:"\\e4e1"}.fa-blackboard,.fa-chalkboard{--fa:"\\f51b"}.fa-user-alt-slash,.fa-user-large-slash{--fa:"\\f4fa"}.fa-envelope-open{--fa:"\\f2b6"}.fa-handshake-alt-slash,.fa-handshake-simple-slash{--fa:"\\e05f"}.fa-mattress-pillow{--fa:"\\e525"}.fa-guarani-sign{--fa:"\\e19a"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:"\\f021"}.fa-fire-extinguisher{--fa:"\\f134"}.fa-cruzeiro-sign{--fa:"\\e152"}.fa-greater-than-equal{--fa:"\\f532"}.fa-shield-alt,.fa-shield-halved{--fa:"\\f3ed"}.fa-atlas,.fa-book-atlas{--fa:"\\f558"}.fa-virus{--fa:"\\e074"}.fa-envelope-circle-check{--fa:"\\e4e8"}.fa-layer-group{--fa:"\\f5fd"}.fa-arrows-to-dot{--fa:"\\e4be"}.fa-archway{--fa:"\\f557"}.fa-heart-circle-check{--fa:"\\e4fd"}.fa-house-chimney-crack,.fa-house-damage{--fa:"\\f6f1"}.fa-file-archive,.fa-file-zipper{--fa:"\\f1c6"}.fa-square{--fa:"\\f0c8"}.fa-glass-martini,.fa-martini-glass-empty{--fa:"\\f000"}.fa-couch{--fa:"\\f4b8"}.fa-cedi-sign{--fa:"\\e0df"}.fa-italic{--fa:"\\f033"}.fa-table-cells-column-lock{--fa:"\\e678"}.fa-church{--fa:"\\f51d"}.fa-comments-dollar{--fa:"\\f653"}.fa-democrat{--fa:"\\f747"}.fa-z{--fa:"\\5a"}.fa-person-skiing,.fa-skiing{--fa:"\\f7c9"}.fa-road-lock{--fa:"\\e567"}.fa-a{--fa:"\\41"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:"\\e03f"}.fa-feather-alt,.fa-feather-pointed{--fa:"\\f56b"}.fa-p{--fa:"\\50"}.fa-snowflake{--fa:"\\f2dc"}.fa-newspaper{--fa:"\\f1ea"}.fa-ad,.fa-rectangle-ad{--fa:"\\f641"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:"\\f0a9"}.fa-filter-circle-xmark{--fa:"\\e17b"}.fa-locust{--fa:"\\e520"}.fa-sort,.fa-unsorted{--fa:"\\f0dc"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:"\\f0cb"}.fa-person-dress-burst{--fa:"\\e544"}.fa-money-check-alt,.fa-money-check-dollar{--fa:"\\f53d"}.fa-vector-square{--fa:"\\f5cb"}.fa-bread-slice{--fa:"\\f7ec"}.fa-language{--fa:"\\f1ab"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:"\\f598"}.fa-filter{--fa:"\\f0b0"}.fa-question{--fa:"\\3f"}.fa-file-signature{--fa:"\\f573"}.fa-arrows-alt,.fa-up-down-left-right{--fa:"\\f0b2"}.fa-house-chimney-user{--fa:"\\e065"}.fa-hand-holding-heart{--fa:"\\f4be"}.fa-puzzle-piece{--fa:"\\f12e"}.fa-money-check{--fa:"\\f53c"}.fa-star-half-alt,.fa-star-half-stroke{--fa:"\\f5c0"}.fa-code{--fa:"\\f121"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:"\\f7a0"}.fa-building-circle-exclamation{--fa:"\\e4d3"}.fa-magnifying-glass-chart{--fa:"\\e522"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:"\\f08e"}.fa-cubes-stacked{--fa:"\\e4e6"}.fa-krw,.fa-won,.fa-won-sign{--fa:"\\f159"}.fa-virus-covid{--fa:"\\e4a8"}.fa-austral-sign{--fa:"\\e0a9"}.fa-f{--fa:"\\46"}.fa-leaf{--fa:"\\f06c"}.fa-road{--fa:"\\f018"}.fa-cab,.fa-taxi{--fa:"\\f1ba"}.fa-person-circle-plus{--fa:"\\e541"}.fa-chart-pie,.fa-pie-chart{--fa:"\\f200"}.fa-bolt-lightning{--fa:"\\e0b7"}.fa-sack-xmark{--fa:"\\e56a"}.fa-file-excel{--fa:"\\f1c3"}.fa-file-contract{--fa:"\\f56c"}.fa-fish-fins{--fa:"\\e4f2"}.fa-building-flag{--fa:"\\e4d5"}.fa-face-grin-beam,.fa-grin-beam{--fa:"\\f582"}.fa-object-ungroup{--fa:"\\f248"}.fa-poop{--fa:"\\f619"}.fa-location-pin,.fa-map-marker{--fa:"\\f041"}.fa-kaaba{--fa:"\\f66b"}.fa-toilet-paper{--fa:"\\f71e"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:"\\f807"}.fa-eject{--fa:"\\f052"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:"\\f35a"}.fa-plane-circle-check{--fa:"\\e555"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:"\\f5a5"}.fa-object-group{--fa:"\\f247"}.fa-chart-line,.fa-line-chart{--fa:"\\f201"}.fa-mask-ventilator{--fa:"\\e524"}.fa-arrow-right{--fa:"\\f061"}.fa-map-signs,.fa-signs-post{--fa:"\\f277"}.fa-cash-register{--fa:"\\f788"}.fa-person-circle-question{--fa:"\\e542"}.fa-h{--fa:"\\48"}.fa-tarp{--fa:"\\e57b"}.fa-screwdriver-wrench,.fa-tools{--fa:"\\f7d9"}.fa-arrows-to-eye{--fa:"\\e4bf"}.fa-plug-circle-bolt{--fa:"\\e55b"}.fa-heart{--fa:"\\f004"}.fa-mars-and-venus{--fa:"\\f224"}.fa-home-user,.fa-house-user{--fa:"\\e1b0"}.fa-dumpster-fire{--fa:"\\f794"}.fa-house-crack{--fa:"\\e3b1"}.fa-cocktail,.fa-martini-glass-citrus{--fa:"\\f561"}.fa-face-surprise,.fa-surprise{--fa:"\\f5c2"}.fa-bottle-water{--fa:"\\e4c5"}.fa-circle-pause,.fa-pause-circle{--fa:"\\f28b"}.fa-toilet-paper-slash{--fa:"\\e072"}.fa-apple-alt,.fa-apple-whole{--fa:"\\f5d1"}.fa-kitchen-set{--fa:"\\e51a"}.fa-r{--fa:"\\52"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:"\\f2ca"}.fa-cube{--fa:"\\f1b2"}.fa-bitcoin-sign{--fa:"\\e0b4"}.fa-shield-dog{--fa:"\\e573"}.fa-solar-panel{--fa:"\\f5ba"}.fa-lock-open{--fa:"\\f3c1"}.fa-elevator{--fa:"\\e16d"}.fa-money-bill-transfer{--fa:"\\e528"}.fa-money-bill-trend-up{--fa:"\\e529"}.fa-house-flood-water-circle-arrow-right{--fa:"\\e50f"}.fa-poll-h,.fa-square-poll-horizontal{--fa:"\\f682"}.fa-circle{--fa:"\\f111"}.fa-backward-fast,.fa-fast-backward{--fa:"\\f049"}.fa-recycle{--fa:"\\f1b8"}.fa-user-astronaut{--fa:"\\f4fb"}.fa-plane-slash{--fa:"\\e069"}.fa-trademark{--fa:"\\f25c"}.fa-basketball,.fa-basketball-ball{--fa:"\\f434"}.fa-satellite-dish{--fa:"\\f7c0"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:"\\f35b"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:"\\f3cd"}.fa-volume-high,.fa-volume-up{--fa:"\\f028"}.fa-users-rays{--fa:"\\e593"}.fa-wallet{--fa:"\\f555"}.fa-clipboard-check{--fa:"\\f46c"}.fa-file-audio{--fa:"\\f1c7"}.fa-burger,.fa-hamburger{--fa:"\\f805"}.fa-wrench{--fa:"\\f0ad"}.fa-bugs{--fa:"\\e4d0"}.fa-rupee,.fa-rupee-sign{--fa:"\\f156"}.fa-file-image{--fa:"\\f1c5"}.fa-circle-question,.fa-question-circle{--fa:"\\f059"}.fa-plane-departure{--fa:"\\f5b0"}.fa-handshake-slash{--fa:"\\e060"}.fa-book-bookmark{--fa:"\\e0bb"}.fa-code-branch{--fa:"\\f126"}.fa-hat-cowboy{--fa:"\\f8c0"}.fa-bridge{--fa:"\\e4c8"}.fa-phone-alt,.fa-phone-flip{--fa:"\\f879"}.fa-truck-front{--fa:"\\e2b7"}.fa-cat{--fa:"\\f6be"}.fa-anchor-circle-exclamation{--fa:"\\e4ab"}.fa-truck-field{--fa:"\\e58d"}.fa-route{--fa:"\\f4d7"}.fa-clipboard-question{--fa:"\\e4e3"}.fa-panorama{--fa:"\\e209"}.fa-comment-medical{--fa:"\\f7f5"}.fa-teeth-open{--fa:"\\f62f"}.fa-file-circle-minus{--fa:"\\e4ed"}.fa-tags{--fa:"\\f02c"}.fa-wine-glass{--fa:"\\f4e3"}.fa-fast-forward,.fa-forward-fast{--fa:"\\f050"}.fa-face-meh-blank,.fa-meh-blank{--fa:"\\f5a4"}.fa-parking,.fa-square-parking{--fa:"\\f540"}.fa-house-signal{--fa:"\\e012"}.fa-bars-progress,.fa-tasks-alt{--fa:"\\f828"}.fa-faucet-drip{--fa:"\\e006"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:"\\f474"}.fa-ban-smoking,.fa-smoking-ban{--fa:"\\f54d"}.fa-terminal{--fa:"\\f120"}.fa-mobile-button{--fa:"\\f10b"}.fa-house-medical-flag{--fa:"\\e514"}.fa-basket-shopping,.fa-shopping-basket{--fa:"\\f291"}.fa-tape{--fa:"\\f4db"}.fa-bus-alt,.fa-bus-simple{--fa:"\\f55e"}.fa-eye{--fa:"\\f06e"}.fa-face-sad-cry,.fa-sad-cry{--fa:"\\f5b3"}.fa-audio-description{--fa:"\\f29e"}.fa-person-military-to-person{--fa:"\\e54c"}.fa-file-shield{--fa:"\\e4f0"}.fa-user-slash{--fa:"\\f506"}.fa-pen{--fa:"\\f304"}.fa-tower-observation{--fa:"\\e586"}.fa-file-code{--fa:"\\f1c9"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:"\\f012"}.fa-bus{--fa:"\\f207"}.fa-heart-circle-xmark{--fa:"\\e501"}.fa-home-lg,.fa-house-chimney{--fa:"\\e3af"}.fa-window-maximize{--fa:"\\f2d0"}.fa-face-frown,.fa-frown{--fa:"\\f119"}.fa-prescription{--fa:"\\f5b1"}.fa-shop,.fa-store-alt{--fa:"\\f54f"}.fa-floppy-disk,.fa-save{--fa:"\\f0c7"}.fa-vihara{--fa:"\\f6a7"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:"\\f515"}.fa-sort-asc,.fa-sort-up{--fa:"\\f0de"}.fa-comment-dots,.fa-commenting{--fa:"\\f4ad"}.fa-plant-wilt{--fa:"\\e5aa"}.fa-diamond{--fa:"\\f219"}.fa-face-grin-squint,.fa-grin-squint{--fa:"\\f585"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:"\\f4c0"}.fa-chart-diagram{--fa:"\\e695"}.fa-bacterium{--fa:"\\e05a"}.fa-hand-pointer{--fa:"\\f25a"}.fa-drum-steelpan{--fa:"\\f56a"}.fa-hand-scissors{--fa:"\\f257"}.fa-hands-praying,.fa-praying-hands{--fa:"\\f684"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:"\\f01e"}.fa-biohazard{--fa:"\\f780"}.fa-location,.fa-location-crosshairs{--fa:"\\f601"}.fa-mars-double{--fa:"\\f227"}.fa-child-dress{--fa:"\\e59c"}.fa-users-between-lines{--fa:"\\e591"}.fa-lungs-virus{--fa:"\\e067"}.fa-face-grin-tears,.fa-grin-tears{--fa:"\\f588"}.fa-phone{--fa:"\\f095"}.fa-calendar-times,.fa-calendar-xmark{--fa:"\\f273"}.fa-child-reaching{--fa:"\\e59d"}.fa-head-side-virus{--fa:"\\e064"}.fa-user-cog,.fa-user-gear{--fa:"\\f4fe"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:"\\f163"}.fa-door-closed{--fa:"\\f52a"}.fa-shield-virus{--fa:"\\e06c"}.fa-dice-six{--fa:"\\f526"}.fa-mosquito-net{--fa:"\\e52c"}.fa-file-fragment{--fa:"\\e697"}.fa-bridge-water{--fa:"\\e4ce"}.fa-person-booth{--fa:"\\f756"}.fa-text-width{--fa:"\\f035"}.fa-hat-wizard{--fa:"\\f6e8"}.fa-pen-fancy{--fa:"\\f5ac"}.fa-digging,.fa-person-digging{--fa:"\\f85e"}.fa-trash{--fa:"\\f1f8"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:"\\f629"}.fa-book-medical{--fa:"\\f7e6"}.fa-poo{--fa:"\\f2fe"}.fa-quote-right,.fa-quote-right-alt{--fa:"\\f10e"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:"\\f553"}.fa-cubes{--fa:"\\f1b3"}.fa-divide{--fa:"\\f529"}.fa-tenge,.fa-tenge-sign{--fa:"\\f7d7"}.fa-headphones{--fa:"\\f025"}.fa-hands-holding{--fa:"\\f4c2"}.fa-hands-clapping{--fa:"\\e1a8"}.fa-republican{--fa:"\\f75e"}.fa-arrow-left{--fa:"\\f060"}.fa-person-circle-xmark{--fa:"\\e543"}.fa-ruler{--fa:"\\f545"}.fa-align-left{--fa:"\\f036"}.fa-dice-d6{--fa:"\\f6d1"}.fa-restroom{--fa:"\\f7bd"}.fa-j{--fa:"\\4a"}.fa-users-viewfinder{--fa:"\\e595"}.fa-file-video{--fa:"\\f1c8"}.fa-external-link-alt,.fa-up-right-from-square{--fa:"\\f35d"}.fa-table-cells,.fa-th{--fa:"\\f00a"}.fa-file-pdf{--fa:"\\f1c1"}.fa-bible,.fa-book-bible{--fa:"\\f647"}.fa-o{--fa:"\\4f"}.fa-medkit,.fa-suitcase-medical{--fa:"\\f0fa"}.fa-user-secret{--fa:"\\f21b"}.fa-otter{--fa:"\\f700"}.fa-female,.fa-person-dress{--fa:"\\f182"}.fa-comment-dollar{--fa:"\\f651"}.fa-briefcase-clock,.fa-business-time{--fa:"\\f64a"}.fa-table-cells-large,.fa-th-large{--fa:"\\f009"}.fa-book-tanakh,.fa-tanakh{--fa:"\\f827"}.fa-phone-volume,.fa-volume-control-phone{--fa:"\\f2a0"}.fa-hat-cowboy-side{--fa:"\\f8c1"}.fa-clipboard-user{--fa:"\\f7f3"}.fa-child{--fa:"\\f1ae"}.fa-lira-sign{--fa:"\\f195"}.fa-satellite{--fa:"\\f7bf"}.fa-plane-lock{--fa:"\\e558"}.fa-tag{--fa:"\\f02b"}.fa-comment{--fa:"\\f075"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:"\\f1fd"}.fa-envelope{--fa:"\\f0e0"}.fa-angle-double-up,.fa-angles-up{--fa:"\\f102"}.fa-paperclip{--fa:"\\f0c6"}.fa-arrow-right-to-city{--fa:"\\e4b3"}.fa-ribbon{--fa:"\\f4d6"}.fa-lungs{--fa:"\\f604"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:"\\f887"}.fa-litecoin-sign{--fa:"\\e1d3"}.fa-border-none{--fa:"\\f850"}.fa-circle-nodes{--fa:"\\e4e2"}.fa-parachute-box{--fa:"\\f4cd"}.fa-indent{--fa:"\\f03c"}.fa-truck-field-un{--fa:"\\e58e"}.fa-hourglass,.fa-hourglass-empty{--fa:"\\f254"}.fa-mountain{--fa:"\\f6fc"}.fa-user-doctor,.fa-user-md{--fa:"\\f0f0"}.fa-circle-info,.fa-info-circle{--fa:"\\f05a"}.fa-cloud-meatball{--fa:"\\f73b"}.fa-camera,.fa-camera-alt{--fa:"\\f030"}.fa-square-virus{--fa:"\\e578"}.fa-meteor{--fa:"\\f753"}.fa-car-on{--fa:"\\e4dd"}.fa-sleigh{--fa:"\\f7cc"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:"\\f162"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:"\\f4c1"}.fa-water{--fa:"\\f773"}.fa-calendar-check{--fa:"\\f274"}.fa-braille{--fa:"\\f2a1"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:"\\f486"}.fa-landmark{--fa:"\\f66f"}.fa-truck{--fa:"\\f0d1"}.fa-crosshairs{--fa:"\\f05b"}.fa-person-cane{--fa:"\\e53c"}.fa-tent{--fa:"\\e57d"}.fa-vest-patches{--fa:"\\e086"}.fa-check-double{--fa:"\\f560"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:"\\f15d"}.fa-money-bill-wheat{--fa:"\\e52a"}.fa-cookie{--fa:"\\f563"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:"\\f0e2"}.fa-hard-drive,.fa-hdd{--fa:"\\f0a0"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:"\\f586"}.fa-dumbbell{--fa:"\\f44b"}.fa-list-alt,.fa-rectangle-list{--fa:"\\f022"}.fa-tarp-droplet{--fa:"\\e57c"}.fa-house-medical-circle-check{--fa:"\\e511"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:"\\f7ca"}.fa-calendar-plus{--fa:"\\f271"}.fa-plane-arrival{--fa:"\\f5af"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:"\\f359"}.fa-subway,.fa-train-subway{--fa:"\\f239"}.fa-chart-gantt{--fa:"\\e0e4"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:"\\e1bc"}.fa-crop-alt,.fa-crop-simple{--fa:"\\f565"}.fa-money-bill-1,.fa-money-bill-alt{--fa:"\\f3d1"}.fa-left-long,.fa-long-arrow-alt-left{--fa:"\\f30a"}.fa-dna{--fa:"\\f471"}.fa-virus-slash{--fa:"\\e075"}.fa-minus,.fa-subtract{--fa:"\\f068"}.fa-chess{--fa:"\\f439"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:"\\f177"}.fa-plug-circle-check{--fa:"\\e55c"}.fa-street-view{--fa:"\\f21d"}.fa-franc-sign{--fa:"\\e18f"}.fa-volume-off{--fa:"\\f026"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:"\\f2a3"}.fa-cog,.fa-gear{--fa:"\\f013"}.fa-droplet-slash,.fa-tint-slash{--fa:"\\f5c7"}.fa-mosque{--fa:"\\f678"}.fa-mosquito{--fa:"\\e52b"}.fa-star-of-david{--fa:"\\f69a"}.fa-person-military-rifle{--fa:"\\e54b"}.fa-cart-shopping,.fa-shopping-cart{--fa:"\\f07a"}.fa-vials{--fa:"\\f493"}.fa-plug-circle-plus{--fa:"\\e55f"}.fa-place-of-worship{--fa:"\\f67f"}.fa-grip-vertical{--fa:"\\f58e"}.fa-hexagon-nodes{--fa:"\\e699"}.fa-arrow-turn-up,.fa-level-up{--fa:"\\f148"}.fa-u{--fa:"\\55"}.fa-square-root-alt,.fa-square-root-variable{--fa:"\\f698"}.fa-clock,.fa-clock-four{--fa:"\\f017"}.fa-backward-step,.fa-step-backward{--fa:"\\f048"}.fa-pallet{--fa:"\\f482"}.fa-faucet{--fa:"\\e005"}.fa-baseball-bat-ball{--fa:"\\f432"}.fa-s{--fa:"\\53"}.fa-timeline{--fa:"\\e29c"}.fa-keyboard{--fa:"\\f11c"}.fa-caret-down{--fa:"\\f0d7"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:"\\f7f2"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:"\\f2c8"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:"\\f3cf"}.fa-plane-up{--fa:"\\e22d"}.fa-piggy-bank{--fa:"\\f4d3"}.fa-battery-3,.fa-battery-half{--fa:"\\f242"}.fa-mountain-city{--fa:"\\e52e"}.fa-coins{--fa:"\\f51e"}.fa-khanda{--fa:"\\f66d"}.fa-sliders,.fa-sliders-h{--fa:"\\f1de"}.fa-folder-tree{--fa:"\\f802"}.fa-network-wired{--fa:"\\f6ff"}.fa-map-pin{--fa:"\\f276"}.fa-hamsa{--fa:"\\f665"}.fa-cent-sign{--fa:"\\e3f5"}.fa-flask{--fa:"\\f0c3"}.fa-person-pregnant{--fa:"\\e31e"}.fa-wand-sparkles{--fa:"\\f72b"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:"\\f142"}.fa-ticket{--fa:"\\f145"}.fa-power-off{--fa:"\\f011"}.fa-long-arrow-alt-right,.fa-right-long{--fa:"\\f30b"}.fa-flag-usa{--fa:"\\f74d"}.fa-laptop-file{--fa:"\\e51d"}.fa-teletype,.fa-tty{--fa:"\\f1e4"}.fa-diagram-next{--fa:"\\e476"}.fa-person-rifle{--fa:"\\e54e"}.fa-house-medical-circle-exclamation{--fa:"\\e512"}.fa-closed-captioning{--fa:"\\f20a"}.fa-hiking,.fa-person-hiking{--fa:"\\f6ec"}.fa-venus-double{--fa:"\\f226"}.fa-images{--fa:"\\f302"}.fa-calculator{--fa:"\\f1ec"}.fa-people-pulling{--fa:"\\e535"}.fa-n{--fa:"\\4e"}.fa-cable-car,.fa-tram{--fa:"\\f7da"}.fa-cloud-rain{--fa:"\\f73d"}.fa-building-circle-xmark{--fa:"\\e4d4"}.fa-ship{--fa:"\\f21a"}.fa-arrows-down-to-line{--fa:"\\e4b8"}.fa-download{--fa:"\\f019"}.fa-face-grin,.fa-grin{--fa:"\\f580"}.fa-backspace,.fa-delete-left{--fa:"\\f55a"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:"\\f1fb"}.fa-file-circle-check{--fa:"\\e5a0"}.fa-forward{--fa:"\\f04e"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:"\\f3ce"}.fa-face-meh,.fa-meh{--fa:"\\f11a"}.fa-align-center{--fa:"\\f037"}.fa-book-dead,.fa-book-skull{--fa:"\\f6b7"}.fa-drivers-license,.fa-id-card{--fa:"\\f2c2"}.fa-dedent,.fa-outdent{--fa:"\\f03b"}.fa-heart-circle-exclamation{--fa:"\\e4fe"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:"\\f015"}.fa-calendar-week{--fa:"\\f784"}.fa-laptop-medical{--fa:"\\f812"}.fa-b{--fa:"\\42"}.fa-file-medical{--fa:"\\f477"}.fa-dice-one{--fa:"\\f525"}.fa-kiwi-bird{--fa:"\\f535"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:"\\f0ec"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:"\\f2f9"}.fa-cutlery,.fa-utensils{--fa:"\\f2e7"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:"\\f161"}.fa-mill-sign{--fa:"\\e1ed"}.fa-bowl-rice{--fa:"\\e2eb"}.fa-skull{--fa:"\\f54c"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:"\\f519"}.fa-truck-pickup{--fa:"\\f63c"}.fa-long-arrow-alt-up,.fa-up-long{--fa:"\\f30c"}.fa-stop{--fa:"\\f04d"}.fa-code-merge{--fa:"\\f387"}.fa-upload{--fa:"\\f093"}.fa-hurricane{--fa:"\\f751"}.fa-mound{--fa:"\\e52d"}.fa-toilet-portable{--fa:"\\e583"}.fa-compact-disc{--fa:"\\f51f"}.fa-file-arrow-down,.fa-file-download{--fa:"\\f56d"}.fa-caravan{--fa:"\\f8ff"}.fa-shield-cat{--fa:"\\e572"}.fa-bolt,.fa-zap{--fa:"\\f0e7"}.fa-glass-water{--fa:"\\e4f4"}.fa-oil-well{--fa:"\\e532"}.fa-vault{--fa:"\\e2c5"}.fa-mars{--fa:"\\f222"}.fa-toilet{--fa:"\\f7d8"}.fa-plane-circle-xmark{--fa:"\\e557"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:"\\f157"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:"\\f158"}.fa-sun{--fa:"\\f185"}.fa-guitar{--fa:"\\f7a6"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:"\\f59c"}.fa-horse-head{--fa:"\\f7ab"}.fa-bore-hole{--fa:"\\e4c3"}.fa-industry{--fa:"\\f275"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:"\\f358"}.fa-arrows-turn-to-dots{--fa:"\\e4c1"}.fa-florin-sign{--fa:"\\e184"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:"\\f884"}.fa-less-than{--fa:"\\3c"}.fa-angle-down{--fa:"\\f107"}.fa-car-tunnel{--fa:"\\e4de"}.fa-head-side-cough{--fa:"\\e061"}.fa-grip-lines{--fa:"\\f7a4"}.fa-thumbs-down{--fa:"\\f165"}.fa-user-lock{--fa:"\\f502"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:"\\f178"}.fa-anchor-circle-xmark{--fa:"\\e4ac"}.fa-ellipsis,.fa-ellipsis-h{--fa:"\\f141"}.fa-chess-pawn{--fa:"\\f443"}.fa-first-aid,.fa-kit-medical{--fa:"\\f479"}.fa-person-through-window{--fa:"\\e5a9"}.fa-toolbox{--fa:"\\f552"}.fa-hands-holding-circle{--fa:"\\e4fb"}.fa-bug{--fa:"\\f188"}.fa-credit-card,.fa-credit-card-alt{--fa:"\\f09d"}.fa-automobile,.fa-car{--fa:"\\f1b9"}.fa-hand-holding-hand{--fa:"\\e4f7"}.fa-book-open-reader,.fa-book-reader{--fa:"\\f5da"}.fa-mountain-sun{--fa:"\\e52f"}.fa-arrows-left-right-to-line{--fa:"\\e4ba"}.fa-dice-d20{--fa:"\\f6cf"}.fa-truck-droplet{--fa:"\\e58c"}.fa-file-circle-xmark{--fa:"\\e5a1"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:"\\e040"}.fa-medal{--fa:"\\f5a2"}.fa-bed{--fa:"\\f236"}.fa-h-square,.fa-square-h{--fa:"\\f0fd"}.fa-podcast{--fa:"\\f2ce"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:"\\f2c7"}.fa-bell{--fa:"\\f0f3"}.fa-superscript{--fa:"\\f12b"}.fa-plug-circle-xmark{--fa:"\\e560"}.fa-star-of-life{--fa:"\\f621"}.fa-phone-slash{--fa:"\\f3dd"}.fa-paint-roller{--fa:"\\f5aa"}.fa-hands-helping,.fa-handshake-angle{--fa:"\\f4c4"}.fa-location-dot,.fa-map-marker-alt{--fa:"\\f3c5"}.fa-file{--fa:"\\f15b"}.fa-greater-than{--fa:"\\3e"}.fa-person-swimming,.fa-swimmer{--fa:"\\f5c4"}.fa-arrow-down{--fa:"\\f063"}.fa-droplet,.fa-tint{--fa:"\\f043"}.fa-eraser{--fa:"\\f12d"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:"\\f57d"}.fa-person-burst{--fa:"\\e53b"}.fa-dove{--fa:"\\f4ba"}.fa-battery-0,.fa-battery-empty{--fa:"\\f244"}.fa-socks{--fa:"\\f696"}.fa-inbox{--fa:"\\f01c"}.fa-section{--fa:"\\e447"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:"\\f625"}.fa-envelope-open-text{--fa:"\\f658"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:"\\f0f8"}.fa-wine-bottle{--fa:"\\f72f"}.fa-chess-rook{--fa:"\\f447"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:"\\f550"}.fa-dharmachakra{--fa:"\\f655"}.fa-hotdog{--fa:"\\f80f"}.fa-blind,.fa-person-walking-with-cane{--fa:"\\f29d"}.fa-drum{--fa:"\\f569"}.fa-ice-cream{--fa:"\\f810"}.fa-heart-circle-bolt{--fa:"\\e4fc"}.fa-fax{--fa:"\\f1ac"}.fa-paragraph{--fa:"\\f1dd"}.fa-check-to-slot,.fa-vote-yea{--fa:"\\f772"}.fa-star-half{--fa:"\\f089"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:"\\f468"}.fa-chain,.fa-link{--fa:"\\f0c1"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:"\\f2a2"}.fa-tree-city{--fa:"\\e587"}.fa-play{--fa:"\\f04b"}.fa-font{--fa:"\\f031"}.fa-table-cells-row-lock{--fa:"\\e67a"}.fa-rupiah-sign{--fa:"\\e23d"}.fa-magnifying-glass,.fa-search{--fa:"\\f002"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:"\\f45d"}.fa-diagnoses,.fa-person-dots-from-line{--fa:"\\f470"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:"\\f82a"}.fa-naira-sign{--fa:"\\e1f6"}.fa-cart-arrow-down{--fa:"\\f218"}.fa-walkie-talkie{--fa:"\\f8ef"}.fa-file-edit,.fa-file-pen{--fa:"\\f31c"}.fa-receipt{--fa:"\\f543"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:"\\f14b"}.fa-suitcase-rolling{--fa:"\\f5c1"}.fa-person-circle-exclamation{--fa:"\\e53f"}.fa-chevron-down{--fa:"\\f078"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:"\\f240"}.fa-skull-crossbones{--fa:"\\f714"}.fa-code-compare{--fa:"\\e13a"}.fa-list-dots,.fa-list-ul{--fa:"\\f0ca"}.fa-school-lock{--fa:"\\e56f"}.fa-tower-cell{--fa:"\\e585"}.fa-down-long,.fa-long-arrow-alt-down{--fa:"\\f309"}.fa-ranking-star{--fa:"\\e561"}.fa-chess-king{--fa:"\\f43f"}.fa-person-harassing{--fa:"\\e549"}.fa-brazilian-real-sign{--fa:"\\e46c"}.fa-landmark-alt,.fa-landmark-dome{--fa:"\\f752"}.fa-arrow-up{--fa:"\\f062"}.fa-television,.fa-tv,.fa-tv-alt{--fa:"\\f26c"}.fa-shrimp{--fa:"\\e448"}.fa-list-check,.fa-tasks{--fa:"\\f0ae"}.fa-jug-detergent{--fa:"\\e519"}.fa-circle-user,.fa-user-circle{--fa:"\\f2bd"}.fa-user-shield{--fa:"\\f505"}.fa-wind{--fa:"\\f72e"}.fa-car-burst,.fa-car-crash{--fa:"\\f5e1"}.fa-y{--fa:"\\59"}.fa-person-snowboarding,.fa-snowboarding{--fa:"\\f7ce"}.fa-shipping-fast,.fa-truck-fast{--fa:"\\f48b"}.fa-fish{--fa:"\\f578"}.fa-user-graduate{--fa:"\\f501"}.fa-adjust,.fa-circle-half-stroke{--fa:"\\f042"}.fa-clapperboard{--fa:"\\e131"}.fa-circle-radiation,.fa-radiation-alt{--fa:"\\f7ba"}.fa-baseball,.fa-baseball-ball{--fa:"\\f433"}.fa-jet-fighter-up{--fa:"\\e518"}.fa-diagram-project,.fa-project-diagram{--fa:"\\f542"}.fa-copy{--fa:"\\f0c5"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:"\\f6a9"}.fa-hand-sparkles{--fa:"\\e05d"}.fa-grip,.fa-grip-horizontal{--fa:"\\f58d"}.fa-share-from-square,.fa-share-square{--fa:"\\f14d"}.fa-child-combatant,.fa-child-rifle{--fa:"\\e4e0"}.fa-gun{--fa:"\\e19b"}.fa-phone-square,.fa-square-phone{--fa:"\\f098"}.fa-add,.fa-plus{--fa:"\\2b"}.fa-expand{--fa:"\\f065"}.fa-computer{--fa:"\\e4e5"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:"\\f00d"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:"\\f047"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:"\\f51c"}.fa-peso-sign{--fa:"\\e222"}.fa-building-shield{--fa:"\\e4d8"}.fa-baby{--fa:"\\f77c"}.fa-users-line{--fa:"\\e592"}.fa-quote-left,.fa-quote-left-alt{--fa:"\\f10d"}.fa-tractor{--fa:"\\f722"}.fa-trash-arrow-up,.fa-trash-restore{--fa:"\\f829"}.fa-arrow-down-up-lock{--fa:"\\e4b0"}.fa-lines-leaning{--fa:"\\e51e"}.fa-ruler-combined{--fa:"\\f546"}.fa-copyright{--fa:"\\f1f9"}.fa-equals{--fa:"\\3d"}.fa-blender{--fa:"\\f517"}.fa-teeth{--fa:"\\f62e"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:"\\f20b"}.fa-map{--fa:"\\f279"}.fa-rocket{--fa:"\\f135"}.fa-photo-film,.fa-photo-video{--fa:"\\f87c"}.fa-folder-minus{--fa:"\\f65d"}.fa-hexagon-nodes-bolt{--fa:"\\e69a"}.fa-store{--fa:"\\f54e"}.fa-arrow-trend-up{--fa:"\\e098"}.fa-plug-circle-minus{--fa:"\\e55e"}.fa-sign,.fa-sign-hanging{--fa:"\\f4d9"}.fa-bezier-curve{--fa:"\\f55b"}.fa-bell-slash{--fa:"\\f1f6"}.fa-tablet,.fa-tablet-android{--fa:"\\f3fb"}.fa-school-flag{--fa:"\\e56e"}.fa-fill{--fa:"\\f575"}.fa-angle-up{--fa:"\\f106"}.fa-drumstick-bite{--fa:"\\f6d7"}.fa-holly-berry{--fa:"\\f7aa"}.fa-chevron-left{--fa:"\\f053"}.fa-bacteria{--fa:"\\e059"}.fa-hand-lizard{--fa:"\\f258"}.fa-notdef{--fa:"\\e1fe"}.fa-disease{--fa:"\\f7fa"}.fa-briefcase-medical{--fa:"\\f469"}.fa-genderless{--fa:"\\f22d"}.fa-chevron-right{--fa:"\\f054"}.fa-retweet{--fa:"\\f079"}.fa-car-alt,.fa-car-rear{--fa:"\\f5de"}.fa-pump-soap{--fa:"\\e06b"}.fa-video-slash{--fa:"\\f4e2"}.fa-battery-2,.fa-battery-quarter{--fa:"\\f243"}.fa-radio{--fa:"\\f8d7"}.fa-baby-carriage,.fa-carriage-baby{--fa:"\\f77d"}.fa-traffic-light{--fa:"\\f637"}.fa-thermometer{--fa:"\\f491"}.fa-vr-cardboard{--fa:"\\f729"}.fa-hand-middle-finger{--fa:"\\f806"}.fa-percent,.fa-percentage{--fa:"\\25"}.fa-truck-moving{--fa:"\\f4df"}.fa-glass-water-droplet{--fa:"\\e4f5"}.fa-display{--fa:"\\e163"}.fa-face-smile,.fa-smile{--fa:"\\f118"}.fa-thumb-tack,.fa-thumbtack{--fa:"\\f08d"}.fa-trophy{--fa:"\\f091"}.fa-person-praying,.fa-pray{--fa:"\\f683"}.fa-hammer{--fa:"\\f6e3"}.fa-hand-peace{--fa:"\\f25b"}.fa-rotate,.fa-sync-alt{--fa:"\\f2f1"}.fa-spinner{--fa:"\\f110"}.fa-robot{--fa:"\\f544"}.fa-peace{--fa:"\\f67c"}.fa-cogs,.fa-gears{--fa:"\\f085"}.fa-warehouse{--fa:"\\f494"}.fa-arrow-up-right-dots{--fa:"\\e4b7"}.fa-splotch{--fa:"\\f5bc"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:"\\f584"}.fa-dice-four{--fa:"\\f524"}.fa-sim-card{--fa:"\\f7c4"}.fa-transgender,.fa-transgender-alt{--fa:"\\f225"}.fa-mercury{--fa:"\\f223"}.fa-arrow-turn-down,.fa-level-down{--fa:"\\f149"}.fa-person-falling-burst{--fa:"\\e547"}.fa-award{--fa:"\\f559"}.fa-ticket-alt,.fa-ticket-simple{--fa:"\\f3ff"}.fa-building{--fa:"\\f1ad"}.fa-angle-double-left,.fa-angles-left{--fa:"\\f100"}.fa-qrcode{--fa:"\\f029"}.fa-clock-rotate-left,.fa-history{--fa:"\\f1da"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:"\\f583"}.fa-arrow-right-from-file,.fa-file-export{--fa:"\\f56e"}.fa-shield,.fa-shield-blank{--fa:"\\f132"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:"\\f885"}.fa-comment-nodes{--fa:"\\e696"}.fa-house-medical{--fa:"\\e3b2"}.fa-golf-ball,.fa-golf-ball-tee{--fa:"\\f450"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:"\\f137"}.fa-house-chimney-window{--fa:"\\e00d"}.fa-pen-nib{--fa:"\\f5ad"}.fa-tent-arrow-turn-left{--fa:"\\e580"}.fa-tents{--fa:"\\e582"}.fa-magic,.fa-wand-magic{--fa:"\\f0d0"}.fa-dog{--fa:"\\f6d3"}.fa-carrot{--fa:"\\f787"}.fa-moon{--fa:"\\f186"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:"\\f5ce"}.fa-cheese{--fa:"\\f7ef"}.fa-yin-yang{--fa:"\\f6ad"}.fa-music{--fa:"\\f001"}.fa-code-commit{--fa:"\\f386"}.fa-temperature-low{--fa:"\\f76b"}.fa-biking,.fa-person-biking{--fa:"\\f84a"}.fa-broom{--fa:"\\f51a"}.fa-shield-heart{--fa:"\\e574"}.fa-gopuram{--fa:"\\f664"}.fa-earth-oceania,.fa-globe-oceania{--fa:"\\e47b"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:"\\f2d3"}.fa-hashtag{--fa:"\\23"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:"\\f424"}.fa-oil-can{--fa:"\\f613"}.fa-t{--fa:"\\54"}.fa-hippo{--fa:"\\f6ed"}.fa-chart-column{--fa:"\\e0e3"}.fa-infinity{--fa:"\\f534"}.fa-vial-circle-check{--fa:"\\e596"}.fa-person-arrow-down-to-line{--fa:"\\e538"}.fa-voicemail{--fa:"\\f897"}.fa-fan{--fa:"\\f863"}.fa-person-walking-luggage{--fa:"\\e554"}.fa-arrows-alt-v,.fa-up-down{--fa:"\\f338"}.fa-cloud-moon-rain{--fa:"\\f73c"}.fa-calendar{--fa:"\\f133"}.fa-trailer{--fa:"\\e041"}.fa-bahai,.fa-haykal{--fa:"\\f666"}.fa-sd-card{--fa:"\\f7c2"}.fa-dragon{--fa:"\\f6d5"}.fa-shoe-prints{--fa:"\\f54b"}.fa-circle-plus,.fa-plus-circle{--fa:"\\f055"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:"\\f58b"}.fa-hand-holding{--fa:"\\f4bd"}.fa-plug-circle-exclamation{--fa:"\\e55d"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:"\\f127"}.fa-clone{--fa:"\\f24d"}.fa-person-walking-arrow-loop-left{--fa:"\\e551"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:"\\f882"}.fa-fire-alt,.fa-fire-flame-curved{--fa:"\\f7e4"}.fa-tornado{--fa:"\\f76f"}.fa-file-circle-plus{--fa:"\\e494"}.fa-book-quran,.fa-quran{--fa:"\\f687"}.fa-anchor{--fa:"\\f13d"}.fa-border-all{--fa:"\\f84c"}.fa-angry,.fa-face-angry{--fa:"\\f556"}.fa-cookie-bite{--fa:"\\f564"}.fa-arrow-trend-down{--fa:"\\e097"}.fa-feed,.fa-rss{--fa:"\\f09e"}.fa-draw-polygon{--fa:"\\f5ee"}.fa-balance-scale,.fa-scale-balanced{--fa:"\\f24e"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:"\\f62a"}.fa-shower{--fa:"\\f2cc"}.fa-desktop,.fa-desktop-alt{--fa:"\\f390"}.fa-m{--fa:"\\4d"}.fa-table-list,.fa-th-list{--fa:"\\f00b"}.fa-comment-sms,.fa-sms{--fa:"\\f7cd"}.fa-book{--fa:"\\f02d"}.fa-user-plus{--fa:"\\f234"}.fa-check{--fa:"\\f00c"}.fa-battery-4,.fa-battery-three-quarters{--fa:"\\f241"}.fa-house-circle-check{--fa:"\\e509"}.fa-angle-left{--fa:"\\f104"}.fa-diagram-successor{--fa:"\\e47a"}.fa-truck-arrow-right{--fa:"\\e58b"}.fa-arrows-split-up-and-left{--fa:"\\e4bc"}.fa-fist-raised,.fa-hand-fist{--fa:"\\f6de"}.fa-cloud-moon{--fa:"\\f6c3"}.fa-briefcase{--fa:"\\f0b1"}.fa-person-falling{--fa:"\\e546"}.fa-image-portrait,.fa-portrait{--fa:"\\f3e0"}.fa-user-tag{--fa:"\\f507"}.fa-rug{--fa:"\\e569"}.fa-earth-europe,.fa-globe-europe{--fa:"\\f7a2"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:"\\f59d"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:"\\f410"}.fa-baht-sign{--fa:"\\e0ac"}.fa-book-open{--fa:"\\f518"}.fa-book-journal-whills,.fa-journal-whills{--fa:"\\f66a"}.fa-handcuffs{--fa:"\\e4f8"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:"\\f071"}.fa-database{--fa:"\\f1c0"}.fa-mail-forward,.fa-share{--fa:"\\f064"}.fa-bottle-droplet{--fa:"\\e4c4"}.fa-mask-face{--fa:"\\e1d7"}.fa-hill-rockslide{--fa:"\\e508"}.fa-exchange-alt,.fa-right-left{--fa:"\\f362"}.fa-paper-plane{--fa:"\\f1d8"}.fa-road-circle-exclamation{--fa:"\\e565"}.fa-dungeon{--fa:"\\f6d9"}.fa-align-right{--fa:"\\f038"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:"\\f53b"}.fa-life-ring{--fa:"\\f1cd"}.fa-hands,.fa-sign-language,.fa-signing{--fa:"\\f2a7"}.fa-calendar-day{--fa:"\\f783"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:"\\f5c5"}.fa-arrows-up-down,.fa-arrows-v{--fa:"\\f07d"}.fa-face-grimace,.fa-grimace{--fa:"\\f57f"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:"\\e2ce"}.fa-level-down-alt,.fa-turn-down{--fa:"\\f3be"}.fa-person-walking-arrow-right{--fa:"\\e552"}.fa-envelope-square,.fa-square-envelope{--fa:"\\f199"}.fa-dice{--fa:"\\f522"}.fa-bowling-ball{--fa:"\\f436"}.fa-brain{--fa:"\\f5dc"}.fa-band-aid,.fa-bandage{--fa:"\\f462"}.fa-calendar-minus{--fa:"\\f272"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:"\\f057"}.fa-gifts{--fa:"\\f79c"}.fa-hotel{--fa:"\\f594"}.fa-earth-asia,.fa-globe-asia{--fa:"\\f57e"}.fa-id-card-alt,.fa-id-card-clip{--fa:"\\f47f"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:"\\f00e"}.fa-thumbs-up{--fa:"\\f164"}.fa-user-clock{--fa:"\\f4fd"}.fa-allergies,.fa-hand-dots{--fa:"\\f461"}.fa-file-invoice{--fa:"\\f570"}.fa-window-minimize{--fa:"\\f2d1"}.fa-coffee,.fa-mug-saucer{--fa:"\\f0f4"}.fa-brush{--fa:"\\f55d"}.fa-file-half-dashed{--fa:"\\e698"}.fa-mask{--fa:"\\f6fa"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:"\\f010"}.fa-ruler-vertical{--fa:"\\f548"}.fa-user-alt,.fa-user-large{--fa:"\\f406"}.fa-train-tram{--fa:"\\e5b4"}.fa-user-nurse{--fa:"\\f82f"}.fa-syringe{--fa:"\\f48e"}.fa-cloud-sun{--fa:"\\f6c4"}.fa-stopwatch-20{--fa:"\\e06f"}.fa-square-full{--fa:"\\f45c"}.fa-magnet{--fa:"\\f076"}.fa-jar{--fa:"\\e516"}.fa-note-sticky,.fa-sticky-note{--fa:"\\f249"}.fa-bug-slash{--fa:"\\e490"}.fa-arrow-up-from-water-pump{--fa:"\\e4b6"}.fa-bone{--fa:"\\f5d7"}.fa-table-cells-row-unlock{--fa:"\\e691"}.fa-user-injured{--fa:"\\f728"}.fa-face-sad-tear,.fa-sad-tear{--fa:"\\f5b4"}.fa-plane{--fa:"\\f072"}.fa-tent-arrows-down{--fa:"\\e581"}.fa-exclamation{--fa:"\\21"}.fa-arrows-spin{--fa:"\\e4bb"}.fa-print{--fa:"\\f02f"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:"\\e2bb"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:"\\24"}.fa-x{--fa:"\\58"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:"\\f688"}.fa-users-cog,.fa-users-gear{--fa:"\\f509"}.fa-person-military-pointing{--fa:"\\e54a"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:"\\f19c"}.fa-umbrella{--fa:"\\f0e9"}.fa-trowel{--fa:"\\e589"}.fa-d{--fa:"\\44"}.fa-stapler{--fa:"\\e5af"}.fa-masks-theater,.fa-theater-masks{--fa:"\\f630"}.fa-kip-sign{--fa:"\\e1c4"}.fa-hand-point-left{--fa:"\\f0a5"}.fa-handshake-alt,.fa-handshake-simple{--fa:"\\f4c6"}.fa-fighter-jet,.fa-jet-fighter{--fa:"\\f0fb"}.fa-share-alt-square,.fa-square-share-nodes{--fa:"\\f1e1"}.fa-barcode{--fa:"\\f02a"}.fa-plus-minus{--fa:"\\e43c"}.fa-video,.fa-video-camera{--fa:"\\f03d"}.fa-graduation-cap,.fa-mortar-board{--fa:"\\f19d"}.fa-hand-holding-medical{--fa:"\\e05c"}.fa-person-circle-check{--fa:"\\e53e"}.fa-level-up-alt,.fa-turn-up{--fa:"\\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero{--fa:"\\f3d0"}.fa-hooli{--fa:"\\f427"}.fa-yelp{--fa:"\\f1e9"}.fa-cc-visa{--fa:"\\f1f0"}.fa-lastfm{--fa:"\\f202"}.fa-shopware{--fa:"\\f5b5"}.fa-creative-commons-nc{--fa:"\\f4e8"}.fa-aws{--fa:"\\f375"}.fa-redhat{--fa:"\\f7bc"}.fa-yoast{--fa:"\\f2b1"}.fa-cloudflare{--fa:"\\e07d"}.fa-ups{--fa:"\\f7e0"}.fa-pixiv{--fa:"\\e640"}.fa-wpexplorer{--fa:"\\f2de"}.fa-dyalog{--fa:"\\f399"}.fa-bity{--fa:"\\f37a"}.fa-stackpath{--fa:"\\f842"}.fa-buysellads{--fa:"\\f20d"}.fa-first-order{--fa:"\\f2b0"}.fa-modx{--fa:"\\f285"}.fa-guilded{--fa:"\\e07e"}.fa-vnv{--fa:"\\f40b"}.fa-js-square,.fa-square-js{--fa:"\\f3b9"}.fa-microsoft{--fa:"\\f3ca"}.fa-qq{--fa:"\\f1d6"}.fa-orcid{--fa:"\\f8d2"}.fa-java{--fa:"\\f4e4"}.fa-invision{--fa:"\\f7b0"}.fa-creative-commons-pd-alt{--fa:"\\f4ed"}.fa-centercode{--fa:"\\f380"}.fa-glide-g{--fa:"\\f2a6"}.fa-drupal{--fa:"\\f1a9"}.fa-jxl{--fa:"\\e67b"}.fa-dart-lang{--fa:"\\e693"}.fa-hire-a-helper{--fa:"\\f3b0"}.fa-creative-commons-by{--fa:"\\f4e7"}.fa-unity{--fa:"\\e049"}.fa-whmcs{--fa:"\\f40d"}.fa-rocketchat{--fa:"\\f3e8"}.fa-vk{--fa:"\\f189"}.fa-untappd{--fa:"\\f405"}.fa-mailchimp{--fa:"\\f59e"}.fa-css3-alt{--fa:"\\f38b"}.fa-reddit-square,.fa-square-reddit{--fa:"\\f1a2"}.fa-vimeo-v{--fa:"\\f27d"}.fa-contao{--fa:"\\f26d"}.fa-square-font-awesome{--fa:"\\e5ad"}.fa-deskpro{--fa:"\\f38f"}.fa-brave{--fa:"\\e63c"}.fa-sistrix{--fa:"\\f3ee"}.fa-instagram-square,.fa-square-instagram{--fa:"\\e055"}.fa-battle-net{--fa:"\\f835"}.fa-the-red-yeti{--fa:"\\f69d"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:"\\f3af"}.fa-edge{--fa:"\\f282"}.fa-threads{--fa:"\\e618"}.fa-napster{--fa:"\\f3d2"}.fa-snapchat-square,.fa-square-snapchat{--fa:"\\f2ad"}.fa-google-plus-g{--fa:"\\f0d5"}.fa-artstation{--fa:"\\f77a"}.fa-markdown{--fa:"\\f60f"}.fa-sourcetree{--fa:"\\f7d3"}.fa-google-plus{--fa:"\\f2b3"}.fa-diaspora{--fa:"\\f791"}.fa-foursquare{--fa:"\\f180"}.fa-stack-overflow{--fa:"\\f16c"}.fa-github-alt{--fa:"\\f113"}.fa-phoenix-squadron{--fa:"\\f511"}.fa-pagelines{--fa:"\\f18c"}.fa-algolia{--fa:"\\f36c"}.fa-red-river{--fa:"\\f3e3"}.fa-creative-commons-sa{--fa:"\\f4ef"}.fa-safari{--fa:"\\f267"}.fa-google{--fa:"\\f1a0"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:"\\f35c"}.fa-atlassian{--fa:"\\f77b"}.fa-linkedin-in{--fa:"\\f0e1"}.fa-digital-ocean{--fa:"\\f391"}.fa-nimblr{--fa:"\\f5a8"}.fa-chromecast{--fa:"\\f838"}.fa-evernote{--fa:"\\f839"}.fa-hacker-news{--fa:"\\f1d4"}.fa-creative-commons-sampling{--fa:"\\f4f0"}.fa-adversal{--fa:"\\f36a"}.fa-creative-commons{--fa:"\\f25e"}.fa-watchman-monitoring{--fa:"\\e087"}.fa-fonticons{--fa:"\\f280"}.fa-weixin{--fa:"\\f1d7"}.fa-shirtsinbulk{--fa:"\\f214"}.fa-codepen{--fa:"\\f1cb"}.fa-git-alt{--fa:"\\f841"}.fa-lyft{--fa:"\\f3c3"}.fa-rev{--fa:"\\f5b2"}.fa-windows{--fa:"\\f17a"}.fa-wizards-of-the-coast{--fa:"\\f730"}.fa-square-viadeo,.fa-viadeo-square{--fa:"\\f2aa"}.fa-meetup{--fa:"\\f2e0"}.fa-centos{--fa:"\\f789"}.fa-adn{--fa:"\\f170"}.fa-cloudsmith{--fa:"\\f384"}.fa-opensuse{--fa:"\\e62b"}.fa-pied-piper-alt{--fa:"\\f1a8"}.fa-dribbble-square,.fa-square-dribbble{--fa:"\\f397"}.fa-codiepie{--fa:"\\f284"}.fa-node{--fa:"\\f419"}.fa-mix{--fa:"\\f3cb"}.fa-steam{--fa:"\\f1b6"}.fa-cc-apple-pay{--fa:"\\f416"}.fa-scribd{--fa:"\\f28a"}.fa-debian{--fa:"\\e60b"}.fa-openid{--fa:"\\f19b"}.fa-instalod{--fa:"\\e081"}.fa-files-pinwheel{--fa:"\\e69f"}.fa-expeditedssl{--fa:"\\f23e"}.fa-sellcast{--fa:"\\f2da"}.fa-square-twitter,.fa-twitter-square{--fa:"\\f081"}.fa-r-project{--fa:"\\f4f7"}.fa-delicious{--fa:"\\f1a5"}.fa-freebsd{--fa:"\\f3a4"}.fa-vuejs{--fa:"\\f41f"}.fa-accusoft{--fa:"\\f369"}.fa-ioxhost{--fa:"\\f208"}.fa-fonticons-fi{--fa:"\\f3a2"}.fa-app-store{--fa:"\\f36f"}.fa-cc-mastercard{--fa:"\\f1f1"}.fa-itunes-note{--fa:"\\f3b5"}.fa-golang{--fa:"\\e40f"}.fa-kickstarter,.fa-square-kickstarter{--fa:"\\f3bb"}.fa-grav{--fa:"\\f2d6"}.fa-weibo{--fa:"\\f18a"}.fa-uncharted{--fa:"\\e084"}.fa-firstdraft{--fa:"\\f3a1"}.fa-square-youtube,.fa-youtube-square{--fa:"\\f431"}.fa-wikipedia-w{--fa:"\\f266"}.fa-rendact,.fa-wpressr{--fa:"\\f3e4"}.fa-angellist{--fa:"\\f209"}.fa-galactic-republic{--fa:"\\f50c"}.fa-nfc-directional{--fa:"\\e530"}.fa-skype{--fa:"\\f17e"}.fa-joget{--fa:"\\f3b7"}.fa-fedora{--fa:"\\f798"}.fa-stripe-s{--fa:"\\f42a"}.fa-meta{--fa:"\\e49b"}.fa-laravel{--fa:"\\f3bd"}.fa-hotjar{--fa:"\\f3b1"}.fa-bluetooth-b{--fa:"\\f294"}.fa-square-letterboxd{--fa:"\\e62e"}.fa-sticker-mule{--fa:"\\f3f7"}.fa-creative-commons-zero{--fa:"\\f4f3"}.fa-hips{--fa:"\\f452"}.fa-css{--fa:"\\e6a2"}.fa-behance{--fa:"\\f1b4"}.fa-reddit{--fa:"\\f1a1"}.fa-discord{--fa:"\\f392"}.fa-chrome{--fa:"\\f268"}.fa-app-store-ios{--fa:"\\f370"}.fa-cc-discover{--fa:"\\f1f2"}.fa-wpbeginner{--fa:"\\f297"}.fa-confluence{--fa:"\\f78d"}.fa-shoelace{--fa:"\\e60c"}.fa-mdb{--fa:"\\f8ca"}.fa-dochub{--fa:"\\f394"}.fa-accessible-icon{--fa:"\\f368"}.fa-ebay{--fa:"\\f4f4"}.fa-amazon{--fa:"\\f270"}.fa-unsplash{--fa:"\\e07c"}.fa-yarn{--fa:"\\f7e3"}.fa-square-steam,.fa-steam-square{--fa:"\\f1b7"}.fa-500px{--fa:"\\f26e"}.fa-square-vimeo,.fa-vimeo-square{--fa:"\\f194"}.fa-asymmetrik{--fa:"\\f372"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:"\\f2b4"}.fa-gratipay{--fa:"\\f184"}.fa-apple{--fa:"\\f179"}.fa-hive{--fa:"\\e07f"}.fa-gitkraken{--fa:"\\f3a6"}.fa-keybase{--fa:"\\f4f5"}.fa-apple-pay{--fa:"\\f415"}.fa-padlet{--fa:"\\e4a0"}.fa-amazon-pay{--fa:"\\f42c"}.fa-github-square,.fa-square-github{--fa:"\\f092"}.fa-stumbleupon{--fa:"\\f1a4"}.fa-fedex{--fa:"\\f797"}.fa-phoenix-framework{--fa:"\\f3dc"}.fa-shopify{--fa:"\\e057"}.fa-neos{--fa:"\\f612"}.fa-square-threads{--fa:"\\e619"}.fa-hackerrank{--fa:"\\f5f7"}.fa-researchgate{--fa:"\\f4f8"}.fa-swift{--fa:"\\f8e1"}.fa-angular{--fa:"\\f420"}.fa-speakap{--fa:"\\f3f3"}.fa-angrycreative{--fa:"\\f36e"}.fa-y-combinator{--fa:"\\f23b"}.fa-empire{--fa:"\\f1d1"}.fa-envira{--fa:"\\f299"}.fa-google-scholar{--fa:"\\e63b"}.fa-gitlab-square,.fa-square-gitlab{--fa:"\\e5ae"}.fa-studiovinari{--fa:"\\f3f8"}.fa-pied-piper{--fa:"\\f2ae"}.fa-wordpress{--fa:"\\f19a"}.fa-product-hunt{--fa:"\\f288"}.fa-firefox{--fa:"\\f269"}.fa-linode{--fa:"\\f2b8"}.fa-goodreads{--fa:"\\f3a8"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:"\\f264"}.fa-jsfiddle{--fa:"\\f1cc"}.fa-sith{--fa:"\\f512"}.fa-themeisle{--fa:"\\f2b2"}.fa-page4{--fa:"\\f3d7"}.fa-hashnode{--fa:"\\e499"}.fa-react{--fa:"\\f41b"}.fa-cc-paypal{--fa:"\\f1f4"}.fa-squarespace{--fa:"\\f5be"}.fa-cc-stripe{--fa:"\\f1f5"}.fa-creative-commons-share{--fa:"\\f4f2"}.fa-bitcoin{--fa:"\\f379"}.fa-keycdn{--fa:"\\f3ba"}.fa-opera{--fa:"\\f26a"}.fa-itch-io{--fa:"\\f83a"}.fa-umbraco{--fa:"\\f8e8"}.fa-galactic-senate{--fa:"\\f50d"}.fa-ubuntu{--fa:"\\f7df"}.fa-draft2digital{--fa:"\\f396"}.fa-stripe{--fa:"\\f429"}.fa-houzz{--fa:"\\f27c"}.fa-gg{--fa:"\\f260"}.fa-dhl{--fa:"\\f790"}.fa-pinterest-square,.fa-square-pinterest{--fa:"\\f0d3"}.fa-xing{--fa:"\\f168"}.fa-blackberry{--fa:"\\f37b"}.fa-creative-commons-pd{--fa:"\\f4ec"}.fa-playstation{--fa:"\\f3df"}.fa-quinscape{--fa:"\\f459"}.fa-less{--fa:"\\f41d"}.fa-blogger-b{--fa:"\\f37d"}.fa-opencart{--fa:"\\f23d"}.fa-vine{--fa:"\\f1ca"}.fa-signal-messenger{--fa:"\\e663"}.fa-paypal{--fa:"\\f1ed"}.fa-gitlab{--fa:"\\f296"}.fa-typo3{--fa:"\\f42b"}.fa-reddit-alien{--fa:"\\f281"}.fa-yahoo{--fa:"\\f19e"}.fa-dailymotion{--fa:"\\e052"}.fa-affiliatetheme{--fa:"\\f36b"}.fa-pied-piper-pp{--fa:"\\f1a7"}.fa-bootstrap{--fa:"\\f836"}.fa-odnoklassniki{--fa:"\\f263"}.fa-nfc-symbol{--fa:"\\e531"}.fa-mintbit{--fa:"\\e62f"}.fa-ethereum{--fa:"\\f42e"}.fa-speaker-deck{--fa:"\\f83c"}.fa-creative-commons-nc-eu{--fa:"\\f4e9"}.fa-patreon{--fa:"\\f3d9"}.fa-avianex{--fa:"\\f374"}.fa-ello{--fa:"\\f5f1"}.fa-gofore{--fa:"\\f3a7"}.fa-bimobject{--fa:"\\f378"}.fa-brave-reverse{--fa:"\\e63d"}.fa-facebook-f{--fa:"\\f39e"}.fa-google-plus-square,.fa-square-google-plus{--fa:"\\f0d4"}.fa-web-awesome{--fa:"\\e682"}.fa-mandalorian{--fa:"\\f50f"}.fa-first-order-alt{--fa:"\\f50a"}.fa-osi{--fa:"\\f41a"}.fa-google-wallet{--fa:"\\f1ee"}.fa-d-and-d-beyond{--fa:"\\f6ca"}.fa-periscope{--fa:"\\f3da"}.fa-fulcrum{--fa:"\\f50b"}.fa-cloudscale{--fa:"\\f383"}.fa-forumbee{--fa:"\\f211"}.fa-mizuni{--fa:"\\f3cc"}.fa-schlix{--fa:"\\f3ea"}.fa-square-xing,.fa-xing-square{--fa:"\\f169"}.fa-bandcamp{--fa:"\\f2d5"}.fa-wpforms{--fa:"\\f298"}.fa-cloudversify{--fa:"\\f385"}.fa-usps{--fa:"\\f7e1"}.fa-megaport{--fa:"\\f5a3"}.fa-magento{--fa:"\\f3c4"}.fa-spotify{--fa:"\\f1bc"}.fa-optin-monster{--fa:"\\f23c"}.fa-fly{--fa:"\\f417"}.fa-square-bluesky{--fa:"\\e6a3"}.fa-aviato{--fa:"\\f421"}.fa-itunes{--fa:"\\f3b4"}.fa-cuttlefish{--fa:"\\f38c"}.fa-blogger{--fa:"\\f37c"}.fa-flickr{--fa:"\\f16e"}.fa-viber{--fa:"\\f409"}.fa-soundcloud{--fa:"\\f1be"}.fa-digg{--fa:"\\f1a6"}.fa-tencent-weibo{--fa:"\\f1d5"}.fa-letterboxd{--fa:"\\e62d"}.fa-symfony{--fa:"\\f83d"}.fa-maxcdn{--fa:"\\f136"}.fa-etsy{--fa:"\\f2d7"}.fa-facebook-messenger{--fa:"\\f39f"}.fa-audible{--fa:"\\f373"}.fa-think-peaks{--fa:"\\f731"}.fa-bilibili{--fa:"\\e3d9"}.fa-erlang{--fa:"\\f39d"}.fa-x-twitter{--fa:"\\e61b"}.fa-cotton-bureau{--fa:"\\f89e"}.fa-dashcube{--fa:"\\f210"}.fa-42-group,.fa-innosoft{--fa:"\\e080"}.fa-stack-exchange{--fa:"\\f18d"}.fa-elementor{--fa:"\\f430"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:"\\e01e"}.fa-creative-commons-nd{--fa:"\\f4eb"}.fa-palfed{--fa:"\\f3d8"}.fa-superpowers{--fa:"\\f2dd"}.fa-resolving{--fa:"\\f3e7"}.fa-xbox{--fa:"\\f412"}.fa-square-web-awesome-stroke{--fa:"\\e684"}.fa-searchengin{--fa:"\\f3eb"}.fa-tiktok{--fa:"\\e07b"}.fa-facebook-square,.fa-square-facebook{--fa:"\\f082"}.fa-renren{--fa:"\\f18b"}.fa-linux{--fa:"\\f17c"}.fa-glide{--fa:"\\f2a5"}.fa-linkedin{--fa:"\\f08c"}.fa-hubspot{--fa:"\\f3b2"}.fa-deploydog{--fa:"\\f38e"}.fa-twitch{--fa:"\\f1e8"}.fa-flutter{--fa:"\\e694"}.fa-ravelry{--fa:"\\f2d9"}.fa-mixer{--fa:"\\e056"}.fa-lastfm-square,.fa-square-lastfm{--fa:"\\f203"}.fa-vimeo{--fa:"\\f40a"}.fa-mendeley{--fa:"\\f7b3"}.fa-uniregistry{--fa:"\\f404"}.fa-figma{--fa:"\\f799"}.fa-creative-commons-remix{--fa:"\\f4ee"}.fa-cc-amazon-pay{--fa:"\\f42d"}.fa-dropbox{--fa:"\\f16b"}.fa-instagram{--fa:"\\f16d"}.fa-cmplid{--fa:"\\e360"}.fa-upwork{--fa:"\\e641"}.fa-facebook{--fa:"\\f09a"}.fa-gripfire{--fa:"\\f3ac"}.fa-jedi-order{--fa:"\\f50e"}.fa-uikit{--fa:"\\f403"}.fa-fort-awesome-alt{--fa:"\\f3a3"}.fa-phabricator{--fa:"\\f3db"}.fa-ussunnah{--fa:"\\f407"}.fa-earlybirds{--fa:"\\f39a"}.fa-trade-federation{--fa:"\\f513"}.fa-autoprefixer{--fa:"\\f41c"}.fa-whatsapp{--fa:"\\f232"}.fa-square-upwork{--fa:"\\e67c"}.fa-slideshare{--fa:"\\f1e7"}.fa-google-play{--fa:"\\f3ab"}.fa-viadeo{--fa:"\\f2a9"}.fa-line{--fa:"\\f3c0"}.fa-google-drive{--fa:"\\f3aa"}.fa-servicestack{--fa:"\\f3ec"}.fa-simplybuilt{--fa:"\\f215"}.fa-bitbucket{--fa:"\\f171"}.fa-imdb{--fa:"\\f2d8"}.fa-deezer{--fa:"\\e077"}.fa-raspberry-pi{--fa:"\\f7bb"}.fa-jira{--fa:"\\f7b1"}.fa-docker{--fa:"\\f395"}.fa-screenpal{--fa:"\\e570"}.fa-bluetooth{--fa:"\\f293"}.fa-gitter{--fa:"\\f426"}.fa-d-and-d{--fa:"\\f38d"}.fa-microblog{--fa:"\\e01a"}.fa-cc-diners-club{--fa:"\\f24c"}.fa-gg-circle{--fa:"\\f261"}.fa-pied-piper-hat{--fa:"\\f4e5"}.fa-kickstarter-k{--fa:"\\f3bc"}.fa-yandex{--fa:"\\f413"}.fa-readme{--fa:"\\f4d5"}.fa-html5{--fa:"\\f13b"}.fa-sellsy{--fa:"\\f213"}.fa-square-web-awesome{--fa:"\\e683"}.fa-sass{--fa:"\\f41e"}.fa-wirsindhandwerk,.fa-wsh{--fa:"\\e2d0"}.fa-buromobelexperte{--fa:"\\f37f"}.fa-salesforce{--fa:"\\f83b"}.fa-octopus-deploy{--fa:"\\e082"}.fa-medapps{--fa:"\\f3c6"}.fa-ns8{--fa:"\\f3d5"}.fa-pinterest-p{--fa:"\\f231"}.fa-apper{--fa:"\\f371"}.fa-fort-awesome{--fa:"\\f286"}.fa-waze{--fa:"\\f83f"}.fa-bluesky{--fa:"\\e671"}.fa-cc-jcb{--fa:"\\f24b"}.fa-snapchat,.fa-snapchat-ghost{--fa:"\\f2ab"}.fa-fantasy-flight-games{--fa:"\\f6dc"}.fa-rust{--fa:"\\e07a"}.fa-wix{--fa:"\\f5cf"}.fa-behance-square,.fa-square-behance{--fa:"\\f1b5"}.fa-supple{--fa:"\\f3f9"}.fa-webflow{--fa:"\\e65c"}.fa-rebel{--fa:"\\f1d0"}.fa-css3{--fa:"\\f13c"}.fa-staylinked{--fa:"\\f3f5"}.fa-kaggle{--fa:"\\f5fa"}.fa-space-awesome{--fa:"\\e5ac"}.fa-deviantart{--fa:"\\f1bd"}.fa-cpanel{--fa:"\\f388"}.fa-goodreads-g{--fa:"\\f3a9"}.fa-git-square,.fa-square-git{--fa:"\\f1d2"}.fa-square-tumblr,.fa-tumblr-square{--fa:"\\f174"}.fa-trello{--fa:"\\f181"}.fa-creative-commons-nc-jp{--fa:"\\f4ea"}.fa-get-pocket{--fa:"\\f265"}.fa-perbyte{--fa:"\\e083"}.fa-grunt{--fa:"\\f3ad"}.fa-weebly{--fa:"\\f5cc"}.fa-connectdevelop{--fa:"\\f20e"}.fa-leanpub{--fa:"\\f212"}.fa-black-tie{--fa:"\\f27e"}.fa-themeco{--fa:"\\f5c6"}.fa-python{--fa:"\\f3e2"}.fa-android{--fa:"\\f17b"}.fa-bots{--fa:"\\e340"}.fa-free-code-camp{--fa:"\\f2c5"}.fa-hornbill{--fa:"\\f592"}.fa-js{--fa:"\\f3b8"}.fa-ideal{--fa:"\\e013"}.fa-git{--fa:"\\f1d3"}.fa-dev{--fa:"\\f6cc"}.fa-sketch{--fa:"\\f7c6"}.fa-yandex-international{--fa:"\\f414"}.fa-cc-amex{--fa:"\\f1f3"}.fa-uber{--fa:"\\f402"}.fa-github{--fa:"\\f09b"}.fa-php{--fa:"\\f457"}.fa-alipay{--fa:"\\f642"}.fa-youtube{--fa:"\\f167"}.fa-skyatlas{--fa:"\\f216"}.fa-firefox-browser{--fa:"\\e007"}.fa-replyd{--fa:"\\f3e6"}.fa-suse{--fa:"\\f7d6"}.fa-jenkins{--fa:"\\f3b6"}.fa-twitter{--fa:"\\f099"}.fa-rockrms{--fa:"\\f3e9"}.fa-pinterest{--fa:"\\f0d2"}.fa-buffer{--fa:"\\f837"}.fa-npm{--fa:"\\f3d4"}.fa-yammer{--fa:"\\f840"}.fa-btc{--fa:"\\f15a"}.fa-dribbble{--fa:"\\f17d"}.fa-stumbleupon-circle{--fa:"\\f1a3"}.fa-internet-explorer{--fa:"\\f26b"}.fa-stubber{--fa:"\\e5c7"}.fa-telegram,.fa-telegram-plane{--fa:"\\f2c6"}.fa-old-republic{--fa:"\\f510"}.fa-odysee{--fa:"\\e5c6"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:"\\f40c"}.fa-node-js{--fa:"\\f3d3"}.fa-edge-legacy{--fa:"\\e078"}.fa-slack,.fa-slack-hash{--fa:"\\f198"}.fa-medrt{--fa:"\\f3c8"}.fa-usb{--fa:"\\f287"}.fa-tumblr{--fa:"\\f173"}.fa-vaadin{--fa:"\\f408"}.fa-quora{--fa:"\\f2c4"}.fa-square-x-twitter{--fa:"\\e61a"}.fa-reacteurope{--fa:"\\f75d"}.fa-medium,.fa-medium-m{--fa:"\\f23a"}.fa-amilia{--fa:"\\f36d"}.fa-mixcloud{--fa:"\\f289"}.fa-flipboard{--fa:"\\f44d"}.fa-viacoin{--fa:"\\f237"}.fa-critical-role{--fa:"\\f6c9"}.fa-sitrox{--fa:"\\e44a"}.fa-discourse{--fa:"\\f393"}.fa-joomla{--fa:"\\f1aa"}.fa-mastodon{--fa:"\\f4f6"}.fa-airbnb{--fa:"\\f834"}.fa-wolf-pack-battalion{--fa:"\\f514"}.fa-buy-n-large{--fa:"\\f8a6"}.fa-gulp{--fa:"\\f3ae"}.fa-creative-commons-sampling-plus{--fa:"\\f4f1"}.fa-strava{--fa:"\\f428"}.fa-ember{--fa:"\\f423"}.fa-canadian-maple-leaf{--fa:"\\f785"}.fa-teamspeak{--fa:"\\f4f9"}.fa-pushed{--fa:"\\f3e1"}.fa-wordpress-simple{--fa:"\\f411"}.fa-nutritionix{--fa:"\\f3d6"}.fa-wodu{--fa:"\\e088"}.fa-google-pay{--fa:"\\e079"}.fa-intercom{--fa:"\\f7af"}.fa-zhihu{--fa:"\\f63f"}.fa-korvue{--fa:"\\f42f"}.fa-pix{--fa:"\\e43a"}.fa-steam-symbol{--fa:"\\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}.button{display:flex;height:50px;padding:0;background:#3e7671;border:none;outline:none;border-radius:5px;overflow:hidden;font-size:16px;font-weight:500;cursor:pointer;min-width:220px;max-width:220px}.button:hover{background:#008168}.button:active{background:#3e7671}.button-text{display:block;margin:auto;padding:0 10px;color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:50%;text-transform:capitalize}.button-icon{margin:auto;padding:10px;font-size:20px;color:#ffffff}.button-profile{margin:auto}.button-profile svg{display:flex;margin-left:4px;background-color:#fff;border-radius:4px}.profile-image{display:flex;margin-left:4px;width:40px;height:40px;border-radius:4px;background-color:#fff}.button-text-full-width{width:auto!important}.button-link{text-decoration:none!important}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;right:0;background-color:#f9f9f9;min-width:180px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;border-radius:5px;text-align:left!important}.dropdown-content-link a{color:#71797E;padding:16px 20px;text-decoration:none;display:block;cursor:pointer;font-size:1rem!important}.dropdown-content-link a:hover{background-color:#f1f1f1;color:#000;opacity:0.7}.dropdown:hover .dropdown-content{display:block}.modal{display:none;position:fixed;z-index:1;padding-top:100px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4);text-align:center}.modal-content{background-color:#fefefe;margin:auto;padding:20px;border:1px solid #888;width:40%}.modal-body{max-height:50vh;overflow-y:auto}.close{color:#aaaaaa;float:right;font-size:28px;font-weight:bold}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.modal-app{background-color:#c3e9bc;padding:15px;margin:10px;border-radius:5px}.external-app-link{text-decoration:none;color:#000}.gray-text{color:#606060}.green-text{color:#3e7671}#countdown{position:relative;margin:auto;margin-top:30px;height:40px;width:40px;text-align:center}#countdown-number{color:#2e2e2e;display:inline-block;line-height:40px}#countdown svg{position:absolute;top:0;right:0;width:40px;height:40px;transform:rotateY(-180deg) rotateZ(-90deg)}#countdown svg circle{stroke-dasharray:113px;stroke-dashoffset:0px;stroke-linecap:round;stroke-width:4px;stroke:#008168;fill:none;animation:countdown 6s linear infinite forwards}@keyframes countdown{from{stroke-dashoffset:0px}to{stroke-dashoffset:113px}}.lds-ring{color:#fff}.lds-ring{display:flex;justify-content:center;align-items:center;margin:auto;position:relative}.lds-ring div{box-sizing:border-box;display:block;position:absolute;width:25px;height:25px;margin:3px;border:2px solid currentColor;border-radius:50%;animation:lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;border-color:currentColor transparent transparent transparent}.lds-ring div:nth-child(1){animation-delay:-0.45s}.lds-ring div:nth-child(2){animation-delay:-0.3s}.lds-ring div:nth-child(3){animation-delay:-0.15s}@keyframes lds-ring{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.dropdown-content .dropdown-user-profile{padding:12px 10px 8px 18px;border-bottom:1px solid #aaaaaa}.dropdown-content .dropdown-user-profile .username{font-size:16px;color:#2e2e2e;text-transform:capitalize}.dropdown-content .dropdown-user-profile .first-last-name{font-size:13px;color:#606060}.menu-bar-icons{color:#008168;display:inline-block;margin-right:8px;font-size:18px}.other-links-list{padding:14px;background-color:#f1f1f1;margin-bottom:8px;text-align:start;border-radius:5px}.tab-list{margin:0px 40px;padding:0;list-style:none;display:flex;position:relative;width:85%;border-bottom:1px solid #aaa}.tab-item{flex:1;text-align:center;transition:.3s;opacity:0.5}.tab-toggle{display:none}.tab-content{display:none}.tab-toggle:nth-child(1):checked~.tab-list .tab-item:nth-child(1),.tab-toggle:nth-child(2):checked~.tab-list .tab-item:nth-child(2){opacity:1;color:#008168;border-bottom:2px solid #008168}.tab-toggle:nth-child(2):checked~.tab-list::before{transform:translateX(100%)}.tab-toggle:nth-child(3):checked~.tab-list::before{transform:translateX(200%)}.tab-toggle:nth-child(1):checked~.tab-container .tab-content:nth-child(1),.tab-toggle:nth-child(2):checked~.tab-container .tab-content:nth-child(2){display:block}.tab-trigger{display:block;padding:10px 0}.tab-container{padding:15px 30px}.grid-view-menu{display:grid;gap:4px;grid-template-columns:repeat(3, 1fr);align-content:start;padding:8px;max-height:230px;overflow-y:auto}.grid-view-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:75px;height:70px;padding:6px;text-decoration:none;font-size:13px;color:#128f8b;text-align:center;transition:transform 0.2s ease, background-color 0.1s ease;position:relative;z-index:1;border-radius:3px;cursor:pointer}.grid-view-link:hover{background-color:#eeeeee;transform:scale(1.1);z-index:5}.grid-view-link-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#71797e;width:100%}.grid-view-link:hover .grid-view-link-text{white-space:pre-wrap;overflow:visible;text-overflow:unset}.grid-view-link i{transition:transform 0.2s ease}.grid-view-link:hover i{transform:scale(1.1)}hr.solid{border-top:1px solid #bbb;margin:2px 0}.restricted-overlay{position:fixed;inset:0;background:linear-gradient(135deg, #0f3d3e, #128f8b);display:flex;justify-content:center;align-items:center;padding:20px;z-index:9999999;font-family:"Segoe UI", sans-serif}.restricted-card{background:#ffffff;border-radius:10px;padding:50px;max-width:540px;width:100%;text-align:center;box-shadow:0 25px 70px rgba(0, 0, 0, 0.25);animation:fadeInUp 0.3s ease}.restricted-icon{font-size:48px;color:#128f8b;margin-bottom:30px}.restricted-card h2{margin-bottom:10px;color:#128f8b}.restricted-message{color:#555;font-size:16px;margin-bottom:30px;line-height:1.5}.restricted-links h4{margin-bottom:20px;color:#128f8b}.link-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(120px, 1fr));gap:20px;margin-bottom:25px}.restricted-link{background:#ecf2f2;padding:10px;border-radius:10px;text-decoration:none;color:#128f8b;font-size:13px;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all 0.2s ease}.restricted-link:hover{background:#128f8b;color:#fff}.restricted-actions{display:flex;justify-content:center;gap:15px}.btn-primary{background:#128f8b;color:#fff;padding:10px 20px;border-radius:8px;text-decoration:none;font-weight:500;transition:0.2s}.btn-primary:hover{background:#0f6e6b}.btn-secondary{background:transparent;border:2px solid #128f8b;color:#128f8b;padding:8px 18px;border-radius:8px;cursor:pointer;transition:0.2s}.btn-danger{background:transparent;border:2px solid #dc3545;color:#dc3545;padding:8px 18px;border-radius:8px;cursor:pointer;transition:0.2s}.btn-secondary:hover{background:#128f8b;color:#fff}@keyframes fadeInUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}`;
|
|
4004
4062
|
|
|
4005
4063
|
const DashButtonComponent = class {
|
|
4006
4064
|
constructor(hostRef) {
|
|
4007
4065
|
index.registerInstance(this, hostRef);
|
|
4008
4066
|
this.showPostLoginText = false;
|
|
4009
4067
|
this.silentCheckSso = false;
|
|
4010
|
-
this.redirectUri = undefined;
|
|
4011
4068
|
this.authMethod = "check-sso";
|
|
4012
4069
|
this.portalApiUrl = "";
|
|
4013
4070
|
this.plmUrl = "https://productlicensemanager-zdzw.cloud.zdzw-project.com";
|
|
4014
4071
|
this.showUnauthorizedModal = false;
|
|
4015
4072
|
this.primaryColor = "";
|
|
4016
4073
|
this.accentColor = "";
|
|
4074
|
+
this.notificationPosition = "left";
|
|
4017
4075
|
this.keycloak = null;
|
|
4018
4076
|
this.isAuth = false;
|
|
4019
4077
|
this.givenUserName = "";
|
|
4020
4078
|
this.silentCheckSsoRedirectUri = window.location.origin + '/assets/verificar-sso.html';
|
|
4021
4079
|
this.appList = [];
|
|
4022
|
-
this.avatarSvg =
|
|
4080
|
+
this.avatarSvg = jdenticonModuleExports.toSvg("init-avatar", 40);
|
|
4023
4081
|
this.isLoading = false;
|
|
4024
|
-
this.config = undefined;
|
|
4025
|
-
this.localMenuLinks = undefined;
|
|
4026
|
-
this.organizationUrl = undefined;
|
|
4027
4082
|
this.isRestricted = false;
|
|
4028
4083
|
}
|
|
4084
|
+
componentDidLoad() {
|
|
4085
|
+
// Add a click listener to this specific component instance
|
|
4086
|
+
this.el.addEventListener('click', (event) => {
|
|
4087
|
+
const path = event.composedPath();
|
|
4088
|
+
// Ensure this click originated from inside the notification module
|
|
4089
|
+
const isInsideNotification = path.some((target) => target && target.tagName === 'NOTIFICATION-COMPONENT');
|
|
4090
|
+
// If the click is outside the notification module (e.g., somewhere else in dash-button), exit early
|
|
4091
|
+
if (!isInsideNotification) {
|
|
4092
|
+
return;
|
|
4093
|
+
}
|
|
4094
|
+
// 2. Identify the specific link element inside the path array
|
|
4095
|
+
const clickedLink = path.find((target) => target && (target.tagName === 'A' || (typeof target.hasAttribute === 'function' && target.hasAttribute('href'))));
|
|
4096
|
+
if (clickedLink) {
|
|
4097
|
+
const destinationUrl = clickedLink.getAttribute('href');
|
|
4098
|
+
if (destinationUrl) {
|
|
4099
|
+
// Prevent the default behavior ONLY for the notification component links
|
|
4100
|
+
event.preventDefault();
|
|
4101
|
+
event.stopPropagation();
|
|
4102
|
+
// Check if the link contains the unique class name
|
|
4103
|
+
const isHomeIconLink = clickedLink.classList.contains('button-link');
|
|
4104
|
+
if (isHomeIconLink) {
|
|
4105
|
+
console.log('Notification module home link intercepted. Opening in new tab:', destinationUrl);
|
|
4106
|
+
window.open(destinationUrl, '_blank', 'noopener,noreferrer');
|
|
4107
|
+
}
|
|
4108
|
+
else {
|
|
4109
|
+
console.log('Notification module standard link intercepted. Navigating in current view:', destinationUrl);
|
|
4110
|
+
window.location.href = destinationUrl;
|
|
4111
|
+
}
|
|
4112
|
+
}
|
|
4113
|
+
}
|
|
4114
|
+
});
|
|
4115
|
+
}
|
|
4029
4116
|
async componentWillLoad() {
|
|
4030
4117
|
var _a, _b, _c, _d;
|
|
4031
4118
|
// Fetch config from API
|
|
@@ -4068,16 +4155,17 @@ const DashButtonComponent = class {
|
|
|
4068
4155
|
onLoad: this.authMethod,
|
|
4069
4156
|
checkLoginIframe: false,
|
|
4070
4157
|
silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',
|
|
4071
|
-
}).then(res => {
|
|
4158
|
+
}).then((res) => {
|
|
4159
|
+
var _a, _b, _c;
|
|
4072
4160
|
if (res) {
|
|
4073
4161
|
this.isAuth = true;
|
|
4074
4162
|
localStorage.setItem("keycloak", JSON.stringify(this.keycloak));
|
|
4075
4163
|
// document.cookie = "DASH_BTN=" + JSON.parse(localStorage.getItem('keycloak')).token;
|
|
4076
|
-
document.cookie = this.config.cookieName + "=" + JSON.parse(localStorage.getItem('keycloak')).token;
|
|
4164
|
+
document.cookie = this.config.cookieName + "=" + JSON.parse((_a = localStorage.getItem('keycloak')) !== null && _a !== void 0 ? _a : '{}').token;
|
|
4077
4165
|
// Set userName
|
|
4078
|
-
this.givenUserName = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.preferred_username;
|
|
4166
|
+
this.givenUserName = JSON.parse((_b = localStorage.getItem('keycloak')) !== null && _b !== void 0 ? _b : '{}').idTokenParsed.preferred_username;
|
|
4079
4167
|
// Set user avatar
|
|
4080
|
-
this.avatarSvg =
|
|
4168
|
+
this.avatarSvg = jdenticonModuleExports.toSvg(JSON.parse((_c = localStorage.getItem('keycloak')) !== null && _c !== void 0 ? _c : '{}').idTokenParsed.sub, 40);
|
|
4081
4169
|
}
|
|
4082
4170
|
});
|
|
4083
4171
|
}
|
|
@@ -4108,27 +4196,44 @@ const DashButtonComponent = class {
|
|
|
4108
4196
|
}
|
|
4109
4197
|
}
|
|
4110
4198
|
}
|
|
4199
|
+
// First, check global links
|
|
4200
|
+
// Then, check the token's organization URL
|
|
4201
|
+
// Finally, check against dashbutton configuration: allowedGlobalDomain and whitelistedUrls
|
|
4111
4202
|
validateAppAccessByUrl() {
|
|
4112
|
-
var _a, _b, _c, _d;
|
|
4113
|
-
const
|
|
4114
|
-
const
|
|
4203
|
+
var _a, _b, _c, _d, _e, _f;
|
|
4204
|
+
const normalizeUrl = (url) => url.replace(/\/+$/, '');
|
|
4205
|
+
const currentUrl = normalizeUrl(window.location.href);
|
|
4206
|
+
const currentOrigin = normalizeUrl(window.location.origin);
|
|
4115
4207
|
const globalLinks = ((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.menu) === null || _b === void 0 ? void 0 : _b.global) === null || _c === void 0 ? void 0 : _c.links) || [];
|
|
4116
|
-
|
|
4208
|
+
const allowedGlobalDomain = ((_d = this.config) === null || _d === void 0 ? void 0 : _d.allowedGlobalDomain) || '';
|
|
4209
|
+
const whitelistedUrls = ((_e = this.config) === null || _e === void 0 ? void 0 : _e.whitelistedUrls) || '';
|
|
4210
|
+
// First, check global links
|
|
4117
4211
|
const matchGlobal = globalLinks.some(link => {
|
|
4118
4212
|
try {
|
|
4119
|
-
const linkOrigin = new URL(link.url).origin;
|
|
4213
|
+
const linkOrigin = normalizeUrl(new URL(link.url).origin);
|
|
4120
4214
|
return currentOrigin === linkOrigin;
|
|
4121
4215
|
}
|
|
4122
4216
|
catch (_a) {
|
|
4123
4217
|
return false;
|
|
4124
4218
|
}
|
|
4125
4219
|
});
|
|
4126
|
-
//
|
|
4127
|
-
const tokenParsed = (
|
|
4220
|
+
// Then check the token organization URL
|
|
4221
|
+
const tokenParsed = (_f = this.keycloak) === null || _f === void 0 ? void 0 : _f.tokenParsed;
|
|
4128
4222
|
const allowedOrg = tokenParsed === null || tokenParsed === void 0 ? void 0 : tokenParsed.organizationUrl;
|
|
4129
|
-
const matchOrganization = allowedOrg && currentUrl.includes(allowedOrg);
|
|
4130
|
-
//
|
|
4131
|
-
const
|
|
4223
|
+
const matchOrganization = allowedOrg && currentUrl.includes(normalizeUrl(allowedOrg));
|
|
4224
|
+
// Check allowedGlobalDomain (single domain)
|
|
4225
|
+
const matchAllowedDomain = allowedGlobalDomain &&
|
|
4226
|
+
currentOrigin.includes(normalizeUrl(allowedGlobalDomain));
|
|
4227
|
+
// Check whitelistedUrls (comma-separated string)
|
|
4228
|
+
const whitelistedArray = whitelistedUrls
|
|
4229
|
+
? whitelistedUrls.split(',').map(url => normalizeUrl(url.trim()))
|
|
4230
|
+
: [];
|
|
4231
|
+
const matchWhitelisted = whitelistedArray.some(url => currentUrl.includes(url));
|
|
4232
|
+
// Final validation
|
|
4233
|
+
const isAllowed = matchGlobal ||
|
|
4234
|
+
matchOrganization ||
|
|
4235
|
+
matchAllowedDomain ||
|
|
4236
|
+
matchWhitelisted;
|
|
4132
4237
|
this.isRestricted = !isAllowed;
|
|
4133
4238
|
}
|
|
4134
4239
|
login() {
|
|
@@ -4148,10 +4253,20 @@ const DashButtonComponent = class {
|
|
|
4148
4253
|
const appModal = this.el.shadowRoot.querySelector('#appListModal');
|
|
4149
4254
|
appModal.style.display = "none";
|
|
4150
4255
|
}
|
|
4256
|
+
renderNotificationComponent() {
|
|
4257
|
+
var _a;
|
|
4258
|
+
const token = (_a = this.keycloak) === null || _a === void 0 ? void 0 : _a.idTokenParsed;
|
|
4259
|
+
const owner = (token === null || token === void 0 ? void 0 : token.preferred_username) || (token === null || token === void 0 ? void 0 : token.sub) || '';
|
|
4260
|
+
const orgUrlRaw = (token === null || token === void 0 ? void 0 : token.organizationUrl) || '';
|
|
4261
|
+
const orgHost = orgUrlRaw
|
|
4262
|
+
? new URL(orgUrlRaw.startsWith('http') ? orgUrlRaw : `https://${orgUrlRaw}`).hostname
|
|
4263
|
+
: '';
|
|
4264
|
+
return orgHost && owner ? (index.h("notification-component", { owner: owner, "max-records": 10, "display-type": "icon", "notification-url": `https://notifications.${orgHost}/notifications-api`, "socket-connect": true, "socket-url": `wss://repository.${orgHost}/socket`, "list-url": `https://notifications.${orgHost}/notifications` })) : null;
|
|
4265
|
+
}
|
|
4151
4266
|
render() {
|
|
4152
4267
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
4153
|
-
return index.h("div", { key: '
|
|
4154
|
-
var _a, _b, _c, _d, _e, _f;
|
|
4268
|
+
return index.h("div", { key: '6c2ac818d23abd54b4548eb41c7536f2609356e9' }, index.h("div", { key: '1009063ae416ebba5624b67468c5711421e2aff8' }, (() => {
|
|
4269
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
4155
4270
|
// GLOBAL LOADING SPINNER
|
|
4156
4271
|
if (this.isLoading) {
|
|
4157
4272
|
return (index.h("a", { id: "login-btn", class: "button button-link" }, index.h("div", { class: "lds-ring" }, index.h("div", null), index.h("div", null), index.h("div", null), index.h("div", null))));
|
|
@@ -4163,21 +4278,23 @@ const DashButtonComponent = class {
|
|
|
4163
4278
|
return (index.h("a", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, href: this.redirectUri, id: "login-btn", class: "button button-link" }, index.h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, class: "button-text button-text-full-width" }, "Go to Dashboard")));
|
|
4164
4279
|
}
|
|
4165
4280
|
else if (this.isAuth) {
|
|
4166
|
-
return (index.h("div", { id: "profile-btn", class: "dropdown" }, index.h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, type: "button", class: "button" }, index.h("span", { class: "button-profile" }, JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.imageUrl ?
|
|
4281
|
+
return (index.h("div", { class: "profile-actions", style: { display: "inline-flex", alignItems: "center", gap: "15px" } }, this.notificationPosition !== "right" && this.renderNotificationComponent(), index.h("div", { id: "profile-btn", class: "dropdown" }, index.h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, type: "button", class: "button" }, index.h("span", { class: "button-profile" }, JSON.parse((_g = localStorage.getItem('keycloak')) !== null && _g !== void 0 ? _g : '{}').idTokenParsed.imageUrl ?
|
|
4167
4282
|
index.h("img", { class: "profile-image", src: "https://s-damith.github.io/test-avatar/images/e24da9c5-0b1f-46fa-82cd-7c711c77b5c7.png" })
|
|
4168
4283
|
:
|
|
4169
|
-
index.h("div", { innerHTML: this.avatarSvg })), index.h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, id: "given-name", class: "button-text" }, this.givenUserName), index.h("div", { class: "button-icon" }, (this.config.menuViewType == "grid") ? index.h("i", { class: "fa-solid fa-grip-vertical" }) : index.h("i", { class: "fa-solid fa-bars" }))), index.h("div", { class: "dropdown-content" }, index.h("div", { class: "dropdown-user-profile" }, index.h("div", { class: "username" }, "@", this.givenUserName), index.h("div", { class: "first-last-name" }, JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.name)), (this.config.menuViewType == "grid") ? (index.h("div", null, index.h("div", { class: "grid-view-menu" }, this.config.menu.global.links.map(item => {
|
|
4284
|
+
index.h("div", { innerHTML: this.avatarSvg })), index.h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, id: "given-name", class: "button-text" }, this.givenUserName), index.h("div", { class: "button-icon" }, (this.config.menuViewType == "grid") ? index.h("i", { class: "fa-solid fa-grip-vertical" }) : index.h("i", { class: "fa-solid fa-bars" }))), index.h("div", { class: "dropdown-content" }, index.h("div", { class: "dropdown-user-profile" }, index.h("div", { class: "username" }, "@", this.givenUserName), index.h("div", { class: "first-last-name" }, JSON.parse((_h = localStorage.getItem('keycloak')) !== null && _h !== void 0 ? _h : '{}').idTokenParsed.name)), (this.config.menuViewType == "grid") ? (index.h("div", null, index.h("div", { class: "grid-view-menu" }, this.config.menu.global.links.map(item => {
|
|
4170
4285
|
return (index.h("a", { href: item.url, target: '_blank', class: "grid-view-link" }, index.h("i", { class: item.icon + " fa-2x" }), index.h("div", { class: "grid-view-link-text" }, item.name)));
|
|
4171
|
-
})), this.config.menu.global.links.length != 0 && index.h("hr", { class: "solid" }), index.h("div", { class: "grid-view-menu", style: this.config.menu.global.links.length
|
|
4286
|
+
})), this.config.menu.global.links.length != 0 && index.h("hr", { class: "solid" }), index.h("div", { class: "grid-view-menu", style: this.config.menu.global.links.length === 0
|
|
4287
|
+
? { marginBottom: '12px' }
|
|
4288
|
+
: undefined }, index.h("a", { onClick: this.showModal.bind(this), class: "grid-view-link" }, index.h("i", { class: "fa-regular fa-window-restore fa-2x" }), index.h("div", { class: "grid-view-link-text" }, "Modules")), index.h("a", { href: this.config.defaultLink.url, target: '_blank', class: "grid-view-link" }, index.h("i", { class: "fa-solid fa-globe fa-2x" }), index.h("div", { class: "grid-view-link-text" }, this.config.defaultLink.name)), index.h("a", { onClick: this.logout.bind(this), class: "grid-view-link" }, index.h("i", { class: "fa-solid fa-right-from-bracket fa-2x" }), index.h("div", { class: "grid-view-link-text" }, "Logout"))))) : (
|
|
4172
4289
|
// List View
|
|
4173
4290
|
index.h("div", { class: "dropdown-content-link" }, this.config.menu.global.links.map(item => {
|
|
4174
4291
|
return (index.h("a", { href: item.url, target: '_blank', id: "applications-btn" }, index.h("i", { class: item.icon + " menu-bar-icons" }), item.name));
|
|
4175
|
-
}), index.h("a", { onClick: this.showModal.bind(this), id: "applications-btn" }, index.h("i", { class: "fa-regular fa-window-restore menu-bar-icons" }), "Modules"), index.h("a", { href: this.config.defaultLink.url, target: '_blank', id: "applications-btn" }, index.h("i", { class: "fa-solid fa-globe menu-bar-icons" }), this.config.defaultLink.name), index.h("a", { onClick: this.logout.bind(this), id: "logout-btn" }, index.h("i", { class: "fa-solid fa-right-from-bracket menu-bar-icons" }), "Logout"))))));
|
|
4292
|
+
}), index.h("a", { onClick: this.showModal.bind(this), id: "applications-btn" }, index.h("i", { class: "fa-regular fa-window-restore menu-bar-icons" }), "Modules"), index.h("a", { href: this.config.defaultLink.url, target: '_blank', id: "applications-btn" }, index.h("i", { class: "fa-solid fa-globe menu-bar-icons" }), this.config.defaultLink.name), index.h("a", { onClick: this.logout.bind(this), id: "logout-btn" }, index.h("i", { class: "fa-solid fa-right-from-bracket menu-bar-icons" }), "Logout"))))), this.notificationPosition === "right" && this.renderNotificationComponent()));
|
|
4176
4293
|
}
|
|
4177
4294
|
else {
|
|
4178
4295
|
return (index.h("button", { style: { background: this.primaryColor != undefined ? this.primaryColor : "" }, onClick: this.login.bind(this), id: "login-btn", type: "button", class: "button" }, index.h("span", { style: { color: this.accentColor != undefined ? this.accentColor : "" }, class: "button-text" }, "Login")));
|
|
4179
4296
|
}
|
|
4180
|
-
})()), index.h("div", { key: '
|
|
4297
|
+
})()), index.h("div", { key: '051c1ac1086683050a19e713ee92c84dbd95cf31', id: "appListModal", class: "modal" }, index.h("div", { key: '0233801fbaec4a37c840039e531b775e5d5aa0f0', class: "modal-content" }, index.h("span", { key: '593cd28e612ec14e620bc54b341c68245385d3d1', onClick: this.closeModal.bind(this), class: "close" }, "\u00D7"), index.h("div", { key: '7d2c59e86c7a044136c7ad1962c35f34ac994d9b', class: "box" }, index.h("input", { key: '7d081171cb9858947fbe049dff08fabc1fe76655', type: "radio", class: "tab-toggle", name: "tab-toggle", id: "tab1", checked: true }), index.h("ul", { key: 'ffa4ab2f57ac98ef9097f2f609a9c8b020476cc3', class: "tab-list" }, index.h("li", { key: '3f37fda895caa295c7cbea584deac6c7a9ad780f', class: "tab-item" }, index.h("label", { key: '60b4e3a4b99b26b43df9f806ff9a374e2fe4047d', class: "tab-trigger", htmlFor: "tab1" }, index.h("i", { key: 'cb0d59237ff0f70544a6bb255b8048cde7fe0e9b', class: "fa-solid fa-table-list menu-bar-icons" }), " ", this.config.menu.local.name))), index.h("div", { key: 'f430fc9079ac64f3b857c4c4c47b408b1121f751', class: "tab-container" }, index.h("div", { key: 'e0db3bbf88afb5da03ec95332beb3a4700e51a65', class: "tab-content" }, index.h("div", { key: '12340dceb0bc90990593852ca1e62f27fffb4671', class: "modal-body" }, !((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.menu) === null || _b === void 0 ? void 0 : _b.local) === null || _c === void 0 ? void 0 : _c.enableCustomLocalMenu) ? (
|
|
4181
4298
|
// <div>{this.localMenuLinks}</div>
|
|
4182
4299
|
(_d = this.localMenuLinks) === null || _d === void 0 ? void 0 : _d.map((app, index$1) => {
|
|
4183
4300
|
const isDisabled = !app.url;
|
|
@@ -4185,14 +4302,12 @@ const DashButtonComponent = class {
|
|
|
4185
4302
|
})) : ((_e = this.config.menu.local.links) === null || _e === void 0 ? void 0 : _e.map((app, index$1) => (index.h("a", { key: index$1, class: "external-app-link", target: "_blank", rel: "noopener noreferrer", href: app.url }, index.h("div", { class: "modal-app" }, index.h("div", null, app.name)))))), !this.organizationUrl ? (index.h("div", null, index.h("h3", { class: "gray-text" }, "Organization Domain URL not set"), index.h("p", { class: "gray-text" }, "Please set your Organization Domain URL on the Portal profile page."))) : (((!((_h = (_g = (_f = this.config) === null || _f === void 0 ? void 0 : _f.menu) === null || _g === void 0 ? void 0 : _g.local) === null || _h === void 0 ? void 0 : _h.enableCustomLocalMenu) &&
|
|
4186
4303
|
((_k = (_j = this.localMenuLinks) === null || _j === void 0 ? void 0 : _j.length) !== null && _k !== void 0 ? _k : 0) === 0) ||
|
|
4187
4304
|
(((_o = (_m = (_l = this.config) === null || _l === void 0 ? void 0 : _l.menu) === null || _m === void 0 ? void 0 : _m.local) === null || _o === void 0 ? void 0 : _o.enableCustomLocalMenu) &&
|
|
4188
|
-
((_t = (_s = (_r = (_q = (_p = this.config) === null || _p === void 0 ? void 0 : _p.menu) === null || _q === void 0 ? void 0 : _q.local) === null || _r === void 0 ? void 0 : _r.links) === null || _s === void 0 ? void 0 : _s.length) !== null && _t !== void 0 ? _t : 0) === 0)) && (index.h("div", null, index.h("h3", { class: "gray-text" }, "No installed ", ((_w = (_v = (_u = this.config) === null || _u === void 0 ? void 0 : _u.menu) === null || _v === void 0 ? void 0 : _v.local) === null || _w === void 0 ? void 0 : _w.name) || "menu", " found."), index.h("p", { class: "gray-text" }, "Please contact administration.")))))))))), index.h("div", { key: '
|
|
4305
|
+
((_t = (_s = (_r = (_q = (_p = this.config) === null || _p === void 0 ? void 0 : _p.menu) === null || _q === void 0 ? void 0 : _q.local) === null || _r === void 0 ? void 0 : _r.links) === null || _s === void 0 ? void 0 : _s.length) !== null && _t !== void 0 ? _t : 0) === 0)) && (index.h("div", null, index.h("h3", { class: "gray-text" }, "No installed ", ((_w = (_v = (_u = this.config) === null || _u === void 0 ? void 0 : _u.menu) === null || _v === void 0 ? void 0 : _v.local) === null || _w === void 0 ? void 0 : _w.name) || "menu", " found."), index.h("p", { class: "gray-text" }, "Please contact administration.")))))))))), index.h("div", { key: '515bb25f527f3d7a6e0499c2ceb55265afcfa829', id: "appPermissionErrorModal", class: "modal" }, index.h("div", { key: '4127074cd4e5b207b8699aa59e80ca9c3bd95811', class: "modal-content" }, index.h("img", { key: '938f69e927df06b10a9a43a9e6b9d51729773d74', src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGD0lEQVR4nO2cbU8TWRTH/W5WEAmF4nNiieFFoeBjYhQUWzUWYkpbDfGFCR9CoolvQF9aWgG3kMCG8LACC1ikuCuUh7bH/M/MmW131S2ZqTDjPcmkdub2tvPj3HP/55yJR44oU6ZMmTJlyg7YOsL9pI7+shkogGFzDqMAhhVAOsiQozwwrACS8sCwfXd+tYTDCiApDwwf/FJUSzisAJKjNhFlPzYF0KQpgCZNATRpCqBJUwBNmgJo0hRAk6YAmjQF0KkAs4uLtPz8OU2HQpRqaaFkQwPFq6v5SHo8fA7XVgYGKLu0dGC/81ABLORylB4cpInLl+nt0aP7OiauXKH00BAV8vlfE2AmkaCxpiYDSKK6mqaammjx+nX6FAzS348e0VYkwgf+jXO4Nun18lj53PuLF2kjmfx1AOa3t2mmt9cAkDxxghauXaPN3l7KxmJlHRgLmKNutzHPTCTCczsa4G4mQ6nWVr7h4WPHaL6trQTc+r17NOf30/iZMzTmdtNwVRWPA2Scm/H56FMgQNlolMfDO/9ob+cxmDPl99PuxoYzAe5mMrzcxOvWAALgolFauXmTxurry45/gPvnjRsG+LW7d3lOWdKVhHggAPPb24bnvW9ooL96evjGP4dC9NvJkwaY0fPnaa6vjzLJJG19+ED5bJY/u5NOUyYep/lnz2jk3Ll/4p/Hw/B4ru5unls8Mb+z4xyAM3rMg5cIvHRXFyVqavg8oKy+elXWjooxqy9f0luXy5gTm4xAFE+cjcWcATCTSGgxr6rKWLaAF9fj1u+BAOW2tsqeL7+7S5OdnRq8mhpaf/CA5xSI8EiJiRsjI/YGWMjlDKmCDUOWrXje3NOnRIWCaXh45biqL+f59nYjHlqtE38qwPTgoLHMeLeNRo2YB8+zEp7ExK1olI+Rujo+t/b6tX0BTugZBnQebha7rcQ8K5Ytw9O9WWKi7M7QiZKx2BJgdnHRyDDE+0SqYMOwEt7k7dvaxqJLHHwXvpMzFpeLtpeX7QdwZWCAbwjpmYhkkSrlxqVy4WEc4q1IHBbbsRhNXrjA71devLAfwOlQiH88lhJuBhkGbxx9fZbDE4NO5LTO5+OxCB14P93dbT+AKZ9P84ZgkG8GqRjeQ9ZUAh4MYhvXxs+e5fHwRBbWra32A5j0ePjHf9H1mST+2YWFisCDba+u8vV3tbWGNuT3jY32AxjXS06QFLgZKUH9aPct7O3RVFfXf+BlHj6kZG2tBq+j47tpGs5LoYKrNpGI9v74cfsDHNazg+/dvFl4sNzmprHz2x5g8l9LWMTuzsePli7bYkMBgqVMfb39l3CqpeXbm0g8XhF439xEgkGjOmN7GTOjA4XU2Be8zs6y4MFmnzzRpJLfXypjenrsK6Qnvd4SSQGxCyFtNbxiIb1+/74mpL1e+wrp7NISp1ElqZwuZZB2WQkPZqRyevz7Eg5zCc22qVxxMUGWMRL94sTfKnjYfd+dPq15261bpcWEq1fJvuWsoSEt/3W7tRZlNMolJylxWQEPJTGRP6lTpwz5YpSz3ryxcUE1nzcaSeieFTeArIKH3Fq8GSX9koJqc7O9C6owNL0lO5CKsZTfzS7bqTt3+LPxornxKu2Cz6Oj5IymUkTLCOB54iWAKOIaMRE7JXbS/zOMwYYhMQ9/gOLOnPxBZh8/dlhb06+Vs9B6FIi4cYmJInGgEyGIkbHgc8idkWHgHHRecVsTMU/mwuuY3tYcv3TJWW1NGJrdJY113WtkdxaJU84BqSK7rRFXdc/Dd+w5rbFeDHG8rc2IiQj2UmwQsY1iKFIxlKSg46AjARfnkGGISOZHO6JRnkNiHjzPsY92iGFZoultLNu6OtZs+3m4CCIZnxGpIjGvUsv2UAEUQ9NblrSUoNDDQP4KT+TH2/QWJT/eFgjwNaRnnGHI4x3NzRXZbQ89QBg0GsQ2Wo+SnZR1uFycYbBI3kdv2XEAiw35KqQMGkDoYaCeaDzi29jIuziuYYyVua1jANrFFECTpgCaNAXQpCmAJk0BNGkKoElTACsNUB39ZTFQAMMW/78xypQpU6ZMmbIjP9e+AkAlsBlIjsPOAAAAAElFTkSuQmCC" }), index.h("h2", { key: 'e4b224018cd85b9b8e7ae8025a16e15b1d7305ca', class: "green-text margin-b" }, "You don't have permission to access this application."), index.h("h3", { key: 'c6566424fa314d3ce884263321a74b268cb2f0f1', class: "green-text" }, "Please contact the administration."), (this.config.defaultLink.url && this.showUnauthorizedModal) ?
|
|
4189
4306
|
index.h("div", null, index.h("h4", { class: "gray-text" }, "You will be automatically redirected to the portal."), index.h("div", { id: "countdown" }, index.h("div", { id: "countdown-number" }), index.h("svg", null, index.h("circle", { r: "18", cx: "20", cy: "20" }))))
|
|
4190
4307
|
: index.h("div", null))));
|
|
4191
4308
|
}
|
|
4192
4309
|
get el() { return index.getElement(this); }
|
|
4193
4310
|
};
|
|
4194
|
-
DashButtonComponent.style =
|
|
4311
|
+
DashButtonComponent.style = dashButtonCss();
|
|
4195
4312
|
|
|
4196
4313
|
exports.dash_button = DashButtonComponent;
|
|
4197
|
-
|
|
4198
|
-
//# sourceMappingURL=dash-button.cjs.entry.js.map
|